كيف تصبح مهندس DevOps في ستة أشهر أو حتى أسرع. الجزء 4. تغليف البرمجيات

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



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



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

دروس الافتراضية


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

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

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

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

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

لذا ، فإن المنزل أو حتى الشقة باهظة الثمن ، لذا ربما حاول استئجار غرفة مؤقتًا؟ علاوة على ذلك ، يمكنني الدخول وتركه في أي وقت! هذا ما يمثله Docker بشكل أساسي اعتبارًا من ديسمبر 2018.



عامل الولادة


Docker هي تقنية جديدة تعتمد على فكرة قديمة جدًا. احتوى نظام تشغيل FreeBSD على مفهوم محرك السجن الافتراضي ، الذي يعود إلى عام 2000! حقا ، كل ما هو جديد قد نسي جيدا.

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

من الناحية العملية ، هذا يعني أن الشعبية المتزايدة لشركة Docker تعكس بدقة نمو الخدمات المصغرة ، وهو نهج لتطوير البرامج يتم فيه تقسيم البرامج إلى العديد من المكونات المنفصلة. وكل هذه المكونات تحتاج إلى منزلها. يعد نشرها بشكل فردي كتطبيقات جافا قائمة بذاتها أو ملفات تنفيذية ثنائية بمثابة ألم كبير: تختلف الطريقة التي تتحكم بها في تطبيق Java عن الطريقة التي تتحكم بها في تطبيق C ++ ، وهذا بدوره يختلف عن إدارة تطبيق Golang .

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

فوائد عامل الميناء


1. عزل العملية


يسمح Docker لكل خدمة أن تكون لها عملية معزولة تمامًا. تعيش الخدمة (أ) في حاوية صغيرة خاصة بها ، مع كل تبعياتها ، كما تعيش الخدمة (ب) في حاوية خاصة بها مع كل تبعياتها ، ولا تتعارض الخدماتان.

علاوة على ذلك ، إذا فشلت حاوية واحدة ، فستعاني هذه الحاوية فقط.

الحاويات المتبقية وسوف تستمر في العمل. هذه الآلية مفيدة للأمن. إذا تم اختراق الحاوية ، فسيكون من الصعب جدًا (ولكن ليس من المستحيل!) الخروج منها من أجل كسر نظام التشغيل الأساسي.

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

2. النشر


فكر في كيفية بناء التطبيقات المختلفة عمليًا. إذا كان هذا تطبيق Python ، فسيكون به العديد من حزم Python المختلفة. سيتم تثبيت بعضها كوحدات نمطية ، والبعض الآخر مثل rpm أو حزم deb ، والبعض الآخر كتثبيتات بسيطة لاستنساخ git. أو ، إذا تم ذلك باستخدام virtualenv ، فسيكون ملفًا مضغوطًا واحدًا لجميع التبعيات في دليل virtualenv.

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

هل ترى ما الأمر؟ تشكل التطبيقات والتجمعات المختلفة بلغات مختلفة وأوقات التشغيل المختلفة مشكلة عندما يتعلق الأمر بنشر هذه التطبيقات للإنتاج. بالإضافة إلى ذلك ، تتفاقم المشكلة إذا نشأت الصراعات. ماذا لو كانت الخدمة A تعتمد على مكتبة Python v1 وكانت الخدمة B تعتمد على مكتبة Python v2؟ يوجد تعارض هنا ، حيث لا يمكن أن يتواجد v1 و v2 على نفس الجهاز.

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

3. إدارة تنفيذ البرنامج


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

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

منذ ديسمبر 2018 ، لن تضطر إلى الاختيار بين الإطلاق السريع لـ Docker وأمان الأجهزة الافتراضية. Fireckracker مشروع منصة افتراضية خفيفة الوزن، التي قدمتها أمازون ، حاولت الجمع بين أفضل الحلول. ومع ذلك ، فهذه تقنية جديدة تقترب فقط من مرحلة الإنتاج.



ملاحظة: توفر منصة Firecracker أدوات لإنشاء وإدارة بيئات وخدمات معزولة تم إنشاؤها باستخدام نموذج تطوير بدون خادم. كود المشروع مكتوب بلغة الصدأ وموزع بموجب رخصة أباتشي 2.0.

يوفر Firecracker أجهزة افتراضية خفيفة الوزن تسمى microVMs. لعزلها بالكامل ، يتم استخدام تقنيات المحاكاة الافتراضية للأجهزة ، ولكن في نفس الوقت ، يتم توفير الأداء والمرونة على مستوى الحاويات العادية. تعتمد المنصة على شاشة Virtual Machine Monitor (VMM) ، التي تستخدم برنامج مراقبة الأجهزة الافتراضية KVM المدمج في نواة Linux. يعتمد VMM على أساس مشروع crosvm المكتوب بلغة Rust ، التي تطورها Google لإطلاق Linux على ChromeOS. في نهاية عام 2018 ، تم تقسيم قواعد التشفير crosvm و Firecracker ، لكن Amazon تخطط لإرسال تصحيحات للمكونات المستعارة إلى المنبع.

ومع ذلك ، بغض النظر عن مدى جودة Docker ، فإنه يحتوي أيضًا على عيوب.

مقدمة لامدا


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



ثالثًا ، لا أحد يسيطر فعليًا على Docker على هذا النحو. بدلاً من ذلك ، يتم نشره دائمًا تقريبًا كجزء من بنية تنظيم الحاويات المعقدة مثل Kubernetes أو ECS أو docker-swarm أو Nomad. هذه منصات معقدة نوعًا ما تتطلب موظفين خاصين للعمل (سأناقش هذه الحلول بمزيد من التفصيل لاحقًا).

ومع ذلك ، إذا كنت مجرد مطور ، فأنا أريد فقط كتابة رمز وأطلب من شخص ما تشغيله من أجلي. Docker و Kubernetes وغيرها من موسيقى الجاز - هل يجب أن أتعلم كل هذا؟ سأقول هذا: كل هذا يتوقف على الظروف. بالنسبة للأشخاص الذين يريدون فقط أن يقوم شخص آخر بتشغيل التعليمات البرمجية الخاصة بهم ، فإن التخزين السحابي AWS Lambda والأشياء المماثلة هو خيار رائع.

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

ولكن هناك أيضًا نقاط سلبية. أولاً ، يمكن أن تعمل lambdas فقط لمدة أقصاها 15 دقيقة (اعتبارًا من نوفمبر 2018). هذا يعني أن العمليات طويلة المدى ، مثل Kafka أو تطبيقات تكسير الأرقام ، لا يمكن أن تعمل في لامدا.

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

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

ألاحظ أنه في نهاية عام 2018 ، هناك أيضًا حلول حاوية سحابية بدون خادم مثل AWS Fargate. ميكانيكاها تشبه إلى حد كبير آليات Lambda. إذا كنت قد بدأت للتو في تعلم هذه الخدمات ، أوصي بشدة بتجربة Fargate ، وهي طريقة سهلة للغاية لجعل الحاويات تعمل "بشكل صحيح". بالإضافة إلى ذلك ، في 13 يناير 2019 ، أعلنت الخدمات السحابية AWS انخفاضًا كبيرًا في سعر Fargate ، مما يجعلها خيارًا جذابًا للغاية لإطلاق حاويات بدون خادم.



ملخص


يعد كل من Docker و Lambda أكثر الأساليب الحديثة شيوعًا القائمة على السحابة في حزم التطبيقات وتشغيلها وإدارتها. غالبًا ما تكون مجانية ، مناسبة لكل من حالات الاستخدام والتطبيقات المختلفة.

مع ذلك ، يجب أن يكون مهندس DevOps الحديث على دراية جيدة بكليهما. لذلك ، تدريب Docker و Lambda أهداف جيدة على المدى القصير والمتوسط.
ألاحظ أننا حتى الآن تعاملنا مع الموضوعات التي يجب أن يعرفها DevOps صغار المهندسين والمهندسين المتوسطين. في الأقسام التالية ، سنبدأ في مناقشة الأساليب الأكثر ملاءمة لمهندسي DevOps من المستوى المتوسط ​​وكبار. كما هو الحال دائمًا ، لا توجد طرق سهلة لاكتساب المعرفة!

يتبع قريبا جدا ...

القليل من الدعاية :)


أشكركم على البقاء معنا. هل تحب مقالاتنا؟ هل تريد رؤية مواد أكثر إثارة للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية لأصدقائك VPS القائم على السحابة للمطورين من $ 4.99 ، وهو نظير فريد من نوعه لخوادم مستوى الدخول التي اخترعناها لك: الحقيقة الكاملة عن VPS (KVM) E5-2697 v3 (6 نوى) 10GB DDR4 480GB SSD 1Gbps من $ 19 أو كيفية تقسيم الخادم؟ (تتوفر الخيارات مع RAID1 و RAID10 ، حتى 24 مركزًا و 40 جيجابايت DDR4).

Dell R730xd أرخص مرتين في مركز بيانات Equinix Tier IV في أمستردام؟ فقط لدينا 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV من 199 دولارًا في هولندا!Dell R420 - 2x E5-2430 2.2 جيجا هرتز 6C 128 جيجا بايت DDR3 2x960GB SSD 1Gbps 100TB - من 99 دولار! اقرأ عن كيفية بناء مبنى البنية التحتية الفئة c باستخدام خوادم Dell R730xd E5-2650 v4 بتكلفة 9000 يورو مقابل سنت واحد؟

All Articles