بنيتنا التحتية كانت قصورًا من رمال: كيف أنقذتنا ‘البنية التحتية كشيفرة’ (IaC) من جحيم الانحراف في الإعدادات؟

خليني أحكيلكم قصة صارت معي ومع فريقي قبل كم سنة، قصة علّمتنا درس ما بننساه. كنا شغالين على مشروع كبير، “مشروع الفينيق” سمّيناه، وكان كل شغلنا على السحابة (Cloud). الأمور كانت ماشية تمام، والتطبيق شغال زي الساعة. ليلة خميس، وأنا قاعد مع العيلة ومبسوط على الآخر، وإلا التلفون برن… والمصيبة إنه رقم مدير المشروع.

قلبي بلش يدق بسرعة، وعرفت إنه في مصيبة. “أبو عمر، الموقع واقع! كل اشي داون!”. يا جماعة الخير، شعور لا أحسد عليه عدو ولا حبيب. طيران على اللابتوب، وبفتح أنظمة المراقبة… كله أحمر. السيرفرات مش عم بترد، وقواعد البيانات مش لاقيينها، وكأن عفريت أخد كل البنية التحتية تبعتنا وطار فيها.

قضينا ليلتها، أنا والفريق، في اجتماع طوارئ على الإنترنت، والكل بسأل السؤال المشهور: “مين آخر واحد لمس إشي؟ مين غيّر إشي؟”. طبعاً، الجواب دايماً “أنا ما عملت إشي!”. بعد ساعات من الحفر والنبش في سجلات التغيير اليدوية (logs) ومقارنة الإعدادات بين البيئات المختلفة، اكتشفنا الكارثة. زميل النا، بحسن نية، عمل “تعديل بسيط” على إعدادات الشبكة (Security Group) عشان يحل مشكلة مؤقتة، بس نسي يرجّعه. هذا التعديل البسيط عمل تأثير الدومينو، وخلال ساعات، كل النظام انهار.

في تلك الليلة، وإحنا بنرجع كل إشي يدويًا، قطعة قطعة، أدركت حقيقة مرّة: بنيتنا التحتية اللي كنا فخورين فيها، كانت مجرد قصور من رمال. أي نسمة هواء، أي تغيير بسيط غير موثّق، كان كفيل بإنه يهدم كل اشي بنيناه. ومن هنا، بدأت رحلتنا الحقيقية مع مفهوم “البنية التحتية كشيفرة” أو Infrastructure as Code.

ما هو “انحراف الإعدادات” (Configuration Drift)؟ وليش هو كابوس كل مطور؟

المشكلة اللي واجهناها في قصة “مشروع الفينيق” الها اسم تقني فخم: انحراف الإعدادات (Configuration Drift).

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

أسباب الانحراف في الإعدادات:

  • الإصلاحات العاجلة (Hotfixes): زي ما صار معنا، تغيير سريع ومباشر على البيئة الحية لحل مشكلة طارئة.
  • التعديلات اليدوية: مطور أو مسؤول نظام (SysAdmin) يدخل على السيرفر مباشرة عبر SSH ويغير إعدادات معينة بدون توثيق.
  • عدم توحيد البيئات: بيئة التطوير (Dev) تختلف عن بيئة الاختبار (Staging)، وكلاهما يختلف عن بيئة الإنتاج (Production). وهذا هو أصل المقولة الشهيرة “بس كانت شغالة على جهازي!”.
  • غياب التوثيق المركزي: كل واحد بوثّق على طريقته، أو الأسوأ، ما بوثّق بالمرة.

هذا الانحراف بخلي نظامك غير متوقع، صعب الصيانة، ومستحيل إعادة بنائه بسرعة في حالة الكوارث. يعني باختصار، “بلاوي”.

البطل المنقذ: البنية التحتية كشيفرة (Infrastructure as Code – IaC)

هنا يأتي دور الـ IaC لينقذ الموقف. الفكرة عبقرية وبسيطة في نفس الوقت: عامل البنية التحتية تبعتك (سيرفرات، شبكات، قواعد بيانات، …) بنفس الطريقة اللي بتعامل فيها كود التطبيق تبعك.

بدل ما تدخل على واجهة أمازون (AWS Console) أو أزور (Azure Portal) وتكبّس وتغيّر بالإعدادات، بتكتب “شيفرة” أو “كود” يوصف شكل البنية التحتية اللي بدك إياها. هذا الكود بصير هو “مصدر الحقيقة الوحيد” (Single Source of Truth).

ليش الـ IaC هو الحل السحري؟

  • التوثيق الذاتي: الكود نفسه هو التوثيق. أي حدا بده يعرف كيف البنية التحتية شغالة، بس بقرأ الكود.
  • التحكم في الإصدارات (Version Control): بتقدر تحفظ كود البنية التحتية على Git. بتقدر تشوف مين غيّر إيش ومتى، ترجع لإصدار قديم لو صار مشكلة، وتعمل مراجعة للكود (Code Review) قبل ما تطبّق أي تغيير. وداعاً لسؤال “مين آخر واحد لمس إشي؟”.
  • التكرار والاتساق: نفس الكود رح يبني نفس البنية التحتية كل مرة، سواء لبيئة التطوير، الاختبار، أو الإنتاج. خلص ما في “كانت شغالة عندي”.
  • الأتمتة: بكبسة زر، بتقدر تبني بنية تحتية كاملة من الصفر، أو تهدمها عشان توفر مصاريف لما ما تكون مستخدمة.

Terraform في الميدان: مثال عملي

من أشهر الأدوات في عالم الـ IaC هي أداة Terraform من شركة HashiCorp. اللي بميزها إنها “سحابية-محايدة” (Cloud-Agnostic)، يعني بتقدر تستخدمها مع AWS, Azure, Google Cloud وغيرهم بنفس المنطق ونفس الأوامر.

خلينا نشوف مثال بسيط جداً. تخيل بدنا ننشئ S3 Bucket على AWS (مكان لتخزين الملفات).

بدل ما ندخل على واجهة AWS ونعمل 10 كبسات، بنكتب ملف بسيط اسمه main.tf:


# تحديد مزود الخدمة السحابية (في حالتنا AWS)
provider "aws" {
  region = "eu-west-1" # المنطقة اللي رح نشتغل فيها
}

# تعريف المورد اللي بدنا ننشئه (S3 Bucket)
resource "aws_s3_bucket" "project_phoenix_backups" {
  bucket = "abu-omar-project-phoenix-backups-12345" # اسم الـ Bucket (لازم يكون فريد عالمياً)

  tags = {
    Name        = "Project Phoenix Backups"
    ManagedBy   = "Terraform"
    Owner       = "Abu Omar"
  }
}

هذا الكود بسيط وواضح ومقروء. أي حدا بشوفه بفهم إنه إحنا بدنا نعمل S3 Bucket في منطقة eu-west-1 وهي الخصائص تبعته.

كيف بنستخدمه؟

سحر Terraform يكمن في ثلاث أوامر رئيسية:

  1. terraform init: تجهيز بيئة العمل وتنزيل الإضافات اللازمة للمزود السحابي (AWS في مثالنا). بتعملها مرة واحدة في البداية.
  2. terraform plan: هذا هو الأمر السحري! Terraform بقارن الكود اللي أنت كاتبه مع الوضع الحالي على السحابة، وبعطيك “خطة” بالتغييرات اللي رح يعملها. بقلك رح أضيف كذا، وأعدل كذا، وأحذف كذا. هيك ما في مفاجآت.
  3. terraform apply: إذا عجبتك الخطة اللي عرضها عليك في الـ plan، بتكتب هاد الأمر عشان يطبقها على أرض الواقع.

والله يا جماعة، لما تشوف كيف terraform plan بعرضلك بالضبط شو رح يتغير قبل ما يتغير، بتحس براحة نفسية ما إلها مثيل.

نصيحة أبو عمر 💡

دائماً، دائماً، دائماً، شغل terraform plan وادرسه كويس قبل ما تعمل apply. هاد الأمر هو شبكة الأمان تبعتك. كمان نصيحة، لا تخزن ملفات الحالة (state files) على جهازك. استخدم “الواجهة الخلفية البعيدة” (Remote Backend) مثل S3 Bucket عشان فريقك كله يشتغل على نفس ملف الحالة وتمنعوا المشاكل.

الخلاصة: لا تبنوا قصوركم على الرمال 🚀

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

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

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

أبو عمر

سجل دخولك لعمل نقاش تفاعلي

كافة المحادثات خاصة ولا يتم عرضها على الموقع نهائياً

آراء من النقاشات

لا توجد آراء منشورة بعد. كن أول من يشارك رأيه!

آخر المدونات

التوسع والأداء العالي والأحمال

كان فشل خدمة واحدة يُسقط نظامنا بالكامل: كيف أنقذنا نمط ‘قاطع الدائرة’ (Circuit Breaker) من جحيم الانهيارات المتتالية؟

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

16 مايو، 2026 قراءة المزيد
التكنلوجيا المالية Fintech

كانت قراراتنا الائتمانية صندوقاً أسود: كيف أنقذنا ‘الذكاء الاصطناعي القابل للتفسير’ (XAI) من جحيم التحيز والشكاوى التنظيمية؟

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

16 مايو، 2026 قراءة المزيد
البنية التحتية وإدارة السيرفرات

كانت أعطالنا تباغتنا في منتصف الليل: كيف أنقذنا Prometheus من جحيم المراقبة التفاعلية؟

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

16 مايو، 2026 قراءة المزيد
ادارة الفرق والتنمية البشرية

طلبات الدمج تموت في الانتظار: كيف أنقذ “ميثاق مراجعة الكود” فريقنا من جحيم التأخير والجدل؟

أتذكر ذلك اليوم جيداً، طلب دمج (Pull Request) عالق لأسبوع، ونقاش حاد بين اثنين من أفضل المبرمجين حول تفصيل بسيط. كانت هذه هي القشة التي...

16 مايو، 2026 قراءة المزيد
اختبارات الاداء والجودة

كانت تحديثاتنا تكسر التصميم: كيف أنقذنا ‘اختبار التراجع البصري’ من جحيم الأخطاء المرئية؟

أشارككم قصة حقيقية من قلب المعركة البرمجية، وكيف تحولنا من فوضى الأخطاء المرئية بعد كل تحديث إلى ثقة وهدوء بفضل اختبارات التراجع البصري (Visual Regression...

16 مايو، 2026 قراءة المزيد
أتمتة العمليات

كان مطورنا الجديد ينتظر أياماً: كيف أنقذتنا ‘أتمتة إعداد البيئة’ من جحيم الأسبوع الأول الضائع؟

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

15 مايو، 2026 قراءة المزيد
نصائح برمجية

كانت إعادة المحاولة تدمر بياناتنا: كيف أنقذتنا ‘اللامتناهية’ (Idempotency) من جحيم العمليات المكررة؟

في ليلة لم أنم فيها، كانت أنظمتنا المالية تنهار بسبب عمليات دفع متكررة. أشارككم اليوم قصة كيف أنقذنا مفهوم "اللامتناهية" (Idempotency) من كارثة محققة، وكيف...

15 مايو، 2026 قراءة المزيد
​معمارية البرمجيات

كانت خدماتنا تتحدث في نفس الوقت: كيف أنقذتنا ‘المعمارية القائِمَة على الأحداث’ (EDA) من جحيم الاقتران المحكم؟

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

15 مايو، 2026 قراءة المزيد
البودكاست