لفترة طويلة، بدا أن الأتمتة automation هي جلّ اهتمام أي مدير نظم لكن يبدو مؤخرًا أن التوجه يتغير من الأتمتة إلى التنسيق orchestration، مما أثار تساؤل العديد من مدراء النظم المتحيرين: "ما الفرق بينهما؟".
يكمن الفارق الرئيسي بين الأتمتة والتنسيق في الغاية من كل منهما والأدوات المستخدمة لكل منهما. تقنيًا يمكن أن نعد الأتمتة فرعًا من التنسيق. فبينما يشير التنسيق إلى العديد من الأجزاء المتحركة، تشير الأتمتة عادةً إلى مهمة واحدة أو عدد قليل من المهمات المرتبطة ببعضها ارتباطًا وثيقًا. يعمل التنسيق على مستوى أعلى ويتوقع منه أن يبني قراراته حسب الحالات والمتطلبات المتغيرة.
مع ذلك، لا يجب أن يؤخذ هذا المنظور حرفيًا لأن لكل من المصطلحين - الأتمتة والتنسيق- تأثيرات عند استخدامهما. تتطابق نتائج كل منهما من الناحية الوظيفية: تنفَّذ الأمور دون تدخلك المباشر، لكن تختلف طريقة تحقيقك هذه النتيجة والأدوات التي تستخدمها لتحقيقها، أو على الأقل تختلف طريقة استخدام المصطلحين حسب الأدوات التي تستخدمها.
فمثلًا، تتضمن الأتمتة عادةً كتابة النصوص البرمجية scripting، وغالبًا تكون بلغة باش Bash أو بايثون Python أو لغة مشابهة، وتدل غالبًا على جدولة تنفيذ شيء ما إما بوقت محدد أو عند وقوع حدث محدد. أما التنسيق يبدأ غالبًا ببرنامج مخصص لهذا الغرض لتنفيذ مجموعة مهام قد تحدث بصورة غير منتظمة، أو عند الطلب أو نتيجة وقوع أي عدد من الأحداث المحفزة، وقد تعتمد النتائج الدقيقة على مجموعة متنوعة من الحالات.
صنع القرار والتنسيق في تكنولوجيا المعلومات
تدل الأتمتة على ابتكار مدير النظم لنظام يجعل الحاسوب ينفذ شيئًا كان ينفَّذ يدويًا. في الأتمتة يكون مدير النظم قد اتخذ أصلًا معظم القرارات حول ما يجب تنفيذه، فلا يجب على الحاسوب إلا أن ينفذ "وصفة" recipe المهمات.
يدل التنسيق أن مدير النظم أعد نظامًا لينفذ شيئًا ما من تلقاء نفسه بناءً على مجموعة قواعد rules ومعامِلات parameters وعمليات رصد observations. في التنسيق يعلم مدير النظم النتيجة النهائية المرجوة لكن يترك أمر اتخاذ قرار كيفية الوصول إلى هذه النتيجة للحاسوب.
لنتفكر في Ansible وباش؛ إن باش هي لغة الصدفة shell وكتابة النصوص البرمجية، يستخدمها مدراء النظم لتنفيذ جميع الأمور التي يقومون بها تقريبًا خلال أي يوم عمل. تعد الأتمتة بواسطة باش واضحة: بدل أن تكتب الأوامر في جلسة session تفاعلية، تكتبها ضمن مستند نصي وتحفظ هذا الملف كملف برمجي للصدفة shell script. تشغل باش هذا الملف منفذةً الأمر تلو الآخر. وهي تتيح مجالًا لصنع القرار المشروط، لكنه عادةً بسيط لا يتجاوز في تعقيده تعليمة if-then، اللتان يجب أن تكتبا ضمن نص برمجي.
من ناحية أخرى، تستخدم Ansible تعليمات أو أدلة أنظمة النشر playbooks يوضح فيها مدير النظم حالة الحاسوب المنشودة، إذ تدرج الشروط التي يجب أن تتحقق قبل أن تعد Ansible العمل منفذًا. عندما تعمل Ansible تتخذ إجراءً حسب الحالة الحالية للحاسوب مقارنةً بالحالة المنشودة، بناءً على نظام تشغيل الحاسوب وغير ذلك. لا يتضمن نظام النشر playbook أوامر محددة، بل يترك هذه القرارات إلى Ansible.
طبعًا من الواضح أنه يشار إلى Ansible بأنها أداة أتمتة وليست أداة تنسيق. قد يكون الفارق طفيفًا، ولا بد من تداخل المصطلحين.
التنسيق والحوسبة السحابية
لنفترض أنك تريد تحويل نوع ملف يرفعه المستخدمون دوريًا إلى خادمك.
سيكون الحل اليدوي أن تتحقق من وجود محتويات مرفوعة على المجلد كل صباح، ثم تفتح الملف، ثم تحفظه بتنسيق مختلف. هذا حل بطيء وغير فعال وغالبًا لن تنفذه إلا مرةً كل 24 ساعةً لأنك شخص مشغول.
تستطيع أتمتة هذه المهمة. إذا كنت ستفعل ذلك، قد تكتب نصًا برمجيًا بلغة PHP أو Node.js يرصد الملفات عندما ترفَع، وينفذ التحويل ويرسل تنبيهًا أو يضيف مدخلًا في سجل log entry لتأكيد نجاح عملية التحويل. يمكنك تطوير النص البرمجي مع الوقت ليتيح للمستخدمين التفاعل مع عملية الرفع والتحويل.
أما إذا أردت اتباع أسلوب التنسيق في هذه العملية، قد تبدأ ببرنامج، سيكون برنامجك المخصص مصممًا لقبول الملفات وتحويلها. قد تشغل هذا البرنامج على حاوية container موجودة على سحابتك cloud، وتستطيع باستخدام OpenShift إطلاق نسخًا إضافيةً من برنامجك عندما تتجاوز حركة البيانات traffic أو الحِمل عتبةً محددةً.
تعلم الأتمتة والتنسيق
لا يوجد تخصص واحد فقط للأتمتة أو التنسيق، فهما ممارستان مجال استخدامهما واسع ومطبَّقتان على العديد من المهام المختلفة في قطاعات مختلفة. لكن تتمثل أول خطوة لتعلمهما في أن تتقن التكنولوجيا التي تنوي أتمتتها وتنسيقها. فمن الصعب تنسيق (تنسيقًا سليمًا) عملية توسع سلسلة من خوادم الويب إذا لم تكن تفهم كيف يعمل خادم الويب، أو ما هي المنافذ التي يجب أن تفتحها أو تغلقها، أو ما هو المنفذ. عمليًا ربما لن تكون الشخص الذي يفتح المنافذ أو يضبط إعدادات الخادم، وقد تسند إليك مهمة إدارة OpenShift دون أن تعرف ما هو محتوى الحاوية أو تهتم به أصلًا. لكن المفاهيم الأساسية مهمة لأنها تطبَّق على نطاق واسع على سهولة الاستخدام وعملية استكشاف الأخطاء وإصلاحها وعلى الأمان.
كما عليك أن تألَف استخدام أكثر الأدوات الشائعة في عالم التنسيق والأتمتة، تعلم مبادئ لغة Bash، وابدأ بالعمل على Git وصمم بعض خطافات Git، وتعلم مبادئ لغة بايثون، واعتد العمل على YAML و Ansible، وجرب العمل على Minikube و OKD و OpenShift.
يعد التنسيق والأتمتة مهارتين مهمتين، إذ تزيدان كفاءة عملك وتعدان إضافتين نافعتين إلى فريقك. استثمر فيهما اليوم وضاعف العمل الذي تنجزه في المستقبل.
ترجمة -وبتصرف- للمقال What's the difference between orchestration and automation? لصاحبه Seth Kenlon.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.