AWS CloudFormation وTerraform – لست متأكدًا من أيهما تختار؟ ستساعدك هذه المقالة في اتخاذ قرار ذكي.
الحوسبة السحابية غيرت عالم DevOps. لم تعد مجرد كلمة رنانة؛ إنها هنا لتغيير الطريقة التي نطور بها ونحافظ على تطبيقاتنا. على الرغم من وجود أسباب لا حصر لها تجعلك تستخدم الحوسبة السحابية لجميع أحجام الأعمال، إلا أن هناك قيدًا بسيطًا: يجب عليك إعداد بنيتك التحتية يدويًا.
يجب عليك الذهاب إلى لوحات التحكم لمزودي الخدمة السحابية وإخبارهم بالضبط ما تريده. يعمل هذا بشكل جيد لحالات الاستخدام الصغيرة، ولكن ماذا لو كان لديك أشخاص مختلفون يقومون بإجراء تغييرات على التكوين في اللوحة؟ قد ينتهي بك الأمر إلى بنية تحتية معقدة جدًا ستصبح أكثر صعوبة في الصيانة. لا توجد طريقة فعالة للتعاون أو تتبع التغييرات في البنية التحتية السحابية. حسنًا، هناك البنية التحتية كرمز.
البنية التحتية كرمز (IaC) هو مصطلح شائع في الحوسبة السحابية. إنها عملية إدارة تكنولوجيا المعلومات الخاصة بك باستخدام IaC. نعم، هذا صحيح. بدلاً من الذهاب إلى اللوحة والقيام بكل شيء يدويًا، يتيح لك IaC كتابة ملفات التكوين لإعداد بنيتك التحتية السحابية. يوفر لنا IaC فوائد مثل الاتساق، والصيانة السهلة والسريعة، وعدم وجود مجال للأخطاء البشرية.
استخدام IaC مع خدمات أمازون ويب
AWS هي الخدمة الرائدة في الحوسبة السحابية في العالم، حيث تمتلك ضعف حصة السوق مقارنة بمقدم الخدمة السحابية التالي. تقدم أكثر من 200 خدمة يمكن أن تلبي مئات وآلاف حالات الاستخدام.
عند البدء في استخدام IaC مع AWS، ستقوم غالبًا بتقليص خياراتك إلى AWS CloudFormation والأداة مفتوحة المصدر Terraform. إذا كنت ترغب في الاختيار بين الاثنين، قد يكون من المربك فهم مجموعة الميزات التي تقدمها الأداتان. في هذه المقالة، سنقوم بفحص الفروقات بين AWS CloudFormation وTerraform لمساعدتك في تحديد الأداة الأفضل لتلبية احتياجاتك.
Terraform مقابل AWS CloudFormation: الفروقات
التركيب
عند استخدام IaC في المؤسسات الكبيرة، يمكن أن تكون التركيبية عاملًا مهمًا في اختيار الأداة المناسبة.
CloudFormation
CloudFormation لا يدعم الوحدات بشكل أصلي. بدلاً من ذلك، يسمح لك باستخدام شيء يسمى المجموعات المتداخلة كوحدات.
على سبيل المثال، يمكنك إنشاء قالب CloudFormation قياسي لتوفير حاوية S3 في مؤسستك. عندما يرغب المستخدمون النهائيون في إنشاء حاوية S3، يمكنهم استخدام قالب CloudFormation هذا ككومة متداخلة لتوفير حاوية S3 القياسية.
هناك أيضًا خدمة AWS، وهي كتالوج خدمات AWS، التي يمكن أن تساعد في تحقيق التوافقية لقوالب CloudFormation. تم تصميم كتالوج خدمات AWS للمنظمات التي تحتاج إلى تحديد نطاق خدمات AWS لتلبية متطلبات الامتثال والأمان والتكلفة أو الأداء. يستخدم قوالب CloudFormation في الخلفية.
دعنا نفهم هذا بسرعة من خلال مثال. إذا لم يتم استخدام حاويات S3 بشكل صحيح، فقد تكون كارثية لبياناتك السرية. دعنا نأخذ نفس المثال. تريد أن يكون لديك طريقة قياسية لاستخدام S3 في مؤسستك. الخيار الأول هو إنشاء قالب الكومة المتداخلة، الذي يمكن استخدامه ضمن كومات CloudFormation الأخرى وهو جيد بنفس القدر.
بدلاً من ذلك، يمكنك استخدام كتالوج خدمات AWS، الذي يسمح للمستخدمين باستخدام هذا القالب القياسي من واجهة وحدة التحكم وتحديد بعض المعلمات لتخصيصات طفيفة. سيتيح لك ذلك التحكم في كيفية توفير البنية التحتية في حسابات AWS الخاصة بك ومنع أي سيناريوهات غير مرغوب فيها.
يمكن أن يدعم استخدام CloudFormation للكومات المتداخلة وكتالوج خدمات AWS أيضًا التكوينات القياسية في المنظمات الكبيرة، على الرغم من أنه قد يتطلب المزيد من التكوين اليدوي.
تيرافورم
تيرافورم يدعم الوحدات بشكل أصلي. يسمح لك بإنشاء تكوينات قياسية مشابهة لـ AWS CloudFormation واستخدامها في تكوينات تيرافورم الأخرى.
نظرًا لأن Terraform أداة مفتوحة المصدر، يمكنك أيضًا العثور على واستخدام بعض الوحدات المفتوحة المصدر الجاهزة في سجل Terraform. يمكنك أيضًا إنشاء وحداتك الخاصة مع تكويناتك الخاصة واستضافتها في سجل وحدات خاص.
يدعم Terraform الوحدات بشكل أصلي مما يوفر نهجًا بسيطًا نحو التعددية. ومع ذلك، قد يتطلب إدارة الوحدات عبر فريق كبير مزيدًا من الحوكمة لضمان الاستخدام الصحيح.
استخدام كومة متداخلة في CloudFormation ليس سهلاً كما هو الحال في استخدام الوحدات في Terraform. العامل الأساسي هو أن تمرير البيانات من قالب CFN إلى الكومة المتداخلة يمكن أن يكون معقدًا.
لا تمتلك CloudFormation مستودعًا مركزيًا لمشاركة القوالب. يتيح لك كتالوج خدمات AWS إدارة هذه العملية ولكنه يفرض القواعد بشكل أساسي عبر وحدة التحكم. بينما يمكن أن تغلف قوالب CloudFormation مهامًا معقدة، لا يزال يتعين على المستخدمين تحديد المعلمات عند إنشاء الموارد.
من ناحية أخرى، يمتلك Terraform طريقة محددة لإنشاء وصيانة ومشاركة الوحدات. يمكنك رؤية المتطلبات الدقيقة للوحدات في سجل وحدات Terraform واستخدامها بسهولة في ملفات Terraform الخاصة بك.
التحكم والحوكمة على البنية التحتية
إذا كنت ترغب في تقييد الموارد التي يمكن لفرقك إنشاؤها في حسابات AWS الخاصة بك، فإن AWS CloudFormation و Terraform يوفران لك الوسائل للقيام بذلك.
CloudFormation
يوفر CloudFormation التحكم من خلال سياسات IAM، مما يتيح لك إدارة وصول المستخدمين إلى الموارد. ومع ذلك، فإن هذا التحكم محدد بـ AWS، مما يمكن أن يكون مثالياً إذا كانت بنيتك التحتية بالكامل مركزة على AWS.
في مثال دلو S3 الخاص بنا، قد ترغب في تقييد جميع أذونات “إنشاء S3” للمستخدمين والسماح لهم فقط بإنشاء دلاء S3 من كتالوج خدمات AWS أو المكدسات المتداخلة.
Terraform
يسمح لك Terraform بالتحكم في الموارد التي يمكن لمستخدميك إنشاؤها باستخدام أداة سياسة ككود، Sentinel. سيمكنك Sentinel من فرض سياسات دقيقة تعتمد على المنطق للسماح أو رفض إجراءات المستخدمين عبر Terraform. على سبيل المثال، يمكنك رفض جميع الموارد التي تنشئ دلاء S3 والسماح فقط للمستخدمين بإنشاء دلاء S3 من وحدة قياسية.
إدارة الحالة
تحتاج AWS CloudFormation وTerraform إلى تتبع الموارد التي تحتفظ بها.
Terraform
يخزن Terraform حالة بنيتك التحتية في ملف حالة. يتم تخزين هذا الملف محليًا بشكل افتراضي؛ ومع ذلك، يمكنك تخزينه على خلفيات بعيدة مثل S3 والسماح لعدة مستخدمين بإجراء تغييرات على نفس مجموعة البنية التحتية.
CloudFormation
يقوم CloudFormation بصيانة الحالة داخليًا في الخلفية، لذلك لا يحتاج المستخدمون للقلق بشأن إدارة ملف الحالة يدويًا. هذا جيد لأولئك الذين يريدون خدمة مُدارة بالكامل.
كل من AWS CloudFormation و Terraform تسمح لك بالتحقق من التغييرات التي سيتم إجراؤها على البنية التحتية الخاصة بك. في Terraform، يمكنك تشغيل الأمر “terraform plan” لرؤية كيفية تطبيق Terraform لتغييرات التكوين الخاصة بك. في CloudFormation، يمكن للمستخدمين رؤية هذه المعلومات من خلال مجموعات التغييرات.
اللغة
Terraform
يستخدم Terraform لغة تكوين HashiCorp، HCL، وهي لغة أنشأتها HashiCorp. إنها مشابهة جدًا لـ JSON، مع ميزات وقدرات مدمجة إضافية.
CloudFormation
تكتب قوالب CloudFormation بتنسيقات YAML أو JSON.
التسجيل والتراجع
كلا من AWS CloudFormation و Terraform لديهما إمكانيات تسجيل جيدة. في تجربتي، كانت الأخطاء والمشاكل واضحة (إلى حد كبير).
CloudFormation
بشكل افتراضي، ترجع CloudFormation جميع التغييرات في حالة فشل تغيير الكومة. هذه ميزة جيدة، ولكن يمكن تعطيلها لأغراض التصحيح.
Terraform
لن تقوم Terraform تلقائيًا بالتراجع عن التغييرات الخاصة بك في حالة فشلها. هذه ليست مشكلة، حيث يمكنك دائمًا تشغيل أمر تدمير Terraform لحذف التكوين النصفي وإعادة تشغيل تشغيل Terraform مرة أخرى.
النطاق
Terraform
يسمح الدعم المتعدد للسحابة في Terraform بنشر البنية التحتية عبر AWS و Azure و Google Cloud ومنصات أخرى ويوفر مرونة إذا كنت تعمل في بيئة سحابية متعددة.
CloudFormation
CloudFormation مرتبط بشكل وثيق مع AWS، مما يجعله خيارًا جيدًا للبنى التحتية التي تعتمد فقط على AWS ولكنه محدود للإعدادات متعددة السحابات.
دعم الميزات
CloudFormation
تتلقى AWS CloudFormation عادةً التحديثات أولاً للخدمات والميزات الجديدة، نظرًا لتكامله الوثيق مع AWS.
Terraform
في الحالات التي تفتقر فيها Terraform إلى ميزات معينة من AWS، يمكنك دمج كتل CloudFormation مباشرة في كود Terraform الخاص بك كحل بديل.
الدعم الفني
CloudFormation
تشمل خطة الدعم الفني المدفوعة من AWS أيضًا دعم CloudFormation.
Terraform
تمتلك HashiCorp خططًا مدفوعة للدعم الفني على Terraform أيضًا.
الخاتمة
كلا من AWS CloudFormation وTerraform أدوات قوية ومتطورة بالكامل، كل منهما له مزاياه الخاصة. يمكن أن تساعدك الاختلافات المذكورة أعلاه في تحديد الأداة التي تناسب احتياجاتك بشكل أفضل. إذا كنت تخطط لاستخدام منصات سحابية متعددة، فإن Terraform يقدم دعمًا متعدد السحابات، بينما يعد AWS CloudFormation خيارًا ممتازًا للبيئات الخاصة بـ AWS. في النهاية، كلا الأداتين يمكن أن تديرا IaC بفعالية. الخيار الصحيح يعتمد على متطلباتك، سواء كنت تركز على AWS فقط أو تعمل مع مزودي سحابة متعددين.
Source:
https://dzone.com/articles/understanding-iac-tools-cloudformation-vs-terraform