AWS SAA 11 - Automating Infrastructure

🎯 Module 11: Automating Infrastructure — أتمتة البنية التحتية السحابية

تعد أتمتة البنية التحتية واحدة من أهم الممارسات الحديثة في عالم الحوسبة السحابية، حيث تمكنك من نشر وإدارة الموارد بسرعة وثبات دون تدخل يدوي. في هذه الوحدة ستتعرف على مفهوم Infrastructure as Code (IaC) وكيفية استخدام AWS CloudFormation لنمذجة وإنشاء مجموعات كاملة من الموارد السحابية. كما ستستكشف أدوات مثل AWS Quick Starts وAmazon Q Developer التي تسرع عملية بناء القوالب وتقليل الأخطاء البشرية، مع تطبيق مبادئ AWS Well-Architected Framework على استراتيجيات الأتمتة.

1️⃣ Process Without Automation — العمليات بدون أتمتة

📖 كيف تبدو العمليات اليدوية في بيئة سحابية؟
تبدأ العديد من المؤسسات باستخدام AWS بإنشاء S3 bucket أو تشغيل EC2 instance يدوياً ثم تضيف الموارد تدريجياً مع توسع استخدامها. لكن مع مرور الوقت يصبح إدارة هذه الموارد وصيانتها يدوياً تحدياً كبيراً.
العمليات اليدوية عرضة للأخطاء وغير موثوقة ولا تدعم الأعمال المرنة، وغالباً ما تُستنزف الموارد البشرية الماهرة في مهام تكوين متكررة بدلاً من أنشطة ذات قيمة أعلى.
📋 أسئلة يجب طرحها قبل الاختيار بين البناء اليدوي والأتمتة:
  • أين تريد وضع جهودك — في التصميم أم في التنفيذ؟ وما مخاطر التنفيذ اليدوي؟
  • كيف ستحدث خوادم الإنتاج مثالياً؟ وكيف ستنشر التحديثات عبر مناطق جغرافية متعددة؟
  • كيف ستدير التراجع إلى الإصدار السابق عند حدوث أعطال؟
  • كيف ستصحح أخطاء النشر قبل وصولها للعميل؟
  • هل من الواقعي القيام بكل هذه المهام من خلال التهيئة اليدوية؟
على سبيل المثال شركة ناشئة بدأت بتشغيل خادم EC2 واحد يدوياً لموقعها الإلكتروني.
بعد نجاح الموقع تضاعف عدد الزوار واحتاجت الشركة إلى 10 خوادم إضافية وقواعد بيانات وشبكات.
بدلاً من قضاء أسابيع في تكوين كل شيء يدوياً تستخدم CloudFormation لإنشاء البيئة بأكملها بنقرة واحدة وبنفس الجودة في كل مرة.

2️⃣ Risks from Manual Processes — مخاطر العمليات اليدوية

📖 ما هي المخاطر التي تسببها العمليات اليدوية؟
تخلق العمليات اليدوية مخاطر حقيقية على تطبيقاتك وبيئتك السحابية. عندما تقوم بإنشاء الموارد وإضافة الميزات يدوياً فإن ذلك لا يدعم التكرار على نطاق واسع، كما يفتقر إلى التحكم في الإصدارات وسجلات التدقيق، ويؤدي إلى تكوينات غير متناسقة.
📋 المخاطر الأربعة الرئيسية:
  • لا تدعم التكرار على نطاق واسع: إذا كنت مسؤولاً عن تطبيق مؤسسي كبير قد لا يكون هناك عدد كافٍ من الأشخاص لإضافة الميزات يدوياً عند الحاجة.
  • تفتقر للتحكم في الإصدارات: عند إنشاء البيئة يدوياً لا يمكنك التراجع بسهولة إلى إصدار سابق في حالات الطوارئ.
  • تفتقر لسجلات التدقيق: من الخطير منح أي شخص في المؤسسة القدرة على التحكم اليدوي في البيئات دون تتبع التغييرات.
  • تكوينات غير متسقة: الاتساق ضروري لتقليل المخاطر وتساعد الأتمتة في الحفاظ عليه عبر جميع الموارد.
🔑 الـ Stack: هو مجموعة من موارد AWS يمكنك إدارتها كوحدة واحدة. باستخدام الأتمتة يمكنك إنشاء وتحديث وحذف stacks بأكملها بنقرة واحدة.
على سبيل المثال فريق تقني يدير تطبيقاً بخمس خوادم EC2 مكونة يدوياً.
عند اكتشاف ثغرة أمنية يحتاج الفريق لتحديث كل خادم على حدة مما يستغرق ساعات وقد ينسى أحدهم خادماً.
باستخدام CloudFormation يتم تحديث القالب مرة واحدة وتنطبق التغييرات على جميع الخوادم تلقائياً.

3️⃣ Benefits of Automation — فوائد الأتمتة

📖 ما الذي تكسبه المؤسسات من الأتمتة؟
لتقليل مخاطر العمليات اليدوية تعتمد بيئات التشغيل الحديثة على الأتمتة الكاملة. تقضي الأتمتة على التدخل اليدوي في بيئات الإنتاج وتركز على إعداد البنية التحتية وتكوينها ونشرها ودعمها. باستخدام الأتمتة يمكنك إعداد بيئات قابلة للتكرار بسرعة وبشكل موحد.
📋 الفوائد الرئيسية:
  • تقليل التدخل البشري والوصول اليدوي إلى بيئات الإنتاج.
  • تمكين إنشاء بيئات قابلة للتكرار بتكوين موحد وقياسي.
  • تحسين الإنتاجية عبر أتمتة اختبار البرمجيات وإصدارها وتكوين الآلات وتصحيح الأخطاء.
  • أتمتة الاختبارات والقياس التلقائي (Auto Scaling) للاستجابة لطلب العملاء وإنشاء بيئات أكثر مرونة.
على سبيل المثال متجر إلكتروني يشهد ارتفاعاً مفاجئاً في الطلب خلال موسم العطلات.
بدون أتمتة يضطر فريق العمليات لمراقبة الخوادم يدوياً وتشغيل خوادم إضافية عند الازدحام.
مع الأتمتة يرصد Amazon CloudWatch ارتفاع الاستخدام ويشغل Auto Scaling خوادم إضافية تلقائياً ثم يغلقها عند انخفاض الطلب مما يوفر التكاليف.
مثل مطعم يبدأ بتلقي الطلبات عبر الهاتف والورقة والقلم ثم يزداد عدد الزبائن ويتحول إلى نظام إلكتروني يدير الطلبات تلقائياً.
بدون الأتمتة يضيع الوقت وتكثر الأخطاء ومعها يصبح كل شيء منضبطاً وسريعاً وقابلاً للتوسع لاستقبال آلاف الزبائن يومياً.
خلاصة: أسباب الأتمتة
  • العمليات اليدوية عرضة للأخطاء وغير موثوقة ولا تدعم التوسع.
  • المخاطر الرئيسية: عدم قابلية التكرار، غياب التحكم بالإصدارات، غياب سجلات التدقيق، وعدم الاتساق.
  • الأتمتة تقلل التدخل البشري وتتيح بيئات قابلة للتكرار وتحسن الإنتاجية وتؤتمت الاختبار والقياس.

📖 جدول المصطلحات

المصطلح (English)الترجمةالمفهوم
Automationالأتمتةاستخدام الأدوات والخدمات لأداء المهام دون تدخل بشري.
Stackالمكدسمجموعة موارد AWS يمكن إدارتها كوحدة واحدة.
Manual processعملية يدويةإجراء يتطلب تدخلاً بشرياً مباشراً لتكوين الموارد أو إدارتها.
Auto Scalingالقياس التلقائيخدمة تضبط عدد الموارد تلقائياً بناءً على الطلب.
Amazon CloudWatchمراقبة السحابةخدمة مراقبة ورصد للموارد والتطبيقات على AWS.
Audit trailسجل التدقيقسجل زمني لتتبع التغييرات والوصول إلى الموارد.
Rollbackالتراجعالعودة إلى إصدار سابق من البيئة أو التطبيق.

1️⃣ IaC Overview — نظرة عامة على البنية التحتية ككود

📖 ما هو Infrastructure as Code (IaC)؟
Infrastructure as Code هي عملية كتابة قالب (template) يعرّف الموارد السحابية ويديرها ويكون مفهوماً لكل من البشر والآلات. باستخدام IaC يمكنك استنساخ البنية التحتية وإعادة نشرها وإعادة استخدامها بشكل موثوق ومتسق. تستخدم المؤسسات IaC للتحكم في التكاليف وتقليل المخاطر والاستجابة بسرعة للفرص التجارية الجديدة.
📋 خصائص IaC:
  • يعرّف الحالة المطلوبة للبنية التحتية دون الحاجة لسرد جميع الخطوات للوصول إليها.
  • يمكن استنساخ البيئات ونشرها وإعادة استخدامها بثبات واتساق.
  • يقلل الوقت والجهد مقارنة بالإدارة اليدوية خاصة عند إدارة التطبيقات على نطاق واسع.
على سبيل المثال فريق تطوير يحتاج إلى ثلاث بيئات منفصلة: تطوير واختبار وإنتاج.
بدلاً من تكوين كل بيئة يدوياً (مع احتمالية الاختلافات) يكتب الفريق قالب CloudFormation واحد.
يستخدم نفس القالب لإنشاء البيئات الثلاث مما يضمن أن سلوك التطبيق في بيئة الاختبار يطابق تماماً سلوكه في الإنتاج.

2️⃣ IaC Benefits — فوائد البنية التحتية ككود

📖 ما الفوائد العملية لاستخدام IaC؟
تكمن الفوائد الرئيسية في قابلية إعادة الاستخدام والتكرار والاستدامة. باستخدام قالب واحد (أو مجموعة قوالب) يمكنك بناء نفس البيئات المعقدة مراراً وتكراراً. عند حذف الـ stack يتم حذف جميع موارده المرتبطة تلقائياً.
📋 الفوائد بالتفصيل:
  • نشر سريع للبيئات المعقدة: قالب واحد يبني بيئات متطابقة بسرعة وثبات.
  • نشر التغييرات بثبات: تعديل القالب ونفس التغيير ينتشر لكل الـ stacks.
  • تنظيف تلقائي: حذف الـ stack يحذف جميع الموارد التي أنشأها.
  • قابلية إعادة الاستخدام والتكرار والاستدامة: أعمدة IaC الثلاثة.
على سبيل المثال قالب CloudFormation ينشئ Stack 1 (تطوير) وStack 2 (اختبار) وStack 3 (إنتاج).
بيئة التطوير مرنة للبرمجة والاختبار، بيئة الاختبار تحاكي الإنتاج، وبيئة الإنتاج تخدم المستخدمين النهائيين.
عند تحديث إعدادات أمان قاعدة البيانات في قالب واحد تنطبق على البيئات الثلاث بضمان أن التعديل يطبق باتساق تام.

3️⃣ AWS CloudFormation — تشكيل السحابة من AWS

📖 ما هي خدمة AWS CloudFormation؟
CloudFormation هي خدمة IaC تتيح لك نمذجة وإنشاء وإدارة مجموعة من موارد AWS باستخدام قالب. تسمى مجموعة الموارد CloudFormation stack. لا توجد رسوم إضافية على استخدام CloudFormation نفسها — أنت تدفع فقط مقابل الموارد التي تنشئها. يمكنك إنشاء الـ stacks وتحديثها وحذفها بطريقة منظمة وقابلة للتنبؤ مع تمكين التحكم في إصدارات نشر AWS.
📋 مزايا CloudFormation:
  • يمكنك التعامل مع البنية التحتية ككود: كتابته بأي محرر نصوص وإيداعه في نظام تحكم بالإصدارات مثل GitHub.
  • مراجعة القوالب مع أعضاء الفريق قبل النشر.
  • التراجع: يمكنك حذف stack والإصدار من إصدار أقدم من القالب لاستعادة حالة سابقة.
🔑 نموذج العمل: تكتب قالباً يصف ما يجب أن تكون عليه البنية التحتية ← تقدمه لـ CloudFormation ← الخدمة تنشئ الموارد في حسابك تلقائياً ← الـ stack يحتفظ بالسيطرة لتحديث الموارد أو اكتشاف الانحراف (Drift detection) أو حذفها.
على سبيل المثال مهندس معماري يريد نشر بنية كاملة تشمل VPC وخوادم EC2 وقاعدة بيانات RDS وموازن تحميل وشبكات فرعية.
بدلاً من إنشاء كل خدمة يدوياً من لوحة التحكم (مهمة تستغرق أياماً) يكتب قالب CloudFormation خلال ساعتين.
ينشر القالب وينشئ كل شيء بدقائق وبنفس الجودة في كل مرة.

4️⃣ AWS IaC Services That Use CloudFormation — خدمات IaC التي تستخدم CloudFormation

📖 ما هي خدمات AWS الأخرى التي تبني على CloudFormation؟
تقدم AWS عدة خدمات تساعد في إنشاء البنية التحتية برمجياً، وكلها تستخدم CloudFormation خلف الكواليس لنشر الموارد. يعتمد اختيارك على مستوى الراحة والتحكم الذي تحتاجه ومهارات فريقك.
📋 الخدمات الرئيسية:
  • AWS Elastic Beanstalk: خدمة مُدارة بالكامل تشغّل البيئة تلقائياً بعد رفع كود التطبيق. تدير تلقائياً سعة التجهيز وموازنة الأحمال والقياس ومراقبة الصحة.
  • AWS Quick Starts: بنى مرجعية مؤتمتة مبنية على قوالب CloudFormation من مهندسي حلول AWS وشركائها.
  • AWS Serverless Application Model (AWS SAM): امتداد لـ CloudFormation بصيغة مختصرة لبناء البنى بدون خوادم.
  • AWS Amplify: إطار تطوير لتطبيقات الويب والجوال الكاملة يتطلب كوداً أقل ومعرفة أقل بتكاملات الواجهة الخلفية.
  • AWS Cloud Development Kit (AWS CDK): إطار تطوير مفتوح المصدر لنمذجة الموارد بلغات برمجة مألوفة ثم نشرها عبر CloudFormation.
💡 مقارنة بين خدمات IaC:
الخدمةالاستخدام الأمثلمستوى التجريد
Elastic Beanstalkرفع التطبيق بسرعة دون القلق بشأن البنية التحتيةعالٍ — تدير الخدمة التفاصيل تلقائياً
CloudFormationتحكم كامل بكل مورد وعلاقاتهمنخفض — تحدد كل مورد وخصائصه
AWS CDKتعريف البنية التحتية بلغة برمجة مألوفة (Python, TypeScript, إلخ)متوسط — يجمع بين التحكم وسهولة البرمجة
AWS SAMتطبيقات بدون خوادم مع صيغة مختصرةمتوسط — مختصر للتطبيقات الـ Serverless
على سبيل المريد مطور يريد إنشاء تطبيق ويب بسيط بسرعة يختار Elastic Beanstalk لأنه يرفع الكود وتُدار كل التفاصيل تلقائياً.
مهندس معماري يحتاج تحكماً دقيقاً في كل مورد يختار CloudFormation.
فريق يستخدم Python بشكل أساسي قد يختار AWS CDK لكتابة البنية التحتية بنفس لغة التطبيق.
مثل بناء منزل: يمكنك إما شراء منزل جاهز (مثل Elastic Beanstalk) أو استئجار مهندس معماري يخطط كل تفصيلة (مثل CloudFormation) أو استخدام مجموعة أدوات بناء متطورة تمنحك مرونة التصميم مع سهولة الاستخدام (مثل AWS CDK).
خلاصة: البنية التحتية ككود
  • IaC هو تعريف الموارد السحابية في ملف قالب مفهوم للبشر والآلات.
  • الفوائد الرئيسية: نشر سريع، تناسق التهيئة، تنظيف تلقائي، إعادة استخدام موثوقة.
  • CloudFormation هي خدمة IaC أساسية في AWS تدعم إنشاء وتحديث وحذف الـ stacks.
  • خدمات مثل Elastic Beanstalk وAWS CDK وAWS SAM تبني على CloudFormation لتقديم مستويات مختلفة من التجريد.

📖 جدول المصطلحات

المصطلح (English)الترجمةالمفهوم
Infrastructure as Code (IaC)البنية التحتية ككودعملية إدارة الموارد السحابية عبر قوالب قابلة للقراءة آلياً وبشرياً.
CloudFormationتشكيل السحابةخدمة AWS لنمذجة وإنشاء وإدارة الموارد السحابية عبر القوالب.
Templateالقالبملف JSON أو YAML يصف موارد AWS المراد إنشاؤها.
AWS CDKحزمة تطوير السحابةإطار مفتوح المصدر لتعريف البنية التحتية بلغات برمجة مألوفة.
Elastic Beanstalkالإطار المرنخدمة مُدارة تشغّل التطبيقات تلقائياً دون الحاجة لإدارة البنية التحتية.
AWS SAMنموذج التطبيقات بدون خوادمإطار مبسط لبناء البنى الـ Serverless على CloudFormation.
CloudFormation Stackمكدس CloudFormationمجموعة موارد AWS تُدار كوحدة واحدة عبر CloudFormation.

1️⃣ How CloudFormation Works — كيف يعمل CloudFormation

📖 ما هي خطوات عمل CloudFormation؟
تبدأ العملية بتعريف موارد AWS التي تريد إنشاءها في قالب (template). يمكنك كتابة القالب من الصفر أو استخدام قالب جاهز. ثم ترفع القالب إلى خدمة CloudFormation (أو تخزنه في Amazon S3 وتشير إليه). بعد ذلك تشغّل عملية إنشاء الـ stack فتنشأ الموارد عبر خدمات AWS المتعددة. يحتفظ الـ stack بالسيطرة على الموارد المنشأة ويمكنك لاحقاً تحديثها أو اكتشاف الانحراف أو حذفها.
📋 الخطوات الأربع:
  • تعريف الموارد في قالب CloudFormation (من الصفر أو باستخدام قالب جاهز).
  • رفع القالب إلى CloudFormation أو الإشارة إليه من Amazon S3.
  • تشغيل أمر إنشاء الـ stack — تنشأ الموارد عبر خدمات متعددة كبيئة تشغيل متكاملة.
  • الـ stack يحتفظ بالسيطرة للتحديث أو كشف الانحراف أو الحذف.
🔑 تغطية شاملة: يدعم CloudFormation مجموعة واسعة من خدمات AWS. وفي الحالات التي لا تتوفر فيها ميزة محددة يمكن استدعاء دالة AWS Lambda أثناء بناء الـ stack للوصول الكامل لواجهات برمجة الخدمات.
على سبيل المثال مهندس يريد إنشاء بنية تشمل EC2 instances وموازن تحميل ومجموعة Auto Scaling ومنطقة Route 53.
يكتب قالباً واحداً يصف هذه الموارد ← يرفعه لـ CloudFormation ← تشغّل الخدمة إنشاء الـ stack ← خلال دقائق تعمل البيئة بكاملها.
إذا احتاج لإضافة ميزة غير مدعومة مباشرة يضيف دالة Lambda تستدعي AWS SDK لتغطية أي واجهة برمجة.

2️⃣ CloudFormation Template Syntax — صيغة قوالب CloudFormation

📖 ما هي اللغات المدعومة لكتابة القوالب؟
يمكن كتابة قوالب CloudFormation بإحدى صيغتين: JSON أو YAML. كل صيغة لها مزاياها ويعتمد الاختيار على حالة الاستخدام وخبرة فريقك. يوصى بمعاملة القوالب ككود مصدر وتخزينها في مستودع أكواد.
📋 مقارنة بين JSON و YAML:
  • YAML: محسّن للقراءة البشرية، أقل كثافة في الكتابة، يدعم التعليقات المدمجة (comments)، تصحيح الأخطاء أسهل.
  • JSON: أكثر انتشاراً بين الأنظمة الأخرى (مثل APIs)، أقل تعقيداً في التوليد والتحليل البرمجي.
// YAML example
AWSTemplateFormatVersion: 2010-09-09
Resources:
  awsexamplebucket1:
    Type: AWS::S3::Bucket

// JSON example
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "awsexamplebucket1": {
      "Type": "AWS::S3::Bucket"
    }
  }
}
على سبيل المثال فريق يستخدم YAML لأنه يفضل سهولة القراءة وإضافة التعليقات.
فريق آخر يعمل بكثافة مع APIs خارجية قد يفضل JSON لتوافقه مع الأنظمة الأخرى.
الاختيار يعتمد على احتياجات الفريق وليس هناك صيغة "أفضل" بشكل مطلق.

3️⃣ Anatomy of a CloudFormation Template — تشريح قالب CloudFormation

📖 ما هي الأقسام المختلفة لقالب CloudFormation؟
يتكون القالب من عدة أقسام اختيارية باستثناء قسم Resources وهو القسم الوحيد الإلزامي. يوصى بترتيب الأقسام بترتيب منطقي لأن القيم في قسم قد تعتمد على قيم من قسم سابق.
📋 أقسام القالب بالترتيب المقترح:
  • AWSTemplateFormatVersion: إصدار صيغة القالب (يختلف عن إصدار الـ API).
  • Description: نص يصف القالب — يجب أن يأتي بعد قسم الإصدار مباشرة.
  • Metadata: كائنات توفر معلومات إضافية عن القالب.
  • Parameters: قيم تُمرر للقالب وقت التشغيل (عند إنشاء أو تحديث الـ stack).
  • Rules: تتحقق من صحة معلمة أو مجموعة معلمات.
  • Mappings: تعيين مفاتيح وقيم مرتبطة (مثل خرائط مناطق AWS).
  • Conditions: شروط تحدد متى يتم إنشاء مورد أو تكوينه.
  • Transform: تحويلات للقالب مثل استخدام AWS SAM.
  • Resources: (إلزامي) الموارد المراد إنشاؤها وخصائصها.
  • Outputs: قيم تُرجع بعد إنشاء الـ stack (مثل معرف المورد أو عنوان IP).
على سبيل المثال قالب ينشئ EC2 instance يستخدم Parameters لأخذ نوع المثيل (InstanceType) كمدخل من المستخدم وقت التشغيل.
يستخدم Mappings لاختيار صورة AMI المناسبة حسب المنطقة.
يستخدم Outputs لإرجاع الـ InstanceId وPublicIP بعد الإنشاء.

4️⃣ Resources Template: Create an EC2 Instance — مثال: إنشاء مثيل EC2

📖 كيف يبدو قالب CloudFormation لإنشاء EC2؟
يوضح هذا المثال القسمين الأكثر استخداماً: Resources (إلزامي) يحدد الموارد المراد إنشاؤها وخصائصها، وOutputs يحدد القيم المعادة بعد إنشاء الـ stack.
{
  "Resources": {
    "Ec2Instance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "ImageId": "ami-9d23aeea",
        "InstanceType": "m3.medium",
        "KeyName": { "Ref": "KeyPair" }
      }
    }
  },
  "Outputs": {
    "InstanceId": {
      "Description": "InstanceId",
      "Value": { "Ref": "Ec2Instance" }
    }
  }
}
🔑 دالة Ref: تستخدم للإشارة إلى معلمة (parameter) أو مورد (resource) آخر في نفس القالب. في المثال أعلاه تشير Ref إلى معامل KeyPair (لقيمة تُمرر وقت التشغيل) وإلى Ec2Instance (لإرجاع معرف المورد).
على سبيل المثال يحدد القالب أعلاه نوع المثيل m3.medium وصورة AMI محددة ومفتاح KeyPair يُمرر كمعامل.
بعد إنشاء الـ stack يمكنك رؤية InstanceId في تفاصيل الـ stack في وحدة تحكم CloudFormation أو عبر AWS CLI.

5️⃣ AWS CloudFormation Designer — مصمم CloudFormation

📖 ما هو AWS CloudFormation Designer؟
Designer هو أداة رسومية لإنشاء وعرض وتعديل قوالب CloudFormation. يمكنك رسم موارد القالب باستخدام واجهة السحب والإفلات (drag-and-drop) وتعديل تفاصيلها عبر محرر JSON وYAML المدمج. يساعدك على رؤية العلاقات بين موارد القالب بسرعة وتعديل القوالب بسهولة.
📋 مكونات Designer:
  • شريط الأدوات: وصول سريع لأوامر فتح وحفظ القوالب والتراجع وإعادة وإنشاء الـ stack والتحقق من صحة القالب.
  • لوحة أنواع الموارد: تسرد جميع موارد القالب مصنفة حسب خدمة AWS — تُضاف بسحبها إلى اللوحة الرئيسية.
  • لوحة الرسم (Canvas): تعرض موارد القالب كرسم بياني مع إمكانية إضافة وإزالة الموارد وإنشاء العلاقات.
  • محرر JSON/YAML المدمج: لتحرير القالب نصياً مع مزامنة فورية مع الرسم البياني.
  • أزرار العرض: شاشة كاملة للرسم أو للمحرر أو مقسم بينهما.
على سبيل المثال مهندس معماري جديد في CloudFormation يريد فهم كيفية ترابط الموارد في قالب معقد.
يستخدم Designer لفتح القالب فيرى رسماً بيانياً يوضح أن EC2 مرتبط بـ Security Group وكلاهما داخل VPC.
يمكنه تعديل العلاقات بسحب خط بين موردين أو إضافة مورد جديد من اللوحة الجانبية.

6️⃣ Using Conditions — استخدام الشروط

📖 كيف تستخدم الشروط في CloudFormation لإنشاء بيئات مختلفة من قالب واحد؟
يمكنك استخدام نفس القالب لإنشاء بيئة الإنتاج وبيئة التطوير. يضمن هذا استخدام نفس إصدارات التطبيقات ونفس إصدار Java ونفس إصدار قاعدة البيانات في كلتا البيئتين. لكن باستخدام Conditions يمكن أن تعمل بيئة الإنتاج عبر منطقتي توفر (Availability Zones) بينما تعمل بيئة التطوير في منطقة توفر واحدة فقط.
📋 الفوائد:
  • قالب واحد ينتج بيئات مختلفة في الحجم والنطاق لكنها متطابقة في التهيئة.
  • بيئات اختبار متعددة للاختبار الوظيفي واختبار قبول المستخدم واختبار الأحمال دون المساس ببيانات بعضها البعض.
  • الاتساق: إذا تصرفت التطبيقات بشكل جيد في بيئة الاختبار فستتصرف بنفس الطريقة في الإنتاج.
على سبيل المثال شركة تستخدم قالب CloudFormation واحد لإنشاء:
- بيئة إنتاج تعبر منطقتي توفر لضمان التوفر العالي.
- بيئة تطوير تعبر منطقة توفر واحدة لتوفير التكاليف.
- بيئة اختبار أداء تعبر منطقتي توفر بمقياس أصغر.
الشرط (Condition) يتحقق من معامل البيئة (EnvironmentType) ويقرر عدد المناطق بناءً عليه.

7️⃣ CloudFormation Change Sets — مجموعات تغيير CloudFormation

📖 ما هي Change Sets في CloudFormation؟
Change Sets تتيح لك معاينة التغييرات قبل تطبيقها. يمكنك رؤية التعديلات التي سينفذها CloudFormation بالضبط والتحقق من توافقها مع توقعاتك قبل الموافقة على التحديث.
📋 خطوات العمل:
  • إنشاء Change Set بتقديم التغييرات للـ stack الذي تريد تحديثه.
  • عرض Change Set لرؤية إعدادات الـ stack والموارد التي ستتغير.
  • تشغيل Change Set لتطبيق التحديثات.
🔑 خاصية DeletionPolicy: يمكنك استخدام هذه الخاصية للحفاظ على مورد أو عمل نسخة احتياطية منه عند حذف أو تحديث الـ stack. بدونها يحذف CloudFormation المورد تلقائياً.
على سبيل المثال قبل تحديث قاعدة بيانات RDS في بيئة الإنتاج ينشئ المهندس Change Set ليرى أن التحديث سيغير نوع قاعدة البيانات من db.m5.large إلى db.r5.large مع فترة توقف قصيرة.
بعد المراجعة والموافقة يشغّل التحديث ويضع DeletionPolicy: Retain على قاعدة البيانات القديمة كنسخة احتياطية.

8️⃣ Drift Detection — كشف الانحراف

📖 ما هو Drift Detection ولماذا تحتاجه؟
تخيّل أن بيئة تطبيق أنشئت عبر CloudFormation stack. ثم قرر شخص ما تعديل إعدادات البيئة المنشأة يدوياً — مثلاً فتح منفذ TCP جديد في Security Group عبر وحدة تحكم EC2. هذا التعديل خارج سياق CloudFormation — هنا يأتي دور Drift Detection ليكشف أن البيئة المنشورة لم تعد تطابق النموذج المعرف في القالب.
📋 تفاصيل Drift Detection:
  • يمكن تشغيله على الـ stack من قائمة Stack actions في وحدة التحكم.
  • يظهر ما إذا كان الـ stack قد انحرف عن التهيئة المتوقعة في القالب.
  • يعيد معلومات مفصلة عن حالة الانحراف لكل مورد يدعم الكشف.
  • عند حذف stack به انحراف قد يفشل الحذف بسبب تبعيات موارد غير محلولة — قد تحتاج لحلها يدوياً.
على سبيل المثال فريق أمن يكتشف فجأة أن منفذاً جديداً مفتوح على خادم الإنتاج مما يشكل ثغرة أمنية.
يشغّل Drift Detection فيكتشف أن Security Group قد انحرف عن القالب الأصلي.
يقوم الفريق بتصحيح الانحراف (إما بإعادة تطبيق القالب أو تعديل القالب ليشمل التغيير المصرح به).

9️⃣ Scoping and Organizing Templates — تنظيم القوالب

📖 كيف تنظم قوالب CloudFormation مع نمو استخدامك؟
مع زيادة استخدام CloudFormation من المهم وضع استراتيجية تنظيمية للقوالب. فكر في تجميع الموارد في قوالب مشابهة لكيفية تنظيم تطبيق مؤسسي كبير إلى أجزاء مختلفة. ضع المكونات الأكثر ترابطاً في نفس القوالب، وفكر في استخدام Nested stacks (stacks متداخلة) لإعادة استخدام الأنماط الشائعة.
💡 تصنيف القوالب حسب المجال:
الفئةنوع القالبأمثلة الموارد
الخدمات الأماميةواجهات الويب والتطبيقات ولوحات التحليلCloudFront, ALB, واجهات المستخدم
الخدمات الخلفيةالبحث والمدفوعات والمراجعات والتوصياتLambda, DynamoDB, SQS
الخدمات المشتركةقواعد بيانات CRM والمراقبة والتنبيهاتRDS, CloudWatch, SNS
الشبكةالشبكات الخاصة والبوابات والأجهزة الافتراضيةVPC, IGW, NAT
الأمانسياسات IAM والمستخدمين والمجموعات والأدوارIAM, KMS, WAF
على سبيل المثال مؤسسة تستخدم 30 قالب CloudFormation مقسمة إلى:
- قالب شبكة واحد ينشئ VPC والشبكات الفرعية والبوابات.
- قالب أمان ينشئ أدوار IAM وسياسات التشفير.
- قوالب منفصلة لكل تطبيق (أمامي وخلفي) تشير إلى موارد الشبكة والأمان عبر Nested stacks أو معاملات الدخل.
مثل مكتبة تنظم الكتب حسب الأقسام: كتب الهندسة في رف، كتب الطب في رف آخر، وكتب الأدب في رف ثالث.
هكذا تنظيم القوالب حسب المجال (شبكة، أمان، خدمات أمامية) يسهل الصيانة وإعادة الاستخدام.
ومثل استخدام الصناديق المتداخلة (مثل دمى الماتريوشكا) الـ Nested stacks تسمح ببناء قوالب معقدة من مكونات أصغر قابلة لإعادة الاستخدام.
خلاصة: التخصيص باستخدام CloudFormation
  • يعمل CloudFormation بأربع خطوات: تعريف الموارد في قالب ← رفعه ← إنشاء الـ stack ← إدارة الموارد.
  • القوالب تكتب بـ JSON أو YAML وتحتوي أقساماً أهمها Resources (إلزامي).
  • يمكن استخدام Conditions لإنشاء بيئات مختلفة من قالب واحد وChange Sets لمعاينة التغييرات.
  • Drift Detection يكشف الانحرافات عن القالب الأصلي.
  • تنظيم القوالب حسب المجال (شبكة، أمان، خدمات) يسهل الصيانة وإعادة الاستخدام.

📖 جدول المصطلحات

المصطلح (English)الترجمةالمفهوم
Template sectionقسم القالبجزء من قالب CloudFormation يخدم غرضاً محدداً (مثل Parameters, Resources).
Designerالمصممأداة رسومية لإنشاء وتحرير قوالب CloudFormation بالسحب والإفلات.
Conditionالشرطتعبير يحدد متى يتم إنشاء أو تكوين مورد معين في القالب.
Change Setمجموعة التغييرمعاينة للتغييرات التي سيطبقها CloudFormation قبل تنفيذها.
Drift Detectionكشف الانحرافميزة تكتشف إذا انحرفت الموارد المنشأة عن تعريف القالب الأصلي.
Nested stackمكدس متداخلstack يتم إنشاؤه كجزء من stack آخر لإعادة استخدام الأنماط الشائعة.
DeletionPolicyسياسة الحذفخاصة تحدد ما يحدث للمورد عند حذف الـ stack (حذف أو حفظ أو نسخ احتياطي).

1️⃣ AWS Quick Starts Overview — نظرة عامة على AWS Quick Starts

📖 ما هي AWS Quick Starts؟
AWS Quick Starts هي قوالب CloudFormation جاهزة لحلول كاملة، بناها مهندسو حلول AWS وشركاؤها. تعكس أفضل ممارسات AWS للأمان والتوفر العالي ويمكن نشرها في حسابك خلال أقل من ساعة — غالباً في دقائق فقط. تساعدك على بناء بيئات اختبار أو إنتاج متقنة في خطوات قليلة.
📋 خصائص Quick Starts:
  • نشر معياري ذهبي (gold-standard deployments) مبني على أفضل ممارسات AWS.
  • يمكن استخدامها لإنشاء بنى كاملة أو للتجربة بأساليب نشر جديدة.
  • يمكن استخدامها كأساس لبنيتك الخاصة — تقترض أجزاء منها وتضمّنها في قوالبك.
على سبيل المثال شركة تريد نشر خادم WordPress على AWS بأفضل الممارسات.
بدلاً of كتابة قالب CloudFormation من الصفر تبحث في AWS Quick Starts وتجد حلاً جاهزاً لـ WordPress.
تنشره في دقائق — ثم تخصصه حسب احتياجاتها.

2️⃣ How to Use AWS Quick Starts — كيفية استخدام AWS Quick Starts

📖 ما هو هيكل Quick Start وكيف تستخدمه؟
يتكون كل Quick Start من قالب CloudFormation ودليل نشر (deployment guide). يقدم الدليل تفاصيل حول خيارات النشر وكيفية تهيئة النشر ليتوافق مع احتياجاتك، بالإضافة إلى معلومات حول اعتبارات الأمان والتكاليف المقدرة. يمكنك تخصيص النشر ثم إنشاء الـ stack — وينتهي النشر في دقائق أو ساعات حسب الموارد المطلوبة.
📋 الفرق بين Quick Starts و AWS Marketplace AMIs:
  • Quick Starts: حلول معيارية قابلة للتخصيص قد تستخدم أو لا تستخدم EC2.
  • AWS Marketplace AMIs: حلول من بائع واحد تعمل على EC2 instances.
على سبيل المثال يحتاج فريق لمعالجة الصور تلقائياً في السحابة.
يجد Quick Start لـ "Serverless Image Handler" الذي ينشئ بنية كاملة تشمل CloudFront وAPI Gateway وLambda وS3 وAmazon Rekognition.
ينشر الحل في دقائق ويبدأ فوراً في معالجة الصور مع اكتشاف المحتوى غير الملائم والقص الذكي.

3️⃣ AWS Quick Starts Example — مثال: Serverless Image Handler

📖 كيف يعمل مثال معالجة الصور بدون خوادم عبر Quick Start؟
هذا الحل ينشئ بنية بدون خوادم (serverless) لمعالجة الصور بتكلفة فعالة مع توصيل ديناميكي للمحتوى وتعديل ذكي للصور باستخدام Amazon Rekognition.
📋 مكونات البنية:
  • توزيع CloudFront يوفر طبقة تخزين مؤقت (caching layer) لتقليل تكلفة معالجة الصور وزمن وصول الطلبات اللاحقة.
  • Amazon API Gateway يوفر نقاط نهاية ويطلق دوال Lambda.
  • دالة Lambda تسحب الصورة من S3 bucket الموجود وتستخدم برنامج معالجة صور مفتوح المصدر لإرجاع نسخة معدلة.
  • S3 bucket منفصل لتخزين السجلات.
  • إذا فعّلت ميزة توقيع عنوان URL تسترجع الدالة القيمة السرية من AWS Secrets Manager للتحقق من التوقيع.
  • Amazon Rekognition يحلل الصورة باستخدام ميزات القطع الذكي (smart crop) واعتدال المحتوى (content moderation).
على سبيل المريد موقع تجارة إلكترونية يرفع المستخدمون صور منتجاتهم.
يحتاج الموقع لقص الصور تلقائياً وضغطها واكتشاف الصور غير اللائقة.
ينشر Quick Start لـ "Serverless Image Handler" ← خلال دقائق تعمل البنية بالكامل ← كل صورة تُرفع تُعالج وتُخزن وتُفحص تلقائياً.
خلاصة: AWS Quick Starts
  • قوالب CloudFormation جاهزة لحلول كاملة مبنية من قبل خبراء AWS.
  • تتكون من قالب CloudFormation ودليل نشر يشرح خيارات التهيئة والتكاليف والأمان.
  • يمكن استخدامها كنماذج للتعلّم أو كأساس لبناء حلول مخصصة.

📖 جدول المصطلحات

المصطلح (English)الترجمةالمفهوم
AWS Quick Startالبدء السريع من AWSقالب مرجعي جاهز لنشر حلول كاملة بأفضل ممارسات AWS.
Deployment guideدليل النشروثيقة تشرح خيارات نشر Quick Start واعتبارات الأمان والتكاليف.
AWS Marketplace AMIصورة آلة من سوق AWSحلول بائع واحد تعمل على EC2 ومتوفرة في سوق AWS.
Reference deploymentنشر مرجعيبنية نموذجية يمكن تخصيصها واستخدامها كأساس للحلول.

1️⃣ Challenges of Writing IaC — تحديات كتابة البنية التحتية ككود

📖 ما هي التحديات التي تواجه المطورين عند كتابة IaC؟
كتابة الكود قد تكون صعبة خاصة للمبتدئين. حتى المحترفون يواجهون تحديات مثل الأخطاء البشرية، اختلاف مستويات المهارة، حجم القوالب وتعقيدها، والثغرات الأمنية.
📋 التحديات الأربعة:
  • الخطأ البشري (Human error): الأخطاء تحدث حتى في المهام المألوفة وقد يصعب العثور عليها خاصة عندما تكون الإجراءات صحيحة ولكن ليس لتحقيق أهداف البرمجة.
  • اختلاف مستويات المهارة (Differing skill levels): المبرمجون الجدد قد يختارون كوداً أكثر تعقيداً من اللازم. الهدف هو إيجاد حل عملي وليس كتابة كود معقد.
  • حجم القوالب وتعقيدها (Size and complexity of templates): حتى بنية ثلاثية الطبقات أساسية تصبح معقدة بسرعة عند كتابة قالب يصف كل الموارد بالتفصيل.
  • الثغرات الأمنية (Security vulnerabilities): التركيز على كود خالٍ من الأخطاء بدلاً من التحقق من أمانه قد يؤدي لثغرات غير مقصودة.
على سبيل المثال مطور جديد يكتب قالب CloudFormation لإنشاء S3 bucket ويتركه عاماً للعامة.
هذا خطأ أمني شائع لدى المبتدئين — يركزون على جعل القالب يعمل وينسى تكوين إعدادات الأمان.
Amazon Q Developer يمكنه اكتشاف مثل هذه الثغرات واقتراح التصحيح فوراً.

2️⃣ Amazon Q Developer — مساعد التطوير بالذكاء الاصطناعي

📖 ما هو Amazon Q Developer؟
Amazon Q Developer هو مساعد برمجي مدعوم بالذكاء الاصطناعي التوليدي (Generative AI) مصمم للمطورين ومتخصصي IT. دُرّب على سنوات من أمثلة AWS عالية الجودة ووثائقها، ويمكن تدريبه أيضاً على كود شركتك وأنظمتها. يوفر اقتراحات كود في الوقت الفعلي، ويولّد كوداً جديداً، ويفحص كودك بحثاً عن الثغرات الأمنية، ويساعد في ترقية الكود وتحسينه.
📋 ما يمكنك فعله بـ Amazon Q Developer:
  • الدردشة حول الكود والحصول على إرشادات سياقية.
  • تلقي اقتراحات كود في المحرر (IDE) بلغات برمجة متعددة.
  • توليد اختبارات الوحدات (unit tests) تلقائياً.
  • فحص الكود بحثاً عن ثغرات أمنية والحصول على اقتراحات للإصلاح.
  • تحويل الكود وتحديثه إلى إصدارات أحدث.
على سبيل المثال مطور يصف تطبيقه بلغة طبيعية: "أنشئ دالة Lambda تعالج تحميل الصور إلى S3" ← Amazon Q Developer يولّد كود الدالة مع جميع الإعدادات اللازمة.
المطور لا يحتاج لكتابة كل سطر بنفسه مما يسرع التطوير بشكل كبير ويقلل الأخطاء.

3️⃣ Amazon Q Developer Across the SDLC — Amazon Q Developer عبر دورة حياة تطوير البرمجيات

📖 كيف يدعم Amazon Q Developer كل مرحلة من مراحل تطوير البرمجيات؟
يدعم Amazon Q Developer المطورين عبر جميع مراحل دورة حياة تطوير البرمجيات (SDLC) بدءاً من التخطيط وصولاً إلى الصيانة والتحسين.
💡 الدعم عبر مراحل SDLC:
المرحلةالإجراءات
التخطيط (Plan)طرح أسئلة والحصول على إرشادات سياقية وموثقة — شرح الكود بمحادثة تفاعلية.
الإنشاء (Create)اقتراحات كود مباشرة في الـ IDE بعدة لغات — تنفيذ الميزات عبر التعليقات أو الأوامر النصية — محادثة في الـ IDE.
الاختبار والأمان (Test & Secure)توليد اختبارات وحدات — فحص الكود للثغرات الأمنية واقتراح الإصلاحات.
التشغيل (Operate)تشخيص الأخطاء — استكشاف اتصالات الشبكة عبر VPC Reachability Analyzer.
الصيانة والتحديث (Maintain & Modernize)تحديث الكود تلقائياً عبر Amazon Q Developer Agent for code transformation.
على سبيل المثال مطور في مرحلة التخطيط يسأل Amazon Q Developer: "ما أفضل طريقة لتخزين جلسات المستخدمين في تطبيق Serverless؟"
يحصل على شرح مع أمثلة كود لاستخدام Amazon DynamoDB مع Lambda.
في مرحلة الإنشاء يكتب تعليقاً "// create DynamoDB table for user sessions" ويقترح Amazon Q الكود المناسب.

4️⃣ Example: Using Amazon Q Developer with CloudFormation — مثال: استخدام Amazon Q مع CloudFormation

📖 كيف يساعد Amazon Q Developer في كتابة قوالب CloudFormation؟
عند تعديل قالب CloudFormation يمكنك استخدام Amazon Q Developer لكتابة أو تعديل أو حذف الكود. يولد Amazon Q اقتراحات بصيغة YAML أو JSON تتناسب بسلاسة مع قالبك الحالي. يساعد أيضاً في كتابة دوال Lambda داخل الـ CloudFormation stack عند تفعيله في محرر Lambda.
📋 خطوات الاستخدام:
  • يكتب المطور بداية المورد المطلوب داخل ملف YAML.
  • يقترح Amazon Q Developer إكمال الكود.
  • يقبل المطور الاقتراح فيُضاف الكود تلقائياً إلى القالب.
على سبيل المثال مهندس يكتب قالب CloudFormation ويبدأ بكتابة:
MyS3Bucket:
يقترح Amazon Q Developer فوراً:
Type: AWS::S3::Bucket
Properties:
BucketName: my-unique-bucket-name

يقبل المهندس الاقتراح ويستمر في كتابة باقي القالب بسرعة.
مثل وجود زميل مطور خبير يجلس بجانبك ويقرأ ما تكتب ويقترح الإكمال تلقائياً — هذا ما يفعله Amazon Q Developer.
وكما يستخدم الخطاط الجديد قالباً للحروف ليكتب بخط جميل فإن المطور الجديد يستخدم Amazon Q لتسريع تعلمه وكتابة كود أفضل.
خلاصة: التخصيص باستخدام Amazon Q Developer
  • كتابة IaC تواجه تحديات: خطأ بشري، اختلاف المهارات، تعقيد القوالب، ثغرات أمنية.
  • Amazon Q Developer هو مساعد AI يولّد ويقترح ويفحص الكود في الوقت الفعلي.
  • يدعم جميع مراحل SDLC من التخطيط إلى الصيانة، ويساعد في كتابة قوالب CloudFormation ودوال Lambda.

📖 جدول المصطلحات

المصطلح (English)الترجمةالمفهوم
Amazon Q Developerمطور Amazon Qمساعد برمجي بالذكاء الاصطناعي التوليدي من AWS.
Generative AIالذكاء الاصطناعي التوليديتقنية تنتج محتوى جديداً (كود، نصوص، صور) بناءً على تدريبها على بيانات سابقة.
SDLCدورة حياة تطوير البرمجياتالمراحل المتتابعة لتطوير البرمجيات من التخطيط إلى الصيانة.
IDEبيئة التطوير المتكاملةتطبيق برمجي يوفّر أدوات متكاملة للمطورين لكتابة واختبار الكود.
Code recommendationاقتراح الكودتوليد أجزاء من الكود تلقائياً بناءً على السياق الحالي.
Security vulnerabilityثغرة أمنيةضعف في الكود يمكن استغلاله لخرق أمان النظام.

1️⃣ Prepare — Design for Operations — الإعداد — التصميم للتشغيل

📖 كيف تطبق مبادئ Operational Excellence على الأتمتة؟
تعد أتمتة العمليات ممارسة أساسية ضمن ركيزة التميز التشغيلي (Operational Excellence). تعلّمت في هذه الوحدة أن الأتمتة باستخدام IaC تحسن تدفق التطوير وتحافظ على الاتساق عند نشر التغييرات في الإنتاج. في AWS يمكنك رؤية عبء العمل بأكمله (التطبيقات والبنية التحتية والسياسات والحوكمة والعمليات) ككود.
📋 أفضل الممارسات:
  • تنفيذ العمليات ككود (Perform operations as code): طبق نفس الانضباط الهندسي الذي تستخدمه لكود التطبيق على بيئتك بالكامل. يمكنك برمجة إجراءات التشغيل وأتمتة تشغيلها استجابة للأحداث.
  • إجراء تغييرات متكررة وصغيرة وقابلة للعكس (Make frequent, small, reversible changes): صمم عبء العمل لتمكين التحديثات المنتظمة للمكونات. التغييرات الصغيرة التي يمكن عكسها تساعد في تصحيح الأخطاء بشكل أسرع وتقليل المخاطر.
  • الأتمتة الكاملة للتكامل والنشر (Fully automate integration and deployment): استخدم أدوات الأتمتة لتسليم الكود ونقله إلى الإنتاج بأقل تدخل بشري.
على سبيل المثال فريق يستخدم AWS CodePipeline وCodeBuild وCodeDeploy لأتمتة دورة حياة التطوير بالكامل.
كل تغيير في الكود يُختبر تلقائياً ← يُنشر في بيئة اختبار ← بعد الموافقة يُنشر في الإنتاج.
إذا فشل التحديث تتم استعادة الإصدار السابق تلقائياً — كل هذا بدون تدخل يدوي.

2️⃣ Security — Automate Security Best Practices — الأمان — أتمتة أفضل ممارسات الأمان

📖 كيف تؤتمت أفضل ممارسات الأمان في AWS؟
تصف ركيزة الأمان (Security pillar) كيفية استخدام تقنيات السحابة لحماية البيانات والأنظمة والأصول بطريقة تحسن وضعك الأمني. يمكنك أتمتة ممارسات الأمان على مستويات متعددة. آليات الأمان البرمجية المؤتمتة تحسن قدرتك على التوسع بأمان وبسرعة وبتكلفة فعالة. ساعدك هذا في إنشاء بنى آمنة تتضمن ضوابط تُعرّف وتُدار ككود في قوالب محكومة بالإصدارات.
📋 أفضل الممارسات:
  • أتمتة تحديد الموارد وتصنيفها لتطبيق الضوابط الصحيحة.
  • استخدام الأتمتة بدلاً من الوصول البشري المباشر يقلل خطر الخطأ البشري والتعرض للثغرات.
  • عند نشر قوالب CloudFormation تأكد من مراعاة الأمان في كل خطوة.
على سبيل المثال قالب CloudFormation ينشئ S3 bucket مع إعدادات افتراضية تمنع الوصول العام.
يتضمن القالب أيضاً قواعد IAM تمنح أقل صلاحية ممكنة (least privilege) لكل خدمة.
إذا حاول أحدهم تعديل إعدادات الأمان لاحقاً عبر لوحة التحكم يكتشف Drift Detection الانحراف ويُعلم فريق الأمان.

3️⃣ Change Management — Implement Change — إدارة التغيير — تنفيذ التغيير

📖 كيف تدير التغيير في بيئات الإنتاج بموثوقية؟
تتعلق ركيزة الموثوقية (Reliability pillar) بقدرة النظام على أداء وظيفته بشكل صحيح ومتسق. إجراء تغييرات على أنظمة الإنتاج هو أحد أكبر مجالات المخاطر للعديد من المؤسسات. تعلّمت في هذه الوحدة أن استخدام IaC يمنحك القدرة على نشر التغييرات بالأتمتة وتقليل فرص الخطأ البشري.
📋 أفضل الممارسات:
  • نشر التغييرات بالأتمتة (Deploy changes with automation): تجنب الأساليب اليدوية — استخدم الأتمتة حيثما أمكن للاختبار والنشر وإضافة أو إزالة السعة وترحيل البيانات.
  • استخدام الأتمتة عند الحصول على الموارد أو توسعتها (Use automation when obtaining or scaling resources): استخدم الخدمات المُدارة مثل Amazon S3 وCloudFront وAWS Auto Scaling وLambda وDynamoDB لأتمتة عملية استبدال الموارد المعطلة أو توسيع نطاق عبء العمل.
على سبيل المثال فريق يستخدم CloudFormation لتحديث قالب التطبيق.
بدلاً من إيقاف الخدمة يدوياً وتحديث كل خادم على حدة يعدّلون قالب CloudFormation ← يشغّلون تحديث الـ stack ← تنطبق التغييرات على جميع الموارد بترتيب محدد وباتساق تام ← إذا حدث خطأ يمكن التراجع بسهولة باستخدام إصدار سابق من القالب.

4️⃣ Optimize Over Time — Automating Operations — التحسين مع الوقت — أتمتة العمليات

📖 كيف تقلل التكاليف عبر أتمتة العمليات؟
تحسين التكلفة (Cost Optimization) هو عملية مستمرة من التحسين طوال دورة حياة عبء العمل. أتمتة العمليات تقلل الوقت والجهد المبذولين في المهام الإدارية والنشر والعمليات الأخرى. ابدأ بتحديد أولويات العمليات بناءً على الجهد المطلوب من خلال النظر في إجمالي تكلفة العمليات في السحابة.
📋 أفضل الممارسات:
  • قم بأتمتة العمليات التشغيلية لتقليل التكلفة وزيادة العائد على الاستثمار.
  • انظر إلى التكلفة الإجمالية للإجراءات البشرية (total cost of human actions) بعامل تكلفة العمليات والإدارة.
  • أعط الأولوية لأتمتة المهام الإدارية المتكررة وعالية القيمة والتي تنطوي على مخاطر عالية للأخطاء البشرية.
  • حرّر موارد البنية التحتية من المهام التشغيلية اليدوية لاستخدامها في مهام ذات قيمة أعلى والابتكار.
على سبيل المثال فريق عمليات يقضي 10 ساعات أسبوعياً في تطبيق تصحيحات أمان يدوياً على 20 خادماً.
يقومون بأتمتة هذه العملية باستخدام AWS Systems Manager وCloudFormation.
بعد الأتمتة تستغرق نفس العملية 5 دقائق — يوفر الفريق 9 ساعات أسبوعياً للتركيز على تحسين التطبيقات وتطوير ميزات جديدة.
🔑 نظرة شاملة: تطبق مبادئ AWS Well-Architected Framework على الأتمتة عبر جميع الركائز الست: التميز التشغيلي (كود العمليات)، الأمان (أتمتة الأمان)، الموثوقية (إدارة التغيير)، الأداء (البنية ككود)، تحسين التكلفة (أتمتة العمليات)، والاستدامة (تقليل الهدر).
مثل قائد أوركسترا يدرب كل عازف على حدة لكنه في النهاية يؤتمت الأداء عبر النوتة الموسيقية — الجميع يعزفون نفس اللحن بدقة.
ومثل الطاهي الرئيسي الذي يكتب وصفات دقيقة ← مساعدوه يطبقونها بنفس الطريقة في كل مرة — لا مجال للخطأ أو الاجتهاد الشخصي.
خلاصة: تطبيق Well-Architected على الأتمتة
  • التميز التشغيلي: نفذ العمليات ككود، اجعل التغييرات صغيرة ومتكررة وقابلة للعكس، وأتمت التكامل والنشر بالكامل.
  • الأمان: أتمت أفضل ممارسات الأمان باستخدام ضوابط مُدارة ككود في قوالب محكومة بالإصدارات.
  • الموثوقية: انشر التغييرات بالأتمتة واستخدم الأتمتة عند الحصول على الموارد أو توسعتها.
  • تحسين التكلفة: أتمت العمليات التشغيلية لتقليل الجهد البشري والتركيز على المهام عالية القيمة.

📖 جدول المصطلحات

المصطلح (English)الترجمةالمفهوم
Operational Excellenceالتميز التشغيليركيزة تركز على تشغيل ومراقبة الأنظمة وتحسين العمليات باستمرار.
Operations as codeالعمليات ككودتطبيق مبادئ هندسة البرمجيات على إجراءات التشغيل والبنية التحتية.
Reversible changesتغييرات قابلة للعكستحديثات يمكن التراجع عنها بسهولة في حال عدم نجاحها.
CI/CDالتكامل والنشر المستمرانممارسة أتمتة بناء واختبار ونشر التطبيقات بشكل مستمر.
Least privilegeأقل صلاحية ممكنةمبدأ أمني يمنح المستخدمين والخدمات الحد الأدنى من الصلاحيات اللازمة فقط.
Cost Optimizationتحسين التكلفةركيزة تركز على تحقيق أقصى قيمة بأقل تكلفة ممكنة.
Driftالانحرافحيث تختلف الموارد المنشأة فعلياً عن تعريفها في قالب CloudFormation.

1️⃣ The Evolving Café Architecture: Version 7 — تطور بنية المقهى: الإصدار 7

📖 ما هو الإصدار 7 من بنية المقهى؟
يستمر نشاط المقهى في الازدياد. سلمى وخالد أصبحا صديقين لزبائن المقهى من مستشاري AWS. ليلى، مهندسة حلول AWS، حددت حاجة المقهى الإلكتروني للتوسع. يتطلب التوسع خوادم إضافية لتشغيل تطبيق الطلب الإلكتروني لكن حجم الشبكة الفرعية الحالي صغير جداً ولا يدعم هذا النمو — لذلك يحتاجون لإعادة تصميم جوانب من الشبكة التي يعمل عليها التطبيق. اكتشفت ليلى أيضاً ثغرة: منفذ TCP المستخدم لإدارة خادم التطبيق متاح للإنترنت. نصحتهم بإعداد bastion host لتقليل الوصول العام للخادم.
💡 تطور بنية المقهى عبر الإصدارات:
الإصدارسبب التحديث التجاريالتحديث المعماري
V1إنشاء موقع ثابت لمشروع صغيراستضافة الموقع على Amazon S3
V2إضافة طلبات إلكترونيةنشر تطبيق الويب وقاعدة البيانات على EC2
V3تقليل جهد صيانة قاعدة البيانات وتأمينهافصل طبقات الويب وقاعدة البيانات. نقل قاعدة البيانات إلى Amazon RDS على شبكة فرعية خاصة.
V4تعزيز أمان تطبيق الويباستخدام ميزات Amazon VPC لتهيئة وتأمين الشبكات الفرعية العامة والخاصة.
V5إنشاء آليات وصول منفصلة حسب الدورإضافة مجموعات IAM وربط سياسات الموارد — إضافة مستخدمين IAM حسب الدور.
V6ضمان قدرة الموقع على التعامل مع الزيادة المتوقعة في الحركةإضافة موازن تحميل — تطبيق القياس التلقائي على EC2 — توزيع الحوسبة وقواعد البيانات عبر منطقتي توفر.
V7نشر الموقع بطريقة قابلة للتكراراستخدام AWS CloudFormation لأتمتة نشر البنية التحتية.
🔑 الهدف الرئيسي للإصدار 7: جعل نشر البنية التحتية قابلاً للتكرار باستخدام CloudFormation — بحيث يمكن إعادة إنشاء البيئة بالكامل في أي وقت وبنفس الجودة.
على سبيل المثال في الإصدار 6 كان المقهى يعمل عبر منطقتي توفر مع موازن تحميل وتوسع تلقائي لكن كل شيء كان مكوناً يدوياً.
في الإصدار 7 أصبح كل شيء معرفاً في قالب CloudFormation ← يمكن نسخ البنية إلى منطقة أخرى بنقرة واحدة ← إذا تلفت البيئة تعاد إنشاؤها تلقائياً من القالب.

2️⃣ Café Deployment Lab Tasks — مهام معمل نشر المقهى

📖 ما هي المهام التي ستؤديها في معمل نشر المقهى؟
في هذا المعمل ستقوم بنشر طبقة شبكة VPC باستخدام قالب CloudFormation، ثم نشر طبقة التطبيق باستخدام قالب آخر يشير إلى طبقة الشبكة. ستستخدم Git لاستدعاء AWS CodePipeline وإنشاء أو تحديث الـ stacks من القوالب المخزنة في مستودع الأكواد. ستستخدم أيضاً CloudFormation لبناء بنى مختلفة بناءً على متغيرات البيئة (conditions).
📋 مهام المعمل:
  • نشر طبقة شبكة VPC باستخدام قالب AWS CloudFormation.
  • نشر طبقة تطبيق باستخدام قالب CloudFormation آخر يشير إلى طبقة الشبكة.
  • استخدام Git لاستدعاء AWS CodePipeline وإنشاء أو تحديث الـ stacks من القوالب المخزنة في مستودع الأكواد.
  • استخدام AWS CloudFormation لبناء بنى مختلفة بناءً على متغيرات البيئة (Conditions).
على سبيل المثال يبدأ الطالب بقالب CloudFormation لطبقة الشبكة ← ينشئ VPC وشبكات فرعية عامة وخاصة ← ثم قالب طبقة التطبيق يشير إلى معرفات الـ VPC الناتجة.
يستخدم Git لدفع القوالب إلى المستودع ← CodePipeline يكتشف التغيير وينشر الـ stack تلقائياً في منطقة Oregon وOhio.
البيئة في كل منطقة متطابقة تماماً — هذا هو هدف الأتمتة.
مثل وصفة طعام مكتوبة بدقة — أي شخص يمكنه تطبيقها والحصول على نفس النتيجة في أي مطبخ.
هذا ما يفعله CloudFormation للمقهى — يكتب وصفة البنية التحتية ← أي مطبخ (منطقة AWS) ينتج نفس البيئة بنفس الجودة.
خلاصة: معملي المقهى — أتمتة نشر البنية التحتية
  • الإصدار 7 من بنية المقهى يركز على قابلية التكرار عبر CloudFormation.
  • المعمل يشمل نشر طبقة شبكة وطبقة تطبيق باستخدام قوالب منفصلة.
  • يستخدم Git وCodePipeline لأتمتة النشر عبر مناطق متعددة.
  • يستخدم Conditions لبناء بنى مختلفة حسب متغيرات البيئة.

📖 جدول المصطلحات

المصطلح (English)الترجمةالمفهوم
Bastion hostمضيف الحصنخادم وسيط آمن للوصول إلى الخوادم في الشبكات الخاصة.
AWS CodePipelineخط أنابيب الأكوادخدمة CI/CD لأتمتة بناء واختبار ونشر التطبيقات.
Code repositoryمستودع الأكوادمخزن مركزي لإدارة إصدارات الكود مثل GitHub.
Environment variableمتغير البيئةقيمة يمكن تغييرها لتعديل سلوك البيئة دون تعديل الكود.
1. A company wants to define and provision AWS infrastructure using a declarative JSON template that can be version-controlled and reused across multiple environments. Which AWS service should they use?
Correct! AWS CloudFormation is an Infrastructure as Code (IaC) service that lets you model your entire infrastructure using declarative templates in JSON or YAML. Templates can be version-controlled in Git and reused to create identical environments.
Incorrect. The correct answer is B. CloudFormation provides declarative IaC with JSON/YAML templates. Elastic Beanstalk is a PaaS service that abstracts infrastructure. OpsWorks uses Chef/Puppet for configuration management. CodeDeploy is for deploying application code, not infrastructure provisioning.
2. A solutions architect needs to preview the changes that a CloudFormation template update will make to existing resources before applying them. Which feature should they use?
Correct! Change Sets allow you to preview how proposed changes to a CloudFormation stack will impact your resources before you apply them. You can see exactly which resources will be added, modified, or deleted.
Incorrect. The correct answer is B. Change Sets provide a safe preview of stack updates. StackSets deploy stacks across multiple accounts/regions. Drift Detection checks if resources have changed outside CloudFormation. Stack Policies prevent accidental updates to specific resources.
3. A company wants to deploy identical infrastructure stacks across multiple AWS accounts and Regions from a single CloudFormation template. Which feature should they use?
Correct! StackSets extend the functionality of stacks by enabling you to create, update, or delete stacks across multiple accounts and AWS Regions from a single operation using a common template.
Incorrect. The correct answer is B. StackSets are specifically designed for multi-account, multi-Region deployments. Nested stacks create stacks within stacks for a single account. Cross-stack references allow stacks to reference resources from other stacks. Change Sets preview changes before applying them.
4. A CloudFormation template needs to create an EC2 instance whose instance type depends on the environment: t3.micro for dev, t3.medium for staging, and t3.large for production. How should the architect implement this?
Correct! Using a parameter with an AllowedValues list lets the user select the environment when creating the stack. A condition can then be applied if needed, or the mapping approach with Fn::FindInMap can also work. Parameters are the cleanest way to make templates reusable across environments.
Incorrect. The correct answer is B. Parameters make templates dynamic and reusable. The user passes a parameter value like "dev" or "prod" when creating the stack, and a condition or mapping determines the instance type. Separate templates violate DRY principles. Hard-coding defeats IaC benefits. Mappings are static -- for user input, parameters are better.
5. A company wants to detect if resources in a CloudFormation stack have been manually modified outside of CloudFormation. Which feature should they use?
Correct! CloudFormation Drift Detection compares the actual configuration of resources in a stack with the expected configuration defined in the template. It reports any differences (drift) so you can take corrective action.
Incorrect. The correct answer is B. Drift Detection is specifically designed to identify manual changes made outside CloudFormation. AWS Config rules evaluate resource configurations against policies. CloudTrail records API calls. Change Sets preview template updates.
6. A CloudFormation template defines a VPC, subnets, and EC2 instances. The architect wants to organize the template by reusing common resource patterns across multiple stacks. What approach should they take?
Correct! Nested stacks allow you to compose your infrastructure from reusable template components. You create separate templates for common patterns (e.g., VPC with subnets) and reference them from a parent template using the AWS::CloudFormation::Stack resource type.
Incorrect. The correct answer is A. Nested stacks promote reuse and modularity. Duplication violates IaC best practices and creates maintenance issues. Custom resources are for extending CloudFormation, not for modularizing templates. Monolithic templates are harder to manage and test.
7. A company has an existing CloudFormation stack with production resources. They need to update the stack but want to ensure that a specific database resource is not accidentally replaced during the update. What should they use?
Correct! A stack policy can prevent updates to specific resources (including replacement). A DeletionPolicy of Retain ensures the database is preserved if the stack is deleted. Together they provide defense in depth against accidental resource replacement or deletion.
Incorrect. The correct answer is D. Stack policies explicitly deny updates to protected resources. DeletionPolicy: Retain ensures the resource survives stack deletion. Using both gives you comprehensive protection. Change Sets only preview -- they do not prevent accidental replacement if someone proceeds.
8. A company wants to quickly deploy a common enterprise pattern (a VPC with public and private subnets, NAT gateways, and VPN connectivity) using pre-built, AWS-reviewed templates. What should they use?
Correct! AWS Quick Starts are pre-built templates developed by AWS and AWS Partners that automate the deployment of popular enterprise solutions. They follow AWS best practices and can be deployed in minutes using CloudFormation templates.
Incorrect. The correct answer is B. Quick Starts provide ready-to-deploy reference architectures. Service Catalog lets organizations create and manage approved products. Elastic Beanstalk is a PaaS service for web applications. CodePipeline is a CI/CD orchestration service.
9. A CloudFormation stack creation fails because a resource could not be created. The stack enters the ROLLBACK_IN_PROGRESS state. What happens to the successfully created resources?
Correct! When a CloudFormation stack creation fails, the service automatically rolls back by deleting all resources that were successfully created. This ensures you are not billed for orphaned resources and prevents partial, inconsistent infrastructure.
Incorrect. The correct answer is B. CloudFormation rollback feature automatically cleans up by deleting successfully provisioned resources. This is a key benefit -- it prevents orphaned resources and partial deployments. You can disable rollback on creation if you want to keep resources for troubleshooting.
10. A company uses CloudFormation and wants to pass the AMI ID that varies by Region (e.g., ami-123 in us-east-1, ami-456 in eu-west-1). The AMI IDs are well-known in advance. How should the architect define this in the template?
Correct! The Mappings section stores static, well-known values. Using the AWS::Region pseudo-parameter as a key with Fn::FindInMap lets you look up the correct AMI ID for each Region automatically without requiring user input.
Incorrect. The correct answer is B. Mappings with Fn::FindInMap are ideal for pre-defined Region-specific values. Parameters are better for user-provided values that change between deployments. Hard-coding requires manual changes for each Region. Pseudo-parameters (like AWS::Region) are available but you still need a lookup mechanism like mappings.

🚀 الخاتمة

في هذه الوحدة تعرفت على أهمية أتمتة البنية التحتية السحابية والمخاطر التي تسببها العمليات اليدوية مثل عدم قابلية التكرار وغياب التحكم بالإصدارات وسجلات التدقيق. استعرضنا مفهوم Infrastructure as Code (IaC) وكيف يساعد في نشر البيئات بسرعة وثبات باستخدام قوالب موحدة قابلة لإعادة الاستخدام. تعمقنا في خدمة AWS CloudFormation — من كتابة القوالب بصيغة JSON وYAML إلى استخدام Conditions وChange Sets وDrift Detection — وكيفية تنظيم القوالب حسب المجالات المختلفة. تعرفنا أيضاً على AWS Quick Starts كحلول جاهزة للنشر السريع، وAmazon Q Developer كمساعد AI يسرع كتابة القوالب ويحسن جودتها. وأخيراً طبقنا مبادئ AWS Well-Architected Framework على استراتيجيات الأتمتة عبر الركائز الست لضمان بنية مؤتمتة وآمنة وموثوقة وفعالة من حيث التكلفة.

تعليقات



حجم الخط
+
16
-
تباعد السطور
+
2
-