ممكن نقول عليه إنشاء بنية تحتية باستخدام نصوص برمجية. يمكن انت سمعت قبل كده عن أدوات زي (Ansible، Terraform، Cloud Formation) وغيرهم . بس خليني قبل ما اقولك ايه وظيفتهم ادردش معاك شويه في المشاكل اللي كانت موجوده قبل ما تظهر الأدوات دي ويظهر بشكل عام مصطلح IAC.
مع انتشار الحوسبة السحابية (Cloud Computing) واللي هو باختصار انك لو احتجت سيرفر بمواصفات معينه مش محتاج تروح تبني Data Center خاص بيك، لا انت هتروح عند حد من الشركات التي بتوفر الخدمة زي AWS / Google Cloud وغيرهم وتطلب منهم انك تأجر منهم اللي انت محتاجه وتدفع بس ثمن ايجارك.
هنا ظهرت مشكلة بشكل كبير في التعامل مع البنية التحتية (Servers / Storage / Network Devices )
ايه المشكلة اللي بنحاول نحلها ؟
- عملية إدارة البنية التحتية زي Servers الموجودة بتحتاج وقت ومجهود طويل لان كل تعديل على السيرفر كان بيتم بشكل منفرد، فلو هحتاج اغير اعدادات كل Servers اللي عندي هخش على كل جهاز بشكل منفرد واغير فيه، ده كان ممكن يأدي أن يحصل Inconsistency، واللي بتحصل بسبب انه ممكن اعدل على سيرفر بشكل معين و سيرفر تاني بشكل مختلف ده واللي بيأدي ان مش كل الاجهزة عندي بقت في نفس الحالة
- كمان بسبب أن كل التعديلات داخل فيها العنصر البشري في هنلاقي فيه نسبة من وقوع الأخطاء البشرية وصعوبة في تتبع التغيرات التي حصلت على البنية التحتية بشكل فعال و صعوبة في معرفة ( مين غير ايه وامتي)
- لو حجم البنية التحتية كبر هيزيد صعوبة التعامل معاها واصلاح الاخطاء الموجودة في أسرع مدة واللي بالتأكيد هياثر علي الخدمه اللي بقدمها
وغيرها كتير من المشاكل اللي كانت بتحصل وكانت بتصعب علينا عملية إدارة البنية التحتية بشكل فعال، وكان الحل اللي ظهر هو Infrastructure As a Code
Infrastructure as Code
هو تكنولوجي الهدف منها تهيئة وإدارة البنية التحتية باستخدام كود برمجي بدلا من اني احتاج اشغل او اعدل بشكل يدوي، كل اللي هحتاجه هو كود بيكون فيه تعليمات إنشاء البنية التحتية اللي انا محتاجها زي Servers / Ram /CPU/ /Firewalls وغيرهم، واستخدام ملف الكود ده اني اقدر ابني البنية التحتية بشكل تلقائي.
كتابة الاكواد بتكون باستخدام لغات زي Python، YAML، JSON وباستخدام أداة زي Ansible.Terraform وغيرهم من الادوات اللي بتساعدني اني انفذ الكود واجهز البنية التحتية في أسرع مدة بشكل دقيق وتلقائي.
فوائد الـ Infrastructure As a Code
- حل مشكلة In Consistency واللي بتكون بسبب تعديل كل سيرفر بشكل منفرد، فبعد استخدامنا لكود موحد يضمن أن كل البنيه التحتيه اللي موجودة في نفس الحالة
- تكلفة أقل و حل المشاكل بأسرع وقت بسبب وجود مكان نقدر منه نتابع الكود ونعرف ايه ممكن يكون سبب المشكلة ونرجع باسرع مدة لاخر نسخه مفيهاش مشكله لو اضطرينا
- سهولة التعاون بين التيم، بسبب التحول لكود يسهل مشاركته والتعديل عليه، واللي بيخلي فيه توفير في الوقت بشكل كبير
- التكرار بسهولة، فلو احتجت اشغل نفس البنية التحتية مرة تانية كل اللي محتاجه هو ملف الكود.