بنيتنا التحتية كانت قصورًا من رمال: كيف أنقذتنا ‘البنية التحتية كشيفرة’ (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. رح تشوفوا الفائدة بسرعة، ورح تتساءلوا كيف كنتم عايشين في جحيم التعديلات اليدوية من قبل. تذكروا دائمًا: القصور المتينة تُبنى على أساسات من الشيفرة الصلبة، وليس على الرمال المتحركة. بالتوفيق يا جماعة!

أبو عمر

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

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

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

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

آخر المدونات

التكنلوجيا المالية Fintech

من شبكة مثقوبة إلى حصن منيع: كيف أنقذتنا قواعد البيانات الرسومية من كابوس الاحتيال؟

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

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

ميزانيات الخطأ (Error Budgets): كيف أنهت كابوس مكالمات منتصف الليل وأنقذتنا من الإرهاق؟

كنا غارقين في مكالمات طوارئ ليلية لا تنتهي، فريق منهك والمنتج على المحك. في هذه المقالة، أشارككم قصة كيف أنقذنا مفهوم "ميزانيات الخطأ" (Error Budgets)...

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

كانت اجتماعاتنا الفردية استجواباً صامتاً: كيف حولنا الـ 1-on-1 من تقرير حالة ممل إلى محرك لنمو الفريق؟

أشارككم تجربتي كقائد فريق تقني في تحويل الاجتماعات الفردية (1-on-1s) من جلسات استجواب مملة إلى محادثات مثمرة تساهم في بناء الثقة وتطوير الفريق. هذه المقالة...

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

كانت اختباراتنا تصرخ ‘الذئب’: كيف قضينا على ‘الاختبارات المتقلبة’ (Flaky Tests) واستعدنا الثقة في خطوط الأنابيب؟

في هذه المقالة، أشارككم قصة من أرض المعركة البرمجية، وكيف تغلب فريقي على كابوس "الاختبارات المتقلبة" أو Flaky Tests. سنغوص في أسبابها الخفية، ونتعلم استراتيجيات...

30 مايو، 2026 قراءة المزيد
أدوات وانتاجية

كانت أصابعي تصرخ من التكرار: كيف أنقذتني ‘مقتطفات الشفرة’ (Code Snippets) من جحيم كتابة Boilerplate؟

أشارككم قصتي مع التكرار الممل في البرمجة وكيف غيرت "مقتطفات الشفرة" (Code Snippets) طريقة عملي تماماً. دليل عملي من مبرمج فلسطيني لزيادة إنتاجيتك والتخلص من...

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

كانت تبعياتنا قنبلة موقوتة: كيف أنقذنا ‘التحديث الآلي للتبعيات’ من جحيم الثغرات الأمنية المنسية؟

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

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

كانت شفرتنا هرمًا من الهلاك: كيف أنقذتنا ‘شروط الحماية’ (Guard Clauses) من جحيم الـ if/else المتداخلة؟

في هذه المقالة، أشارككم قصة حقيقية من مسيرتي كمبرمج عن المعاناة مع الشفرات المتداخلة "هرم الهلاك". سنتعلم كيف تنقذنا تقنية "شروط الحماية" (Guard Clauses) من...

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

كانت خدماتنا متلاصقة كالغراء: كيف أنقذتنا ‘المعمارية الموجهة بالأحداث’ (EDA) من جحيم الاقتران المحكم؟

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

30 مايو، 2026 قراءة المزيد
ذكاء اصطناعي

كانت نماذجنا تموت ببطء: كيف أنقذنا “انحراف النموذج” (Model Drift) من جحيم التنبؤات الفاسدة؟

في عالم الذكاء الاصطناعي، نماذجنا ليست منحوتات حجرية، بل كائنات حية تتنفس البيانات. أشارككم قصة حقيقية عن "انحراف النموذج" (Model Drift)، هذا الشبح الذي كاد...

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