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

مكتمل

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

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

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

تغطي هذه الوحدة لماذا يمكن أن تساعدك البنية الأساسية كتعلم برمجي في نشر البنية الأساسية ل Azure بطريقة تلقائية وقابلة للتكرار.

تستخدم أوامر Azure CLI لتوضيح المفاهيم. تغطي هذه الوحدة استخدام الأوامر لنشر الموارد في وحدات نمطية أخرى من مسار تعلم Terraform.

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

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

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

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

رسم تخطيطي يوضح البنية الأساسية كعملية تعليمة برمجية باستخدام مستودع التعليمات البرمجية المصدر مع وحدة نمطية تنشر موارد Azure.

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

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

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

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

زيادة الثقة

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

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

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

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

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

  • التحكم في الوصول: باستخدام البنية الأساسية مثل عمليات توزيع التعليمات البرمجية، لديك خيار استخدام الهويات المُدارة أو حسابات الخدمة لأتمتة تزويد الموارد. يمنع حظر وصول المستخدم التكوينات غير الصحيحة التي تم نشرها في الإنتاج. إذا لزم الأمر، يمكنك تجاوز هذه العملية باستخدام حساب وصول في حالات الطوارئ (غالبا ما يسمى حساب كسر الزجاج) أو باستخدام ميزة معرف Microsoft Entra إدارة الهويات المتميزة.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

يوضح هذا المثال أمرين من أوامر Azure CLI التي تنشئ مجموعة موارد وحساب تخزين.

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

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

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

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

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

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

  • Terraform، من HashiCorp
  • Bicep
  • أرم جيسون

إشعار

تركز هذه الوحدة على استخدام وحدات Terraform النمطية.

ألق نظرة على المثال التالي لوحدة Terraform التي تقوم بتكوين حساب تخزين. يتطابق تكوين حساب التخزين مع مثال Azure CLI.

resource "azurerm_resource_group" "example" {
  name     = "storage-resource-group"
  location = "eastus"
}

resource "azurerm_storage_account" "example" {
  name                      = "mystorageaccount"
  location                  = azurerm_resource_group.example.location
  resource_group_name       = azurerm_resource_group.example.name
  sku                       = "Standard"
  account_replication_type  = "GRS"
  account_kind              = "StorageV2"
  access_tier               = "Hot"
  enable_https_traffic_only = true
}

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

قد تلاحظ أن الوحدة النمطية Terraform لا تحدد كيفية نشر حساب التخزين. إنه يحدد فقط الشكل الذي يحتاجه حساب التخزين. يتم ترك الخطوات التي تم اتخاذها لإنشاء حساب التخزين هذا أو تحديثه ل Terraform CLI وموفر Azurerm Terraform لاتخاذ قرار.