Terraform مقابل CloudFormation: مقارنة البنية الأساسية بين عرضين للتعليمات البرمجية (2022)
نشرت: 2022-04-10أصبحت البنية التحتية كرمز [IaC] شائعة بشكل متزايد خلال السنوات القليلة الماضية ولا عجب لماذا. IaC ، المعروف أيضًا باسم البنية التحتية المعرفة بالبرمجيات ، هو إعداد لتكنولوجيا المعلومات يمكن للمطورين أو فرق العمليات استخدامه لإدارة وتزويد مكدس التكنولوجيا تلقائيًا لأحد التطبيقات من خلال البرنامج.
مع IaC ، ليست هناك حاجة لاستخدام عملية يدوية لتكوين أجهزة وأنظمة تشغيل منفصلة. إنها أيضًا أحد أساسيات DevOps ، مما يعزز كفاءة وجودة العمل. أكثر الأدوات استخدامًا لتنفيذ IaC على AWS هما أداتان مفتوحتان المصدر Terraform و CloudFormation .
ما هو Terraform؟
- يسمح لك Terraform بتحديد الموارد المحلية والسحابة في ملفات تكوين قابلة للقراءة يمكنك مشاركتها ومراجعتها وإعادة استخدامها بسهولة.
- يوفر سير عمل دائم ومتسق لتزويد وإدارة جميع البنية التحتية الخاصة بك.
- يمكن لـ Terraform إدارة المكونات منخفضة المستوى مثل:
- الحوسبة
- موارد الشبكات
- تخزين
كيف يعمل Terraform؟
- يمكن لـ Terraform إنشاء وإدارة الموارد من خلال واجهات برمجة التطبيقات (APIs) على الأنظمة الأساسية السحابية والخدمات المتنوعة.
- يمكّنها المزودون من العمل مع أي نظام أساسي أو خدمة تقريبًا باستخدام واجهة برمجة تطبيقات يمكن الوصول إليها.
- يعمل مجتمع Terraform مع أكثر من 1700 مزود ويدير آلاف أنواع الخدمات والموارد وتستمر الشركة في التوسع.
- يمكنك العثور على جميع مقدمي الخدمات المتاحين للجمهور في سجل Terraform :
- خدمات أمازون ويب (AWS)
- Azure ، Google Cloud Platform (GCP)
- Kubernetes
- القياده
- جيثب
- سبلينك
- داتادوج
يتكون سير عمل Core Terraform من ثلاث مراحل:
- الكتابة: حدد مواردك التي يمكن تشغيلها من خلال العديد من الخدمات السحابية والموفرين.
- الخطة: ستقوم Terraform بتجميع خطة تنفيذ تحدد البنية التحتية التي ستقوم بإنشائها أو تحديثها أو تدميرها بناءً على البنية التحتية الحالية والتكوين الخاص بك.
- تطبيق: بمجرد الموافقة ، سيقوم Terraform بتنفيذ جميع العمليات المقترحة بالتسلسل الصحيح ، والنظر في أي تبعيات للموارد.
لماذا Terraform؟
- إدارة أي بنية أساسية
تتخذ Terraform نهجًا لا يمحى للبنية التحتية لتقليل تعقيد تعديل أو تحديث البنية التحتية والخدمات الخاصة بك. كما أنه يتتبع البنية التحتية الحقيقية الخاصة بك في ملف الحالة . سيحدد هذا الملف جميع التغييرات الضرورية التي يجب إجراؤها على البنية الأساسية الخاصة بك ، ومواءمتها مع ملفات التكوين الخاصة بك. تصف هذه الملفات الحالة النهائية للبنية التحتية الخاصة بك. نظرًا لأن Terraform يتحكم في المنطق الأساسي ، فلن تحتاج إلى كتابة تعليمات مفصلة لإنشاء الموارد. سيقوم ببناء رسم بياني للموارد ينظم تبعيات الموارد. سيقوم بإنشاء أو تعديل الموارد غير المعتمدة ، مما يساعدك على تتبع جميع مواردك بسهولة.
- توحيد التكوينات
Terraform ذو كفاءة عالية لأنه يدعم الوحدات النمطية أو مكونات التكوين القابلة لإعادة الاستخدام. توفر الوحدات النمطية طريقة خالية من المتاعب لحزم التعليمات البرمجية وإعادة استخدامها وهي مكافئة للطرق أو الوظائف في لغات البرمجة أو البرمجة النصية. تعتبر الوحدات النمطية واجهة قياسية لأنها تنشئ الموارد عن طريق تخصيص المدخلات وإرجاع المخرجات. هذا يبسط المشاريع إلى حد كبير عن طريق زيادة قابلية القراءة والسماح للفرق باستخدام الكتل المنطقية لتنظيم البنية التحتية.
فائدة أخرى للوحدات هي أنه يمكن الحصول عليها ومشاركتها في أي مشروع Terraform بسهولة. تُستخدم الوحدات النمطية عادةً كواجهة لإدارة وإنشاء موارد متعددة. يؤدي هذا إلى تقليل عدد الكود المكرر في المشروع بشكل كبير ، ولكن نسخ ولصق أقسام من التعليمات البرمجية أثناء تغيير معلمات التحديد فقط يمكن أن يكون رتيبًا. باستخدام متغيرات الإدخال ، يمكنك تخصيص سلوك الوحدة ، وربما كيفية تسمية الموارد. يمكن لوحدات Terraform النمطية أيضًا إرجاع الإخراج ، والذي يمكن أن يعمل كمدخلات في وحدات أو موارد مختلفة.
عند تشغيل بنية أساسية من أي حجم ، سيكون هناك بلا شك عدد هائل من المكونات والتكوينات. قد يكون هذا أمرًا صعبًا نظرًا لوجود العديد من الاختلافات الدقيقة داخل البنية التحتية المستخدمة من قبل فرق مختلفة داخل المؤسسة. يمكن أن يزيد ذلك من تعقيد الأمور لأن البنية التحتية قد تمتد عبر مجموعة متنوعة من التضاريس التي تتراوح من داخل الشركة إلى العديد من بائعي السحابة. نتيجة لذلك ، يعد تنظيم البنية التحتية وصيانتها عملية معقدة.
ما المقصود بـ AWS CloudFormation؟
تقدم AWS CloudFormation للشركات والمطورين طريقة بسيطة لإنشاء مجموعة متنوعة من AWS ذات الصلة والموارد الأخرى. يمكن للمطورين تثبيت وتحديث قواعد البيانات ، والحساب ، ومجموعة متنوعة من الموارد الأخرى بأسلوب تعريفي مباشر ، مما يزيل التحدي المتمثل في تعيين واجهات برمجة تطبيقات موارد معينة. تدير Cloudformation أيضًا دورات حياة الموارد بشكل منتظم ومتوقع وآمن. كما يسمح بعمليات التراجع التلقائية وإدارة الحالة المؤتمتة وإدارة الموارد لجميع الحسابات والمناطق.
يتيح لك CloudFormation قضاء المزيد من الوقت في التركيز على تطبيقاتك التي تعمل في AWS ، ووقت أقل في إدارة مواردك. يمكنك تصميم قالب يحدد جميع موارد AWS التي تريدها بما في ذلك مثيلات Amazon EC2 أو مثيلات Amazon RDS DB ، وما إلى ذلك. ستتولى CloudFormation توفير مواردك وتكوينها. كما أنه يتعامل مع إنشاء موارد AWS وتكوينها ، ويحدد كل لوجستيات التبعية.
لماذا CloudFormation؟
- تبسيط إدارة البنية التحتية
لإنشاء تطبيق ويب قابل للتوسع يتضمن قاعدة بيانات خلفية ، يمكنك استخدام Amazon Relational Database أو مثيل قاعدة بيانات الخدمة أو مجموعة Auto Scaling. بعد إنشاء الموارد مع الخدمة للتزويد الذي اخترته ، سيتعين عليك تكوينها للتعاون. يمكن أن تؤدي هذه الخطوات الإضافية إلى تعقيد وإبطاء عملية بدء تطبيقك. يسمح لك CloudFormation بإنشاء قالب أو تعديل قالب موجود. يحدد القالب جميع مواردك وجميع مكوناتها.
سيسمح استخدام هذا القالب لإنشاء مكدس CloudFormation للخدمة بالتحكم الكامل في مجموعة Auto Scaling وموازن التحميل وقاعدة البيانات. ستعمل موارد AWS بشكل كامل بمجرد إنشاء الحزمة بنجاح. يعد حذف المكدس أمرًا بسيطًا ، ولكن ضع في اعتبارك أن حذف المكدس يعني حذف جميع الموارد الموجودة به. بشكل عام ، تجعل CloudFormation إدارة مجموعة من الموارد في وحدة واحدة تجربة سهلة.
- قم بإجراء نسخ متماثل للبنية التحتية الخاصة بك بسرعة
إذا كان التطبيق الخاص بك يتطلب توفرًا إضافيًا ، فمن المحتمل أن تقوم بنسخه في مناطق عديدة بحيث إذا أصبحت إحدى المناطق غير متوفرة ، فلا يزال بإمكان الأشخاص استخدام التطبيق الخاص بك في مكان آخر. القول اسهل من الفعل. قد يكون من الصعب نسخ التطبيق الخاص بك لأنه يتطلب منك أيضًا تكرار مواردك. يجب عليك تسجيل كل الموارد المطلوبة من قبل التطبيق الخاص بك أثناء إدارة وتكوين هذه الموارد في كل منطقة.
تعد قوالب CloudFormation رائعة لأنه يمكنك إعادة استخدامها لإنشاء مواردك باستمرار وبشكل متكرر. للقيام بذلك ، يجب عليك تحديد مواردك مرة واحدة ثم توفير هذه الموارد بشكل مستمر في مناطق متعددة. تتكيف CloudFormation باستمرار ، وتجعل التحديثات الأخيرة والخيارات الجديدة من الممكن وجود طرق متعددة لإنشاء الموارد. يتضمن ذلك استخدام AWS CDK للترميز بلغات المستوى المتقدم ، واكتشاف انحراف التكوين ، واستيراد الموارد الحالية. يوجد الآن سجل يجعل من الملائم إنشاء أنواع مخصصة لها الكثير من الفوائد الأساسية للتكنولوجيا السحابية.
CloudFormation أربعة مفاهيم رئيسية
- القالب هو إما ملف نصي بتنسيق JSON أو YAML يصف الحالة المقصودة لجميع الموارد التي تحتاجها لتشغيل تطبيقك بنجاح. وهي تتألف مما يلي:
- قائمة اختيارية لمعلمات القالب (تم توفير قيم الإدخال في وقت إنشاء المكدس)
- قائمة اختيارية لقيم المخرجات (على سبيل المثال ، عنوان URL الكامل لتطبيق ويب)
- يتم استخدام قائمة اختيارية بجداول البيانات للبحث عن قيم التكوين الثابتة (على سبيل المثال ، أسماء AMI).
- قائمة موارد AWS وقيم التكوين الخاصة بها
2. رقم إصدار تنسيق ملف القالب
3. يقوم المكدس بفرض وإدارة كافة الموارد الموجودة في القالب الخاص بك والذي يسمح بإدارتها معًا عن حالة وتبعيات تلك الموارد.
4. مجموعة التغييرات عبارة عن معاينة لجميع التحديثات التي سيتم تنفيذها بواسطة عمليات المكدس لإنشاء الموارد أو تحديثها أو إزالتها.
5. مجموعة المكدس هي مجموعة من الحزم التي تديرها في وقت واحد والتي يمكنها نسخ مجموعة.