لماذا هناك حاجة إلى DevOps ومن هم متخصصو DevOps؟

عندما لا يعمل أحد التطبيقات، فإن آخر شيء تريد سماعه من زملائك هو عبارة "المشكلة في جانبك". ونتيجة لذلك، يعاني المستخدمون - ولا يهتمون بأي جزء من الفريق مسؤول عن الانهيار. ظهرت ثقافة DevOps على وجه التحديد لجمع التطوير والدعم معًا حول مسؤولية مشتركة عن المنتج النهائي.

ما هي الممارسات المضمنة في مفهوم DevOps ولماذا هي مطلوبة؟ ماذا يفعل مهندسو DevOps وماذا يجب أن يكونوا قادرين على فعله؟ يجيب خبراء EPAM على هذه الأسئلة وغيرها: كيريل سيرجيف، مهندس الأنظمة ومبشر DevOps، وإيجور بويكو، مهندس الأنظمة الرائد ومنسق أحد فرق DevOps بالشركة.

لماذا هناك حاجة إلى DevOps ومن هم متخصصو DevOps؟

لماذا هناك حاجة إلى DevOps؟

في السابق، كان هناك حاجز بين المطورين والدعم (ما يسمى بالعمليات). قد يبدو الأمر متناقضًا، لكن كان لديهم أهداف ومؤشرات أداء رئيسية مختلفة، على الرغم من أنهم كانوا يفعلون نفس الشيء. كان الهدف من التطوير هو تنفيذ متطلبات العمل في أسرع وقت ممكن وإضافتها إلى منتج عملي. كان الدعم مسؤولاً عن ضمان عمل التطبيق بشكل مستقر - وأي تغييرات تعرض الاستقرار للخطر. هناك تضارب في المصالح - ويبدو أن DevOps قد حله.

ما هو DevOps؟

إنه سؤال جيد ــ ومثير للجدل: فالعالم لم يتفق بشكل نهائي بعد على هذا الأمر. تعتقد EPAM أن DevOps يجمع بين التقنيات والعمليات وثقافة التفاعل داخل الفريق. تهدف هذه الجمعية إلى تقديم القيمة باستمرار للمستخدمين النهائيين.

كيريل سيرجيف: "يكتب المطورون التعليمات البرمجية، ويراجعها المختبرون، ويقوم المسؤولون بنشر المنتج النهائي للإنتاج. لفترة طويلة، كانت هذه الأجزاء من الفريق متناثرة إلى حد ما، ثم نشأت فكرة توحيدها من خلال عملية مشتركة. "وهكذا ظهرت ممارسات DevOps."

لقد جاء اليوم الذي أصبح فيه المطورون ومهندسو النظام مهتمين بعمل بعضهم البعض. بدأ الحاجز بين الإنتاج والدعم يختفي. هكذا ظهرت DevOps، والتي تتضمن الممارسات والثقافة وتفاعل الفريق.

لماذا هناك حاجة إلى DevOps ومن هم متخصصو DevOps؟

ما هو جوهر ثقافة DevOps؟

الحقيقة هي أن المسؤولية عن النتيجة النهائية تقع على عاتق كل عضو في الفريق. الشيء الأكثر إثارة للاهتمام والصعوبة في فلسفة DevOps هو فهم أن شخصًا معينًا ليس مسؤولاً فقط عن مرحلة عمله، ولكنه مسؤول عن كيفية عمل المنتج بأكمله. المشكلة لا تكمن في أحد، فهي مشتركة، وكل عضو في الفريق يساعد في حلها.

أهم شيء في ثقافة DevOps هو حل المشكلة، وليس مجرد تطبيق ممارسات DevOps. علاوة على ذلك، لا يتم تنفيذ هذه الممارسات "من جانب شخص ما"، بل في المنتج بأكمله. لا يحتاج المشروع إلى مهندس DevOps في حد ذاته - بل يحتاج إلى حل لمشكلة ما، ويمكن توزيع دور مهندس DevOps بين عدة أعضاء في الفريق بتخصصات مختلفة.

ما هي أنواع ممارسات DevOps؟

تغطي ممارسات DevOps جميع مراحل دورة حياة البرنامج.

ايجور بويكو: "الحالة المثالية هي عندما نبدأ في استخدام ممارسات DevOps مباشرة عند بدء المشروع. بالتعاون مع المهندسين المعماريين، نخطط لنوع المشهد المعماري الذي سيحتوي عليه التطبيق، وأين سيتم تحديد موقعه وكيفية التوسع فيه واختيار النظام الأساسي. في الوقت الحاضر، أصبحت هندسة الخدمات الصغيرة رائجة - لذلك نختار نظام التنسيق: يجب أن تكون قادرًا على إدارة كل عنصر من عناصر التطبيق بشكل منفصل وتحديثه بشكل مستقل عن العناصر الأخرى. ممارسة أخرى هي "البنية التحتية كرمز". هذا هو اسم النهج الذي يتم من خلاله إنشاء البنية التحتية للمشروع وإدارتها باستخدام التعليمات البرمجية، وليس من خلال التفاعل المباشر مع الخوادم.

بعد ذلك ننتقل إلى مرحلة التطوير. إحدى أكبر الممارسات هنا هي بناء CI/CD: تحتاج إلى مساعدة المطورين على دمج التغييرات في المنتج بسرعة، وبأجزاء صغيرة، وفي كثير من الأحيان وبدون عناء. يغطي CI/CD مراجعة الكود، وتحميل البرنامج الرئيسي إلى قاعدة الكود، ونشر التطبيق في بيئات الاختبار والإنتاج.

في مراحل CI/CD، يمر الكود عبر بوابات الجودة. وبمساعدتهم، يتحققون من أن الكود الذي يخرج من محطة عمل المطور يلبي معايير الجودة المحددة. تمت إضافة اختبار الوحدة وواجهة المستخدم هنا. لنشر المنتج بشكل سريع وغير مؤلم ومركّز، يمكنك اختيار نوع النشر المناسب.

يتمتع ممارسي DevOps أيضًا بمكان في مرحلة دعم المنتج النهائي. يتم استخدامها للمراقبة والتعليقات والأمان وإدخال التغييرات. تنظر DevOps إلى كل هذه المهام من منظور التحسين المستمر. نحن نقوم بتقليل العمليات المتكررة وأتمتتها. ويتضمن ذلك أيضًا عمليات الترحيل وتوسيع التطبيق ودعم الأداء.

ما هي فوائد ممارسات DevOps؟

إذا كنا نكتب كتابًا دراسيًا عن ممارسات DevOps الحديثة، فستكون هناك ثلاث نقاط في الصفحة الأولى: الأتمتة، وتسريع الإصدارات، والتعليقات السريعة من المستخدمين.

كيريل سيرجيف: "أول شيء هو الأتمتة. يمكننا أتمتة جميع التفاعلات في الفريق: كتابة الكود - طرحه - فحصه - تثبيته - جمع التعليقات - العودة إلى البداية. كل هذا تلقائي.

والثاني هو تسريع الإصدار وحتى تبسيط عملية التطوير. من المهم دائمًا بالنسبة للعميل أن يدخل المنتج إلى السوق في أسرع وقت ممكن ويبدأ في تقديم المزايا في وقت أبكر من نظائره من المنافسين. يمكن تحسين عملية تسليم المنتج إلى ما لا نهاية: تقليل الوقت، وإضافة علامات تحكم إضافية، وتحسين المراقبة.

الثالث هو تسريع ردود فعل المستخدم. إذا كان لديه تعليقات، فيمكننا إجراء التعديلات على الفور وتحديث التطبيق على الفور.

لماذا هناك حاجة إلى DevOps ومن هم متخصصو DevOps؟

كيف ترتبط مفاهيم "مهندس الأنظمة" و"مهندس البناء" و"مهندس DevOps"؟

إنها متداخلة، ولكنها تنتمي إلى مناطق مختلفة قليلاً.

وظيفة مهندس أنظمة في EPAM. يأتون في مستويات مختلفة: من المبتدئين إلى المتخصصين الرئيسيين.

يعد مهندس البناء دورًا يمكن القيام به في المشروع. الآن هذا هو ما يسمى الأشخاص المسؤولين عن CI/CD.

مهندس DevOps هو متخصص ينفذ ممارسات DevOps في المشروع.

إذا قمنا بتلخيص كل ذلك، فسنحصل على شيء مثل هذا: يلعب الشخص الذي يشغل منصب مهندس أنظمة دور مهندس بناء في المشروع ويشارك في تنفيذ ممارسات DevOps هناك.

ما الذي يفعله مهندس DevOps بالضبط؟

يقوم مهندسو DevOps بتجميع كل الأجزاء التي يتكون منها المشروع. إنهم يعرفون تفاصيل عمل المبرمجين والمختبرين ومسؤولي النظام ويساعدون في تبسيط عملهم. إنهم يفهمون احتياجات ومتطلبات العمل ودوره في عملية التطوير - ويبنون العملية مع مراعاة مصالح العميل.

لقد تحدثنا كثيرًا عن الأتمتة - وهذا ما يتعامل معه مهندسو DevOps أولاً وقبل كل شيء. هذه نقطة كبيرة جدًا تتضمن، من بين أمور أخرى، إعداد البيئة.

كيريل سيرجيف: "قبل تنفيذ التحديثات على المنتج، يجب اختبارها في بيئة خارجية. تم إعداده بواسطة مهندسي DevOps. إنهم يغرسون ثقافة DevOps في المشروع ككل: فهم يقدمون ممارسات DevOps في جميع طبقات مشاريعهم. هذه المبادئ الثلاثة: الأتمتة، والتبسيط، والتسريع - تصل إلى كل مكان يمكنها الوصول إليه.

ما الذي يجب أن يعرفه مهندس DevOps؟

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

1. لغات البرمجة

يعرف مهندسو DevOps العديد من اللغات الأساسية للأتمتة ويمكنهم، على سبيل المثال، إخبار المبرمج: "ما رأيك في تثبيت التعليمات البرمجية ليس يدويًا، ولكن باستخدام البرنامج النصي الخاص بنا، الذي يعمل على أتمتة كل شيء؟ سنقوم بإعداد ملف تكوين له، وسيكون مناسبًا لك ولنا لقراءته، وسنكون قادرين على تغييره في أي وقت. وسنرى أيضًا من ومتى ولماذا يقوم بإجراء التغييرات عليه.

يمكن لمهندس DevOps تعلم واحدة أو أكثر من هذه اللغات: Python، وGroovy، وBash، وPowershell، وRuby، وGo. ليس من الضروري معرفتها على مستوى عميق - فأساسيات بناء الجملة ومبادئ OOP والقدرة على كتابة نصوص بسيطة للأتمتة كافية.

2 أنظمة التشغيل

يجب أن يفهم مهندس DevOps الخادم الذي سيتم تثبيت المنتج عليه، والبيئة التي سيتم تشغيله فيها، والخدمات التي سيتفاعل معها. يمكنك اختيار التخصص في Windows أو عائلة Linux.

3. أنظمة التحكم بالإصدارات

بدون معرفة نظام التحكم في الإصدار، لا يوجد مهندس DevOps في أي مكان. يعد Git أحد الأنظمة الأكثر شعبية في الوقت الحالي.

4. مقدمي الخدمات السحابية

AWS، Google، Azure - خاصة إذا كنا نتحدث عن اتجاه Windows.

كيريل سيرجيف: "يزودنا موفرو الخدمات السحابية بخوادم افتراضية تتلاءم تمامًا مع CI/CD.

يتطلب تثبيت عشرة خوادم فعلية حوالي مائة عملية يدوية. يجب تشغيل كل خادم يدويًا، وتثبيته وتكوين نظام التشغيل المطلوب، وتثبيت تطبيقنا على هذه الخوادم العشرة، ثم التحقق مرة أخرى من كل شيء عشر مرات. تستبدل الخدمات السحابية هذا الإجراء بعشرة أسطر من التعليمات البرمجية، وينبغي أن يكون مهندس DevOps الجيد قادرًا على العمل معها. وهذا يوفر الوقت والجهد والمال – سواء بالنسبة للعميل أو للشركة."

5. أنظمة التنسيق: Docker وKubernetes

كيريل سيرجيف: "تنقسم الخوادم الافتراضية إلى حاويات، يمكننا في كل منها تثبيت تطبيقنا. عندما يكون هناك الكثير من الحاويات، تحتاج إلى إدارتها: تشغيل إحداها، وإيقاف تشغيل الأخرى، وإجراء نسخ احتياطية في مكان ما. يصبح هذا معقدًا للغاية ويتطلب نظام تنسيق.

في السابق، كان يتم التعامل مع كل تطبيق بواسطة خادم منفصل - وأي تغييرات في تشغيله يمكن أن تؤثر على إمكانية خدمة التطبيق. بفضل الحاويات، تصبح التطبيقات معزولة وتعمل بشكل منفصل - كل منها على جهازها الظاهري. في حالة حدوث فشل، ليست هناك حاجة لإضاعة الوقت في البحث عن السبب. من الأسهل تدمير الحاوية القديمة وإضافة حاوية جديدة."

6. أنظمة التكوين: Chef، Ansible، Puppet

عندما تحتاج إلى صيانة أسطول كامل من الخوادم، يتعين عليك القيام بالكثير من نفس النوع من العمليات. إنها عملية طويلة وصعبة، كما أن العمل اليدوي يزيد من احتمالية الخطأ. هذا هو المكان الذي تأتي فيه أنظمة التكوين للإنقاذ. وبمساعدتهم، يقومون بإنشاء برنامج نصي يسهل قراءته للمبرمجين ومهندسي DevOps ومسؤولي النظام. يساعد هذا البرنامج النصي على تنفيذ نفس العمليات على الخوادم تلقائيًا. وهذا يقلل من العمليات اليدوية (وبالتالي الأخطاء).

ما نوع المهنة التي يمكن لمهندس DevOps أن يبنيها؟

يمكنك تطوير أفقيا وعموديا.

ايجور بويكو: "من وجهة نظر التطوير الأفقي، يتمتع مهندسو DevOps الآن بأوسع الآفاق. كل شيء يتغير باستمرار، ويمكنك بناء المهارات في مجموعة متنوعة من المجالات: من أنظمة التحكم في الإصدار إلى المراقبة، ومن إدارة التكوين إلى قواعد البيانات.

يمكنك أن تصبح مهندس نظام إذا كان الموظف مهتمًا بفهم كيفية عمل التطبيق في جميع مراحل دورة حياته - من التطوير إلى الدعم.

كيف تصبح مهندس DevOps؟

  1. اقرأ مشروع Phoenix ودليل DevOps. هذه هي الركائز الحقيقية لفلسفة DevOps، وأولها عمل خيالي.
  2. تعلم التقنيات من القائمة أعلاه: بنفسك أو من خلال الدورات التدريبية عبر الإنترنت.
  3. انضم كمهندس DevOps لمشروع مفتوح المصدر.
  4. تدرب وقدم ممارسات DevOps في مشاريعك الشخصية والعملية.

المصدر: www.habr.com

إضافة تعليق