ما هي البنية الأساسية كتعليمة برمجية؟

مكتمل

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

  • مدخل Azure
  • Azure CLI
  • Azure PowerShell
  • قوالب ARM (JSON وBicep)

أنت تبحث عن خيار قابل للتكرار، وعليك أن تقرر التكنولوجيا التي ستستخدمها لنشر بنية Azure الأساسية خاصتك.

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

تعريف البنية الأساسية بوصفها تعليمة برمجية

تصمم شركتك ألعاب جديدة لإطلاقها في السوق، وتتطلب معظم الألعاب الجديدة بعض التجميع بعد الشراء. ينشئ فريق التصميم في الشركة كتيبات إرشادية لتضمينها مع كل لعبة. كل دليل يقدم تفاصيل عن كيفية تجميع اللعبة على نحوٍ صحيح.

يمكنك التفكير في البنية الأساسية بوصفها تعليمة برمجية على أنها تشبه دليل التعليمات لبنيتك الأساسية. يوضح الدليل تفاصيل التكوين النهائي لمواردك وكيفية الوصول إلى حالة التكوين هذه.

البنية الأساسية بوصفها تعليمة برمجية هي عملية أتمتة تزويد بنيتك الأساسية. تستخدم لغة ترميز وصفيًا ونظام إصدار مشابه لما يُستخدَم للتعليمات البرمجية المصدر. عند إنشاء تطبيق، ينشئ التعليمات البرمجية المصدر النتيجة نفسها في كل مرة تُحوَّل فيها برمجيًا. بطريقة مماثلة، فإن البنية الأساسية مثل عمليات توزيع التعليمات البرمجية تلقائية ومتسقة وقابلة للتكرار. يمكن للبنية الأساسية بوصفها تعليمة برمجية أتمتة عمليات توزيع موارد البنية الأساسية خاصتك، مثل الشبكات الظاهرية، والأجهزة الظاهرية، والتطبيقات، والتخزين.

Infrastructure as code.

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

ما الغرض من استخدام البنية الأساسية بوصفها تعليمة برمجية؟

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

  • زيادة الثقة في عمليات التوزيع خاصتك.
  • إدارة بيئات متعددة.
  • فهم أفضل لموارد السحابة خاصتك.

زيادة الثقة

تتمثل إحدى ميزات استخدام البنية الأساسية بوصفها تعليمة برمجية في مستوى الثقة الذي تكتسبه في عمليات التوزيع خاصتك من التحسينات في الاتساق والأمان.

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

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

  • المسح التلقائي: يمكن فحص البنية الأساسية مثل تكوينات التعليمة البرمجية عن طريق الأدوات التلقائية التي يمكنها التحقق من الأخطاء في التعليمة البرمجية. يمكن للأدوات التلقائية أيضًا مراجعة التغييرات المقترحة لضمان اتباع ممارسات الأمان والأداء.

  • الإدارة السرية: تتطلب العديد من الحلول أسرارًا، مثل سلاسل الاتصال ومفاتيح التشفير وأسرار العميل والشهادات. في Azure، يعد Azure Key Vault الخدمة المستخدمة لتخزين هذه الأسرار بأمان. يمكن دمج العديد من البنية الأساسية باعتبارها أدوات التعليمات البرمجية مع Key Vault للوصول إلى هذه الأسرار بأمان عند التوزيع.

  • التحكم في الوصول: باستخدام البنية الأساسية مثل عمليات توزيع التعليمات البرمجية، لديك خيار استخدام الهويات المُدارة أو حسابات الخدمة لأتمتة تزويد الموارد. تضمن هذه العملية تعديل موارد السحابة بواسطة هذه الهويات فقط. كما أنه يساعد في منع التكوينات غير الصحيحة التي وُزعت في التشغيل. إذا لزم الأمر، يمكنك تجاوز هذه العملية باستخدام حساب وصول الطوارئ (يُسمى غالبًا حساب Break Glass) أو باستخدام ميزة Azure Active Directory Privileged Identity Management.

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

خذ بعين الاعتبار CLI Azure كمثال. ينشئ الأمر التالي مجموعة موارد Azure مُسماة storage-resource-group في منطقة شرق الولايات المتحدة الأمريكية:

az group create \
    --name storage-resource-group \
    --location eastus

إذا قمت بتشغيل هذا الأمر مرة ثانية، تتلقى نفس النتيجة بالضبط. لا تتلقى خطأ أو مجموعة موارد مكررة. هذا لأن أمر Azure CLI تم تصميمه ليكون مكررًا.

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

إدارة بيئات متعددة

تحتفظ العديد من المؤسسات ببيئات تطبيق متعددة. قد يكون لدى المطورين في شركة ألعابك إصدارات متعددة من التعليمة البرمجية للتطبيق مُدرجة في مستودع لإصدارها في بيئات مختلفة. قد تشمل البيئات التطوير والاختبار والتشغيل. تحتفظ بعض المؤسسات ببيئات تشغيل متعددة للتطبيقات الموزعة عالميًا. تحتفظ المؤسسات الأخرى، مثل بائعي البرامج المستقلين (ISVs)، على بيئات متعددة المستأجرين لعملائها.

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

  • تقديم بيئات جديدة: إحدى الميزات الرئيسية لحوسبة السحابة هي القدرة على التوسع. البنية الأساسية بوصفها تعليمة برمجية يمكن أن تساعدك على توسيع نطاق مثيلات تطبيقك المتعددة. يمكن أن تساعد هذه المثيلات أثناء أوقات التحميل المتزايد، أو يمكنك توزيعها على المستخدمين في مناطق أخرى من العالم. يمكن أن تكون هذه السرعة مفيدة أيضًا عند اختبار تطبيقك، مثل أثناء اختبار الاختراق، واختبار التحميل، واختبار الأخطاء. باستخدام قاعدة تعليمات برمجية محددة جيدًا، يمكنك تزويد هذه البيئات الجديدة ديناميكيًا بطريقة متسقة.

  • بيئات تشغيلية: هناك مشكلة شائعة تواجهها المؤسسات وهي التمايز بين البيئات التشغيلية والبيئات غير التشغيلية. عند تزويد الموارد يدويًا في بيئات منفصلة، فمن المحتمل ألا تتطابق التكوينات النهائية. على سبيل المثال، عندما توزع ميزة جديدة في بيئة غير تشغيلية تختلف عن بيئة التشغيل. من المحتمل ألا تعمل الميزة الجديدة على النحو المتوقع في بيئة التشغيل بسبب الاختلافات بين البيئتين. استخدام البنية الأساسية بوصفها تعليمة برمجية يمكن أن تساعد على تقليل هذه المشاكل. يمكنك استخدام ملفات التكوين نفسها لكل بيئة فضلًا عن تزويد معلمات إدخال مختلفة لتحقيق التفرد.

  • التعافي من الكوارث:في بعض الحالات، يمكن استخدام البنية الأساسية بوصفها تعليمة برمجية كجزء من خطة التعافي من الكوارث الخاصة بالمؤسسة. على سبيل المثال، قد تحتاج إلى إعادة إنشاء بيئتك في منطقة أخرى بسبب انقطاع الخدمة. باستخدام البنية الأساسية بوصفها تعليمة برمجية، يمكنك تزويد مثيل جديد سريعًا للفشل فيه بدلًا من توزيع كل شيء يدويًا وإعادة تكوينه.

فهم أفضل لموارد السحابة خاصتك

يمكن للبنية الأساسية بوصفها تعليمة برمجية مساعدتك على فهم حالة مواردك السحابية فهمًا أفضل:

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

  • الوثائق: يمكنك استخدام العديد من البنيات الأساسية بوصفها تكوينات للتعليمات البرمجية لإضافة بيانات تعريف، مثل التعليقات، التي تصف الغرض من التعليمات البرمجية في تكوينك. إذا كانت مؤسستك تتبع بالفعل عملية توثيق تعليمات برمجية، ففكر في اعتماد هذه الإجراءات نفسها باستخدام تعليمة البنية الأساسية البرمجية خاصتك.

  • نظام موحد: في كثير من الأحيان، عندما يعمل مطور على ميزة جديدة، يجب عليهم إجراء تغييرات على تعليمة التطبيق البرمجية وتعليمة البنية الأساسية البرمجية. باستخدام نظام مشترك، يمكن لمؤسستك فهم العلاقة بين تطبيقاتك وبنيتك الأساسية فهمًا أفضل.

  • فهم أفضل للبنية التحتية السحابية: عند استخدام بوابة Azure لتزويد الموارد، تُستخرج العديد من العمليات من العرض. يمكن أن تساعد البنية الأساسية بوصفها تعليمة برمجية على تقديم فهم أفضل لكيفية عمل Azure وكيفية استكشاف المشكلات التي قد تنشأ وإصلاحها. على سبيل المثال، عند إنشاء جهاز ظاهري باستخدام المدخل Azure، تُستخرج بعض الموارد التي أُنشئت من العرض. تُوزع الأقراص المُدارة وبطاقات واجهة الشبكة خلف الكواليس. عند توزيع الجهاز الظاهري نفسه باستخدام البنية الأساسية بوصفها تعليمة برمجية، يكون لديك تحكم كامل في جميع الموارد التي أُنشِئت.

التعليمة البرمجية الإلزامية مقابل التعليمة البرمجية التعريفية

يمكنك كتابة دليل إرشادات لتجميع الألعاب الجديدة بطرق مختلفة. عندما تؤتمت توزيع الخدمات والبنية الأساسية، يمكنك اتباع نهجين مختلفين: ⁧⁩النهج الإلزامي ⁧⁩⁧و⁩النهج التعريفي.⁧⁩

  • باستخدام التعليمات البرمجية الإلزامية، يمكنك تنفيذ سلسلة من الأوامر، بترتيب معين، للوصول إلى تكوين نهائي. تعرف هذه العملية ما يجب أن تحققه التعليمات البرمجية، وتحدد كيفية إنجاز المهمة. النهج الإلزامي مثل دليل التعليمات خطوة بخطوة.

  • باستخدام التعليمات البرمجية التعريفية، يمكنك تحديد تكوين النهائي فقط. لا تحدد التعليمات البرمجية كيفية إنجاز المهمة. الأسلوب التعريفي يشبه دليل تعليمات العرض المُفصَّل.

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

التعليمة البرمجية الإلزامية

في Azure، يُنفذ أسلوب التعليمات البرمجية الإلزامية برمجيًا باستخدام لغة برمجة نصية مثل Bash أو Azure PowerShell. تنفذ البرامج النصية سلسلة من الخطوات لإنشاء مواردك وتعديلها وحتى إزالتها.

إلقاء نظرة على المثال التالي الذي يستخدم واجهة سطر أوامر Azure لإنشاء مجموعة موارد وحساب تخزين:

#!/usr/bin/env bash
az group create \
    --name storage-resource-group \
    --location eastus

az storage account create \
    --name mystorageaccount \
    --resource-group storage-resource-group \
    --kind StorageV2 \
    --access-tier Hot \
    --https-only true

ينفذ المثال أمرين من واجهة سطر أوامر Azure. ينشئ الأمر الأول مجموعة موارد مُسماة storage-resource-group في منطقة شرق الولايات المتحدة. ينشئ الأمر الثاني حساب تخزين مُسمى mystorageaccount في storage-resource-group مجموعة الموارد التي أُنشئت في الأمر الأول. كما يقوم الأمر الثاني بتكوين خاصيتين لحساب التخزين، بما في ذلك نوع حساب التخزين وطبقة تخزينها.

يمكنك استخدام نهج إلزامي لأتمتة تزويد الموارد كاملةً، ولكن هذا الأسلوب له بعض العيوب. مع تطور تصميمك، يمكن أن تصبح البرامج النصية معقدة في إدارتها. قد تُحدث الأوامر أو تُهمل، الأمر الذي يتطلب مراجعة البرامج النصية الموجودة.

تعليمة برمجية تعريفية

في Azure، يُنفذ أسلوب التعليمات البرمجية التعريفية باستخدام القوالب. هناك أنواع عديدة من القوالب للاستخدام، بما في ذلك:

  • JSON
  • Bicep
  • Ansible، من RedHat
  • Terraform، من HashiCorp

ملاحظة

تركز هذه الوحدة على استخدام قوالب Bicep.

القِ نظرة على المثال التالي لقالب Bicep الذي يكوِّن حساب تخزين. يتطابق تكوين حساب التخزين مع مثال واجهة سطر أوامر Azure:

resource storageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'mystorageaccount'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
    supportsHttpsTrafficOnly: true
  }
}

يحدد قسم الموارد تكوين حساب التخزين. يحتوي هذا القسم على اسم حساب التخزين وموقعه وخواصه، بما في ذلك وحدة حفظ المخزون ونوع الحساب.

قد تلاحظ أن قالب Bicep لا يحدد كيفية نشر حساب التخزين. إنه يحدد فقط الشكل الذي يحتاجه حساب التخزين. تُترك الخطوات الفعلية التي تُنفذ خلف الكواليس لإنشاء حساب التخزين هذا أو لتحديثه لمطابقة المواصفات ليقررها Azure.