استخدام DevOps وCI/CD لنشر واجهات برمجة التطبيقات

ينطبق على: جميع مستويات إدارة واجهة برمجة التطبيقات

مع القيمة الاستراتيجية لواجهات برمجة التطبيقات في المؤسسة، أصبح اعتماد تقنيات التكامل المستمر (CI) والتوزيع (CD) لـ DevOps جانبًا مهمًا من تطوير واجهة برمجة التطبيقات. تتناول هذه المقالة القرارات التي ستحتاج إلى اتخاذها لاعتماد مبادئ DevOps لإدارة واجهات برمجة التطبيقات.

تتكون API DevOps من ثلاثة أجزاء:

رسم تخطيطي يوضح تدفق API DevOps.

تتم مناقشة كل جزء من مسار API DevOps أدناه.

تعريف واجهة المستخدم

يكتب مطور واجهة برمجة التطبيقات تعريف واجهة برمجة التطبيقات من خلال توفير مواصفات وإعدادات (مثل التسجيل والتشخيص وإعدادات الواجهة الخلفية) والنهج التي سيتم تطبيقها على واجهة برمجة التطبيقات. يوفر تعريف واجهة برمجة التطبيقات المعلومات المطلوبة لتوفير واجهة برمجة التطبيقات على خدمة Azure API Management. قد تستند المواصفات إلى مواصفات واجهة برمجة التطبيقات المستندة إلى المعايير (مثل WSDL أو OpenAPI أو GraphQL)، أو قد يتم تعريفها باستخدام واجهات برمجة تطبيقات Azure Resource Manager (ARM) (على سبيل المثال، قالب ARM يصف واجهة برمجة التطبيقات والعمليات). سيتغير تعريف واجهة برمجة التطبيقات بمرور الوقت ويجب اعتباره "التعليمات البرمجية المصدر". تأكد من تخزين تعريف واجهة برمجة التطبيقات ضمن التحكم في التعليمات البرمجية المصدر ومراجعة مناسبة قبل الاعتماد.

هناك العديد من الأدوات للمساعدة في إنتاج تعريف واجهة برمجة التطبيقات:

  • توفر مجموعة أدوات Azure APIOps سير عمل مبنيًا فوق نظام التحكم في التعليمات البرمجية المصدر git (مثل GitHub أو مستودعات Azure). يستخدم مستخرجا لإنتاج تعريف واجهة برمجة التطبيقات الذي يتم تطبيقه بعد ذلك على خدمة API Management الهدف بواسطة ناشر. يدعم APIOps واجهات برمجة تطبيقات REST وGraphQL في هذا الوقت.
  • تحول أداة dotnet-apim تعريف YAML جيد التكوين إلى قالب ARM للتوزيع لاحقًا. تركز الأداة على واجهات برمجة تطبيقات REST.
  • Terraform هو بديل لـ Azure Resource Manager لتكوين الموارد في Azure. يمكنك إنشاء تكوين Terraform (جنبًا إلى جنب مع النهج) لتنفيذ واجهة برمجة التطبيقات بنفس الطريقة التي يتم بها إنشاء قالب ARM.

يمكنك أيضًا استخدام الأدوات المستندة إلى IDE للمحررين مثل Visual Studio Code لإنتاج البيانات الاصطناعية اللازمة لتعريف واجهة برمجة التطبيقات. على سبيل المثال، هناك أكثر من 30 مكونًا إضافيًا لتحرير ملفات مواصفات OpenAPI على سوق Visual Studio Code. يمكنك أيضًا استخدام مولدات التعليمات البرمجية لإنشاء البيانات الاصطناعية. تتيح لك لغة CADL إنشاء كتل إنشاء عالية المستوى بسهولة ثم تحويلها برمجيًا إلى تنسيق تعريف واجهة برمجة تطبيقات قياسي مثل OpenAPI.

الموافقة على واجهة برمجة التطبيقات

بمجرد إنتاج تعريف واجهة برمجة التطبيقات، سيرسل المطور تعريف واجهة برمجة التطبيقات للمراجعة والموافقة. إذا كنت تستخدم نظام التحكم في التعليمات البرمجية المصدر المستند إلى git (مثل GitHub أو Azure Repos)، يمكن إجراء الإرسال عبر طلب السحب. يبلغ طلب السحب الآخرين بالتغييرات التي تم اقتراحها على تعريف واجهة برمجة التطبيقات. بمجرد تأكيد بوابات الموافقة، سيقوم الموافق بدمج طلب السحب في المستودع الرئيسي للإشارة إلى أنه يمكن توزيع تعريف واجهة برمجة التطبيقات في الإنتاج. تمكن عملية طلب السحب المطور من معالجة أي مشكلات تم العثور عليها أثناء عملية الموافقة.

يسمح كل من GitHub وAzure Repos بتكوين مسارات الموافقة التي يتم تشغيلها عند إرسال طلب سحب. يمكنك تكوين مسارات الموافقة لتشغيل أدوات مثل:

  • أداة تحليل مواصفات واجهة برمجة التطبيقات مثل Spectral للتأكد من أن التعريف يفي بمعايير واجهة برمجة التطبيقات التي تتطلبها المؤسسة.
  • مقاطعة الكشف عن التغيير باستخدام أدوات مثل openapi-diff.
  • أدوات التدقيق والتقييم الأمنية. يحتفظ OWASP بقائمة من الأدوات لفحص الأمان.
  • أطر عمل اختبار واجهة برمجة التطبيقات التلقائية.

إشعار

يجب أن تتوافق واجهات برمجة تطبيقات Azure مع مجموعة صارمة من الإرشادات التي يمكنك استخدامها كنقطة بداية لإرشادات واجهة برمجة التطبيقات الخاصة بك. هناك تكوين Spectral لفرض الإرشادات.

بمجرد تشغيل الأدوات التلقائية، يتم مراجعة تعريف واجهة برمجة التطبيقات من قبل العين البشرية. لن تلتقط الأدوات جميع المشاكل. يضمن المراجع البشري أن تعريف واجهة برمجة التطبيقات يفي بالمعايير التنظيمية لواجهات برمجة التطبيقات، بما في ذلك الالتزام بإرشادات الأمان والخصوصية والاتساق.

منشور واجهة برمجة التطبيقات

سيتم نشر تعريف واجهة برمجة التطبيقات إلى خدمة APIM من خلال مسار إصدار. تعتمد الأدوات المستخدمة لنشر تعريف واجهة برمجة التطبيقات على الأداة المستخدمة لإنتاج تعريف واجهة برمجة التطبيقات:

  • إذا كنت تستخدم مجموعة أدوات Azure APIOps، فإن مجموعة الأدوات تتضمن ناشرا يكتب تعريف واجهة برمجة التطبيقات إلى الخدمة الهدف.
  • إذا كنت تستخدم dotnet-apim، يتم تمثيل تعريف واجهة برمجة التطبيقات كقالب ARM. تتوفر المهام لـ Azure Pipelines وGitHub Actions لتوزيع قالب ARM.
  • إذا كنت تستخدم Terraform، فستوزع أدوات CLI تعريف واجهة برمجة التطبيقات على الخدمة الخاصة بك. هناك مهام متوفرة ل Azure Pipelines وGitHub Actions.

هل يمكنني استخدام التحكم في التعليمات البرمجية المصدر الأخرى وأنظمة CI/CD؟

نعم. تعمل العملية الموضحة مع أي نظام تحكم في التعليمات البرمجية المصدر (على الرغم من أن عمليات واجهة برمجة التطبيقات تتطلب أن يستند نظام التحكم في التعليمات البرمجية المصدر إلى git). وبالمثل، يمكنك استخدام أي نظام أساسي CI/CD طالما يمكن تشغيله بواسطة تسجيل الدخول وتشغيل أدوات سطر الأوامر التي تتصل بـ Azure.

أفضل الممارسات

لا يوجد معيار صناعي لإعداد مسار DevOps لنشر واجهات برمجة التطبيقات، ولن تعمل أي من الأدوات المذكورة في جميع الحالات. ومع ذلك، نرى أن معظم الحالات تتم تغطيتها باستخدام مجموعة من الأدوات والخدمات التالية:

  • يخزن Azure Repos تعريفات واجهة برمجة التطبيقات في مستودع git.
  • تقوم Azure Pipelines بتشغيل الموافقة التلقائية على واجهة برمجة التطبيقات وعمليات نشر واجهة برمجة التطبيقات.
  • توفر مجموعة أدوات Azure APIOps أدوات ومهام سير عمل لنشر واجهات برمجة التطبيقات.

لقد شهدنا أكبر نجاح في عمليات توزيع العملاء، ونوصي بالممارسات التالية:

  • إعداد إما GitHub أو Azure Repos لنظام التحكم في التعليمات البرمجية المصدر. سيحدد هذا الاختيار اختيارك لمشغل المسار أيضًا. يمكن لـ GitHub استخدام Azure Pipelines أو GitHub Actions، بينما يجب أن يستخدم Azure Repos Azure Pipelines.
  • أعد خدمة Azure API Management لكل مطور واجهة برمجة تطبيقات حتى يتمكنوا من تطوير تعريفات واجهة برمجة التطبيقات جنبا إلى جنب مع خدمة واجهة برمجة التطبيقات. استخدم الاستهلاك أو SKU المطور عند إنشاء الخدمة.
  • استخدم أجزاء النهج لتقليل النهج الجديد الذي يحتاج المطورون إلى كتابته لكل واجهة برمجة تطبيقات.
  • استخدم القيم والخلفيات المسماة للتأكد من أن النهج عامة ويمكن تطبيقها على أي مثيل APIM.
  • استخدم مجموعة أدوات Azure APIOps لاستخراج تعريف واجهة برمجة تطبيقات عامل من خدمة المطور.
  • أعد عملية الموافقة على واجهة برمجة التطبيقات التي تعمل على كل طلب سحب. يجب أن تتضمن عملية الموافقة على واجهة برمجة التطبيقات مقاطعة الكشف عن التغيير، والتحليل، واختبار واجهة برمجة التطبيقات التلقائي.
  • استخدم ناشر مجموعة أدوات Azure APIOps لنشر واجهة برمجة التطبيقات إلى خدمة APIM.

راجع عمليات توزيع واجهة برمجة التطبيقات التلقائية باستخدام APIOps في مركز هندسة Azure للحصول على مزيد من التفاصيل حول كيفية تكوين وتشغيل مسار توزيع CI/CD باستخدام APIOps.

المراجع