لماذا تحتاج DevOps والذين هم المتخصصين DevOps

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

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



لماذا أحتاج DevOps؟


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

ما هو DevOps؟


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

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

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



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


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

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

ما هي ممارسات DevOps؟


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

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

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

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

ممارسات 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 ليس في أي مكان. جيت هو واحد من أكثر الأنظمة شعبية في الوقت الحالي.

4. سحابة مقدمي

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

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

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

5. نظم الأوركسترا: Docker و Kubernetes

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

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

6. أنظمة التكوين: الشيف ، Ansible ، دمية

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

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


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

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

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

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


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

Source: https://habr.com/ru/post/ar465601/


All Articles