أقترح التعرف على فك شفرة تقرير دينيس ياكوفليف "أتمتة البنية التحتية. لماذا نفعل هذا؟"
تقرير عام 2016 نفسه. تم فك تشفير التقرير خصيصًا لأولئك الذين ينشئون أجهزة افتراضية بأيديهم.
قم بالإبلاغ عن كيفية عملنا في 2GIS الآلي مع البنية التحتية.
"أنت بحاجة إلى الركض بالسرعة لمجرد البقاء في مكانك ، ولكن للوصول إلى مكان ما ، يجب عليك الجري مرتين على الأقل" (أليس في بلاد العجائب).
ماذا تعني هذه العبارة بالنسبة لنا؟ في بيئة تنافسية للغاية ، يتعين على الشركات أن تسعى جاهدة لتسليم منتجاتها إلى المستخدمين في أسرع وقت ممكن. إن تقليل الوقت اللازم لتسويق المعلمة مهمة متعددة المستويات. لحلها ، تحتاج إلى تغيير كل من عمليات التنمية والأدوات. الأساس المهم لعملية التطوير بأكملها هو البنية التحتية. أكبر البنية التحتية ، والمزيد من المشاكل معها ، واستخدام الحالات ، الخ إذا لم تكن جميع العمليات التي تتم بها مؤتمتة ، فسيزيد عدد المشكلات. أحدها هو الوقت الذي يقضيه مطور البرامج في مسائل البنية الأساسية بدلاً من كتابة منطق العمل.
دعنا نتحدث عن:
- ما هي مشاكل البنية التحتية التي واجهتها الفرق؟
- كيف عانت عمليات التطوير والاختبار من ذلك ؛
- كيف قمنا بتنفيذ OpenStack ؛
- ما هي سيناريوهاتنا الخاصة باستخدام OpenStack؟
- كيف تلقّت الأتمتة قوة دفع إضافية في التطوير وبدأ ظهور منتجات داخلية جديدة ؛
- ما هي الجوانب التي تركناها ليست آلية.
عن نفسي شركة 2GIS. لقد عملت في الشركة لمدة عامين.

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

أولاً نفهم البنية التحتية. لماذا نتحدث عنها؟ ما هذا متى نبدأ الحديث عنها؟

منذ اللحظات الأولى من العمل على المنتج وبعض المشاريع ، لدينا سؤال - أين سننشر؟ أين للتحقق من النتائج؟ حيث لاختبار وهلم جرا.

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

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

لم يتم تغطية القضية. وهذا هو ، أنظمة التشغيل المختلفة.

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

لكن مجرد مطابقة نظام التشغيل لا يكفي. نحن بحاجة إلى حزم من نسخة معينة.

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

نحن نطور. منتجاتنا تزداد صعوبة. هذا لم يعد مجرد تطبيق قاعدة بيانات php. نما التطبيق إلى نظام موزع. لدينا منتجات أخرى قادمة.

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

دعنا نلقي نظرة على شركتنا 2GIS.

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

لدينا: منتجات الويب والجوال وتطبيق سطح المكتب. هناك حوالي خمسة وثلاثين فرق مختلفة من مختلف الأحجام.

ما هي المشاكل التي واجهتنا في البنية التحتية؟ في نهاية عام 2013 ، استخدمنا proxmox. هذا هو نظام إدارة الافتراضية. باستخدامه ، يمكنك إنشاء أجهزة KVM افتراضية أو حاويات OpenVZ. ولكن كل هذا يتم باليد من خلال واجهات. من أجل التشغيل الكامل ، لا تزال بحاجة إلى الدخول إلى الجهاز الظاهري وتكوين الشبكة ، DNS.

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

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

بالإضافة إلى وجود API ضعيفة. الإضافات إما مدفوعة أو بيرل.

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

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

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

لذا ، في النهاية ، قادتنا أبحاثنا وتجاربنا إلى برنامج يسمى OpenStack. Softinke بالطبع يبدو وقحا للغاية.

OpenStack هو برنامج كامل ، في الواقع ، هو مجموعة من الخدمات لبناء سحابة عامة أو خاصة. OpenStack هو حل مفتوح المصدر. تتم كتابة جميع الخدمات في بيثون. كل خدمة هي المسؤولة عن مهمتها ، لديها API الخاصة بها.

ويبدو مثل هذا. تذكر هذه الصورة. ثم سنعود لها. هناك خدمات مشتركة (عامة). هناك خدمات لهذا الغرض: حساب ، الشبكات ، التخزين. وتطبيقنا أو مستخدم يعمل مع هذه الخدمات.

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

كثير من الناس يساهمون في هذا القرار. هنا أعطيت فقط قائمة من هذه قمم. هذه القائمة كافية لفهم مدى خطورة المشروع وأي الشركات وكم الموارد التي تستثمر فيها.

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

تلقى مطورو الفريق البنية التحتية كخدمة. كيف تبدو؟

هناك مفهومان من المكدس والقالب. Stack هي مجموعة من الموارد السحابية: الأجهزة الظاهرية والشبكات وسجلات نظام أسماء النطاقات والمزيد. القالب هو وصف لهذا المكدس. في حالة OpenStack ، هذا ملف YAML منتظم. هنا جزء من الملف. تقول أن هناك كيانًا كخادم مزود بخادم OS Nova من النوع الداخلي. لتشغيلها العادي ، تحتاج إلى عنوان IP وسجل DNS. هنا ، يتم قبول معلمات الاسم كمدخلات ، والنكهة هي وصف للموارد التي يحتاجها هذا الخادم. نظام تشغيل الصور. key_name - أي مفتاح عام يجب وضعه عند نشر الخادم. لدينا كل هذه القوالب في مستودع كل منها في بوابة. كل شخص لديه حق الوصول. يمكن للجميع إرسال طلب سحب.

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

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

لدينا أيضًا عقدتان لشبكة KVM تخدم شبكتنا.

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

نحن تدور حول 350 الأجهزة الافتراضية لجميع الفرق.

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

يجب أن تتمتع الفرق بكفاءات معينة.
بادئ ذي بدء ، فمن الطبيعي Ansible. نشر OpenStack هو مكتوب في Ansible. يوجد مشروع OpenStack-Ansible . إذا كنت ترغب في إضافة OpenStack-Ansible إلى احتياجاتك ، فإن الأشخاص الذين سيفعلون ذلك يحتاجون إلى امتلاك Ansible.
تجربة الافتراضية. يجب أن تكون قادرًا على طهي المحاكاة الافتراضية ، وتحتاج إلى ضبطها. فهم كيف يعمل.
نفس الشبكة.
ينطبق الشيء نفسه على خدمات الواجهة الخلفية التي يستخدمها OpenStack لعمله. قاعدة البيانات هذه هي MySQL Galera و RabbitMQ كقائمة انتظار.
فهم كيف يعمل DNS. كيفية تكوينه.
OpenStack هو مكتوب في الثعبان. يجب أن تكون قادرًا على قراءة الكود. من الناحية المثالية ، يجب أن تكون قادرًا على التصحيح. إصلاحات المجتمع البحث. تكون قادرة على لاول مرة رمز. هذا كل شيء مفيد للغاية. إذا كان لدى فريق ما مثل هذا النهج ، فيعرف كيفية استخدام نهج مثل البنية التحتية ككود ، مثل ansible ، على سبيل المثال ، يتم تخزين جميع التغييرات في التعليمات البرمجية ، فلن يواجهوا أي مشاكل تنشأ عند تكوين الأيدي.
التكامل المستمر. تتضمن مجموعة خدمات OpenStack خدمة مثل العاصفة . في ذلك ، يتم كتابة جميع الاختبارات على جميع المكونات. إذا قمنا بتغيير التكوين ، فقم بتشغيل دبلوم منفصل في تثبيت الجهاز متعدد الإمكانات وتشغيل العاصفة - نتطلع إلى معرفة ما إذا كان هناك شيء ما قد وقع معنا. تم تكوين CI ويجب أن يفهم الفريق هذا ويجب أن يكون قادرًا على تكوين كل هذا.

لأن كل شيء يبدو بسيطا وجذاب معين.

لكن عندما تبدأ في الخوض فيه أكثر ، فأنت تدرك أن كل شيء يبدو في الحقيقة هكذا. قد يكون هذا مفاجأة لشخص ما.

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

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

الأسئلة؟
السؤال: كم من الوقت استغرق لنشر OpenStack؟
الإجابة: السؤال معقد لأن لدينا عملية يمكن أن تستوعب مسلسل كوميدي. لديه عتبة دخول عالية. لقد فهمنا البنية التحتية بالكامل ، وبحثنا عن حل - استغرق الأمر ثلاثة أشهر. ثم بعد شهر قمنا بتركيب أول تركيب في مكان ما. أضفنا اثنين من المشاريع هناك. كانوا يعيشون هناك. ثم حدث العامل البشري - أطلقوا النار على رئيس هذا التثبيت. أدركنا أن عدم التسامح مع الخطأ أمر سيء. ثم انتظرنا الحديد.
السؤال: هل تستخدم الدعم المدفوع؟
الجواب: لا ، نحن لا نستخدمها.
السؤال: ما هو إصدار OpenStack الذي تستخدمه؟
الإجابة: إصدارات OpenStack تسمى الكلمات. أولاً كان Juno ، ثم قمنا بالترقية إلى Liberty.
السؤال: هل يتم إنشاء الأجهزة الظاهرية في خط أنابيب التكامل المستمر؟
الإجابة: يمكن أن يسبب البناء في جينكينز حرارة وإنشاء جهاز افتراضي.
سؤال: هل واجهتك مشاكل في مشاركة الموارد؟ تحدث تقريبًا ، يوجد جهازان ظاهريان على نفس الخادم الفعلي. يبدأ أحدهم في تحميل قرص ، على سبيل المثال ، قاعدة بيانات. إذا واجهت ، كيف قررت؟
الإجابة: لم نواجه مشكلات في مشاركة الموارد. منتجات بعضها البعض لا تتداخل كثيرا. وضعنا النصوص. إذا كنت بحاجة إلى تشغيل سيناريو ثقيل ، قم بإجراء اختبارات الحمل ، فأنت بحاجة إلى الذهاب إلى فريق اختبار التحميل ويقومون بإجراء اختبار الحمل.
: - ?
: OpenStack . . . .
: . . OpenStack ?
: . OpenStack . .
: OpenStack?
: . proxmox. OpenStack.
: DevOps?
: DevOps , . , , .
PS 2019 OpenStack heat Terraform .