.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

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

هكذا تبدأ القصة الكسندرا سينشينوفا في DevOpsConfعندما غادر كبير المتخصصين الشركة Windowsتساءل ألكسندر عما يجب فعله الآن. اذهب إلى Linuxبالتأكيد! سيخبرك ألكسندر كيف تمكن من وضع سابقة وترجمة جزء منها Windows التطورات المتعلقة بـ Linux باستخدام مثال مشروع مكتمل لـ 100,000 مستخدم نهائي.

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

كيفية تسليم مشروع إلى RPM بسهولة ويسر باستخدام TFS و Puppet Linux .NET Core؟ كيف تحافظ على إصدارات قاعدة بيانات المشروع إذا كان المطور يسمع مصطلحي Postgres وFlyway لأول مرة، والموعد النهائي بعد غد؟ كيف تدمج مع Docker؟ كيف تحفز مطوري .NET على التخلي عن .NET Core؟ Windows وعصائر سموثي لـ Puppet و Linuxكيفية حل الصراعات الأيديولوجية إذا كنت تخدم Windows هل تفتقر إلى الطاقة أو الرغبة أو الموارد اللازمة لبدء الإنتاج؟ يتناول عرض ألكسندر هذا الموضوع، بالإضافة إلى نشر الويب، والاختبار، والتكامل المستمر، وممارسات TFS في المشاريع الحالية، وبالطبع، الحلول البديلة غير الفعالة والحلول العملية.

لعب الفيديو

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

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

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

لماذا يُستخدم .NET Core بالتزامن مع Linux?

كان هناك عدة أسباب لذلك. فلو خُيِّر معظم الناس بين الدفع وعدم الدفع، لاختاروا الخيار الثاني - كما فعلتُ أنا. تبلغ تكلفة ترخيص MSDB حوالي 1000 دولار، بالإضافة إلى تكلفة صيانة مجموعة من الأجهزة الافتراضية. Windows تصل التكلفة إلى مئات الدولارات. بالنسبة لشركة كبيرة، يُعد هذا مصروفًا كبيرًا. لذلك، مدخرات - السبب الأول. ليست الأهم ، لكنها واحدة من أهمها.

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

تم دمج النظام ببساطة في CI موجودنحن نعتبر أنفسنا شركة DevOps متطورة، ونستخدم Bamboo وJenkins وGitLab CI، لذا فإن معظم عملنا يتم على Linux.

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

متطلبات

اولا في المقام الاول اولا قبل كل شي - راحة الحل الجديد للمطورينلم يكن جميعهم مستعدين للتغيير، خاصة بعد أن تم النطق بالكلمة. Linuxيرغب المطورون في استخدام بيئة Visual Studio المفضلة لديهم، ونظام TFS مع اختبارات البناء الآلية، ومشروبات Smoothies. أما كيفية تسليم مشاريعهم للإنتاج فليست مهمة بالنسبة لهم. لهذا السبب قررنا عدم تغيير العملية المألوفة وتركها كما هي. Windows- التطورات لم تتغير.

بحاجة الى مشروع جديد تضمينها في CI الحالي. كانت القضبان موجودة بالفعل وكان يجب القيام بكل العمل مع مراعاة معايير نظام إدارة التكوين ومعايير التسليم المقبولة وأنظمة المراقبة.

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

الموعد النهائي - أمس.

فوز فريق التطوير

بماذا كان الفريق يعمل حينها؟ Windows?

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

الآن أستطيع أن أقول ذلك بثقة خادم الهوية4 هو بديل مجاني رائع لـ ADFS بميزات مماثلة ، أو أيا كان جوهر إطار الكيان - جنة للمطور ، حيث لا يمكنك عناء كتابة نصوص SQL ، ولكن وصف الاستعلامات في قاعدة البيانات من حيث OOP. ولكن بعد ذلك ، عند مناقشة خطة العمل ، نظرت إلى هذه المجموعة على أنها مسمارية سومرية ، مع الاعتراف فقط بـ PostgreSQL و Git.

في ذلك الوقت ، استخدمنا بنشاط دمية كنظام إدارة التكوين. استخدمنا في معظم مشاريعنا جيت لاب CI, مرن، موازنة الخدمات عالية التحميل باستخدام HAProxy ، تتبع كل شيء Zabbix، حزم جرافانا и محب العمل, جيجروكان كل هذا يدور على قطع من الحديد HPESXi في في إم وير. يعلم الجميع - كلاسيكي من هذا النوع.

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

دعونا ننظر ونحاول فهم ما حدث قبل أن نبدأ كل هذه التدخلات.

ماذا حدث

TFS هو نظام قوي إلى حد ما لا يسلم فقط الكود من المطور إلى آلة الإنتاج النهائية ، ولكن لديه أيضًا مجموعة للتكامل المرن للغاية مع الخدمات المختلفة - لتوفير CI على مستوى النظام الأساسي.

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً
في السابق، كانت جميعها نوافذ. استخدم TFS عدة وكلاء بناء، قاموا ببناء مشاريع متعددة. كان لكل وكيل 3-4 عمال لتوازي المهام وتحسين العملية. ثم، وفقًا لخطط الإصدار، قام TFS بتسليم النسخة المبنية حديثًا إلى Windows-خادم التطبيقات.

إلى أين نريد أن نذهب

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

مشروع

يوفر التطبيق وظائف للتعامل مع البطاقات مسبقة الدفع.

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

العميل

كان هناك نوعان من المستخدمين. الأول يتم الوصول إليها عن طريق تسجيل الدخول بشهادة SSL SHA-2. في ثان تم الوصول إليه عن طريق اسم المستخدم وكلمة المرور.

HAProxy

ثم ذهب طلب العميل إلى HAProxy ، والذي قام بحل المهام التالية:

  • الإذن الأساسي
  • إنهاء SSL ؛
  • ضبط طلبات HTTP ؛
  • طلب الترجمة.

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

انتبه إلى النقطة الثالثة ، بعد قليل سنعود إليها.

الخلفية

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

التوفير مع HAProxy

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

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

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

خطوة ثالثة - تمت إعادة توجيه العميل مرة أخرى إلى السياق الذي جاءت منه.

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

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

ما هو التحسن وأين قمت بحفظه؟

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

كيف ينبغي أن تعمل

إذن، كما وعدتكم – الصندوق السحري. نحن ندرك بالفعل أننا نسير في الاتجاه الصحيح. Linuxلنحدد المهام المحددة التي كان لا بد من حلها.

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

مانيفست الدمى. لتقديم وإدارة تكوين الخدمة والتطبيق ، كان عليك كتابة وصفات رائعة. تُظهر لفة القلم الرصاص ببلاغة مدى سرعة وكفاءة القيام بذلك.

طريقة التوصيل. المعيار هو عدد دورات المحرك في الدقيقة. الجميع يفهم ذلك. Linux لم يكن هناك مفر من ذلك، لكن المشروع نفسه، بعد بنائه، كان عبارة عن مجموعة من ملفات DLL قابلة للتنفيذ. بلغ عددها حوالي 150 ملفًا، مما جعل حجم المشروع كبيرًا جدًا. وكان الحل الأمثل هو تجميع هذه الملفات الثنائية في حزمة RPM ونشر التطبيق من خلالها.

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

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

IdentityServer. ADFS ليس طريقنا ، نحن نغرق في المصدر المفتوح.

لنستعرض المكونات.

الصندوق السحري

يتكون من أربعة أجزاء.

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

Linux وكيل بناء. Linuxلأننا نقوم بتجميع البيانات من أجل ذلك - وهذا منطقي. تم إنجاز هذا الجزء في ثلاث خطوات.

  • قم بإعداد العمال وليس واحدًا ، حيث تم افتراض العمل الموزع على المشروع.
  • قم بتثبيت .NET Core 1.x. لماذا 1.x عندما يكون الإصدار 2.0 متاحًا بالفعل في المستودع القياسي؟ لأنه عندما بدأنا التطوير ، كان الإصدار الثابت 1.09 ، وتقرر إنشاء المشروع من أجله.
  • بوابة 2.x.

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

جيت لاب. يرجى الملاحظة: لا يستخدم المطورون هنا GitLab، بل يستخدمه قسم العمليات للتحكم في إصدارات التطبيقات، وإصدارات الحزم، وحالة جميع Linux-الآلات وتخزن الوصفة - جميع مظاهر الدمى.

دمية - يحل جميع النقاط المثيرة للجدل ويقدم بالضبط التكوين الذي نريده من Gitlab.

نبدأ في الغوص. كيف يتم تسليم DLL إلى RPM؟

تسليم DDL إلى RPM

لنفترض أن لدينا نجم روك لتطوير .NET. يستخدم Visual Studio ويقوم بإنشاء فرع تحرير. بعد ذلك ، يقوم بتحميله إلى Git ، و Git هنا هو كيان TFS ، أي أنه مستودع التطبيقات الذي يعمل معه المطور.

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

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

يتلقى وكيل البناء المصادر ، ويقوم بتنزيل ما يلزم التبعيات من مستودع .NET ، npm ، إلخ. وبعد إنشاء التطبيق نفسه والتعبئة اللاحقة ، يتم إرسال حزمة RPM إلى مستودع RPM.

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

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

بكلمات ، كل شيء بسيط ، ولكن ماذا يحدث داخل وكيل البناء نفسه؟

حزم DLL RPMs

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

تم التخلص من أرشيف ZIP إلى دليل الإنشاء لحزمة RPM. بعد ذلك ، يقوم سكربت Bash بتهيئة متغيرات البيئة ، والعثور على نسخة البناء ، وإصدار المشروع ، والمسار إلى دليل الإنشاء ، وتشغيل RPM-build. عند اكتمال الإنشاء ، يتم نشر الحزمة إلى المستودع المحلي، والذي يقع في وكيل البناء.

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

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

لماذا هذه الآلية المحددة لتسليم حزم RPM إلى المستودع؟ لماذا لا يمكن رفع الحزمة المُنشأة إلى المستودع فورًا؟ هذا شرط أمني. يحد هذا السيناريو من إمكانية قيام أشخاص غير مصرح لهم بتحميل حزم RPM إلى خادم متاح للعامة. Linux-سيارات.

إصدارات قاعدة البيانات

خلال جلسة التشاور التطويرية، اتضح أن الفريق أقرب إلى MS SQL، ولكن في معظم الحالات غير ذلك.Windows كنا نستخدم PostgreSQL على نطاق واسع في العديد من المشاريع. وبما أننا قررنا بالفعل التخلي عن البرامج المدفوعة، فقد بدأنا باستخدام PostgreSQL هنا أيضاً.

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

في هذا الجزء ، أريد أن أخبرك كيف قمنا بتقسيم قاعدة البيانات إلى الإصدار وكيف اخترنا بين Flyway و Entity Framework Core. ضع في اعتبارك إيجابياتهم وسلبياتهم.

سلبيات

Flyway يذهب في اتجاه واحد فقط ، نحن لا يمكننا التراجع هذا عيب كبير. يمكن مقارنته بـ Entity Framework Core من نواحٍ أخرى، من منظور سهولة الاستخدام للمطور. تذكر أننا جعلنا هذا الأمر أولوية قصوى، وكان المعيار الرئيسي هو عدم تغيير أي شيء لـ Windowsالتطورات.

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

Entity Framework Core له ناقص - في ظل الأحمال الثقيلة يبني استعلامات SQL غير الأمثل، ويمكن أن يكون التراجع في قاعدة البيانات كبيرًا. ولكن نظرًا لعدم وجود خدمة محملة بشكل كبير ، فإننا لا نحسب الحمل بمئات RPS ، فقد قبلنا هذه المخاطر وفوضنا المشكلة للمستقبل.

الايجابيات

جوهر إطار الكيان يعمل خارج الصندوق وسهل التطويرو Flyway يندمج بسهولة في CI الحالي. لكننا نقوم بذلك بشكل ملائم للمطورين :)

إجراء Roll-on

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

تستخدم التطبيقات بيانات حساسة ، مثل الرموز وكلمات مرور قاعدة البيانات ، يتم سحب كل هذا في التكوين من Puppet master ، حيث يتم تخزينها في شكل مشفر.

قضايا TFS

بعد أن قررنا وأدركنا أن كل شيء يعمل بالفعل بالنسبة لنا ، قررت أن أرى ما كان يحدث مع التجمعات في TFS بشكل عام لقسم تطوير Win في مشاريع أخرى - هل سنقوم / نفرج بسرعة أم لا ، ووجدت مشاكل كبيرة مع السرعة .

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

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

ثالث - تثبيت npm. اتضح أننا استخدمنا هذا السيناريو في معظم خطوط الأنابيب. لماذا هو سيء؟ يتم تشغيل إجراء تثبيت Npm عند إنشاء شجرة التبعية بتنسيق حزمة lock.json، حيث يتم إصلاح إصدارات الحزم التي سيتم استخدامها لبناء المشروع. الجانب السلبي هو أن Npm install يسحب أحدث إصدارات الحزم من الإنترنت في كل مرة ، وهذا كثير من الوقت في حالة وجود مشروع كبير.

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

حل

  • المصادر في استثناءات AV.
  • تعطيل الفهرسة.
  • اذهب إلى npm ci.

ميزة npm ci هي أننا اجمع شجرة التبعية مرة واحدة، ونحصل على فرصة توفيرها للمطور قائمة الحزم المحدثة، والتي يمكن أن يجربها محليًا بقدر ما يريد. هذا يوفر الوقت المطورين الذين يكتبون الكود.

ترتيب

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

.NET Core على Linuxيشهد مجال DevOps نمواً متزايداً

نحن نستخدم أيضا NuGet، لأنه يخزن بشكل مؤقت أفضل من مديري الحزم الآخرين.

نتيجة

بعد أن قمنا بتحسين عوامل الإنشاء ، تم تقليل متوسط ​​وقت الإنشاء من 12 دقيقة إلى 7.

إذا قمنا بحساب جميع الآلات التي يمكننا استخدامها لـ Windows، ولكن تُرجمت إلى Linux في هذا المشروع، وفرنا حوالي 10000 دولار. وهذا فقط على التراخيص؛ إذا أخذنا المحتوى في الاعتبار، فسيكون المبلغ أكبر.

خطط

في الربع التالي ، خططنا للعمل على تحسين توصيل الكود.

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

ملخص

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

المتحدث الشخصي الكسندر سينشينوف على جيثب.

مؤتمر DevOps هو مؤتمر حول تكامل عمليات التطوير والاختبار والتشغيل للمهنيين من المتخصصين. ما هو سبب المشروع الذي تحدث عنه الإسكندر؟ تم التنفيذ والعمل ، وتم إصدار إصدارين ناجحين في يوم الأداء. على DevOps Conf في RIT ++ في 27 و 28 مايو سيكون هناك المزيد من هذه الحالات من الممارسين. لا يزال بإمكانك القفز إلى آخر سيارة و أرسل تقريرا أو ليس في عجلة من أمره للحجز تذكرة. نراكم في سكولكوفو!

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

شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster