IaC

خلينا ندردش شوية عن مفهوم مهم جدًا في عالم الـ DevOps، وهو Infrastructure as Code (IaC)، أو بمعنى تاني "البنية التحتية كـ كود".

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


📌 إيه فكرة الـ IaC؟

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

لكن مع Infrastructure as Code الموضوع اختلف، لأننا بنكتب كل الإعدادات دي على شكل كود، زي ما بنكتب الكود بتاع التطبيق، يعني بتتحول عملية إعداد السيرفرات نفسها لكود نقدر نشغله في أي وقت ونطلع نفس النتيجة بدون تدخل يدوي.


📌 ليه الـ IaC مهم؟

⚡️ السرعة والدقة: بدل ما نجهز كل السيرفرات يدوي ونضيع وقت، بنكتب كود بيجهز لنا السيرفرات أو الموارد اللي عايزينها بالضبط وبالسرعة المطلوبة. وده بيخلي الشغل أسرع بكتير وبيقلل الأخطاء اللي ممكن تحصل.

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

⚡️ التحكم في النسخ والـ Versioning: بما إن الكود ده بنكتبه على شكل ملفات زي كود البرنامج، بنقدر نعمل عليه Version Control باستخدام أدوات زي Git. يعني لو حصلت مشكلة في أي وقت، بنقدر نرجع لنسخة أقدم من الكود بسهولة.


📌 فيه أدوات كتير بتساعدنا نكتب الـ IaC وننفذه، وأشهر الأدوات دي:

⚙️ الـ Terraform: الأداة دي بتساعدك تكتب كود يشتغل على أي منصة تقريبًا، سواء AWS أو Azure أو GCP أو غيرهم.

⚙️ الـ AWS CloudFormation: دي أداة مخصوصة لـ AWS، بتقدر تكتب بيها الـ IaC بتاعك لو شغال على خدمات AWS.

⚙️ الـ Ansible و Chef و Puppet: دول أدوات بنسميها Configuration Management Tools، بتساعدنا نجهز السيرفرات ونحافظ على الإعدادات ثابتة.


📌 مثال بسيط على الـ Terraform

لو عندك مشروع شغال على AWS وعايز تبني فيه بيئة مكونة من EC2 Instance و S3 Bucket، ممكن تكتب كود بسيط باستخدام Terraform وتقول له يعمل Deploy، وفي ثواني هتلاقي البيئة كلها اتبنت بنفس المواصفات اللي كتبتها.

📍 إزاي بنكتب الكود؟

الكود بيتكتب غالبًا بلغة بسيطة بتعبر عن الموارد اللي عايز تبنيها والإعدادات بتاعتها. لو عايز سيرفر، هتكتب كود يقول يعمل سيرفر بالشكل ده، وبعدين هتشغل الكود بتاعك، وهو هيجهز لك كل حاجة، حتى لو هتشتغل على أكتر من سيرفر أو Cloud Provider.


📌 إيه التحديات اللي ممكن تواجهك مع الـ IaC؟

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

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

  • الأمان: كتابة إعدادات الأمان والـ permissions بطريقة صح في الكود بتاعك مهمة جدًا، خصوصًا لو بتشتغل على بيئة Production.


بالتوفيق يا بطل 💪🏻