كيف اختبار كيوي 1 '000 مشاريع بايثون

للناطقين باللغة الروسية نشر النسخة المترجمة هنا .

هذه هي الطريقة التي يتحدث بها Alex Viscreanu عن Moscow Python Conf ++. الآن بعد مرور أسبوعين على المؤتمر ، لكن بالطبع ، سمعت بالفعل عما سيتحدث عنه أليكس. ابحث أدناه عن بعض المفسدين وتحدثوا عن تحضير الكواليس: أي نوع من حديقة الحيوانات مفتوحة المصدر المطورة في الكيوي ، وكيف تختبر شفرة بايثون وما هو الفرق بين حديقة الحيوان وعلى سبيل المثال mypy.

- أخبرنا قليلاً عن الكيوي ونفسك وما هو عملك داخل الشركة؟

Kiwi.com هي وكالة سفر عبر الإنترنت مقرها في جمهورية التشيك. نهدف إلى جعل السفر بسيطًا ويمكن الوصول إليه قدر الإمكان . تأسست الشركة في عام 2012 باسم Skypicker ، ومنذ ذلك الحين أصبحت واحدة من أكبر بائعي تذاكر الطيران على الإنترنت في أوروبا. تمت إعادة تسميته إلى Kiwi.com في عام 2016.

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

تتضمن بعض الأرقام التي نديرها على Kiwi.com أكثر من 90.000.000 عملية بحث يوميًا ، وتباع 25000 مقعدًا يوميًا ، وما مجموعه 15،000،000،000+ مجموعة طيران متاحة.

بالنسبة لي ، أنا Alex Viscreanu ، مطور برامج مكدس كامل انتقل من إسبانيا إلى جمهورية التشيك للعمل في Kiwi.com . لقد عملت بشكل رئيسي مع Python في الخلفية و Javascript ، إلى جانب أطر عمل مثل Backbone.js أو Angular أو Vue.js مؤخرًا على الواجهة الأمامية.

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

- كم عدد مطوري بايثون لديك في كيوي؟ ما هي مشاريع بيثون الرئيسية داخل الشركة؟

لدينا حوالي 350 مطور في جميع مكاتبنا. من بين هؤلاء المطورين الـ 350 ، ربما يعمل 200 منهم مع بيثون بشكل يومي. فيما يتعلق بمشاريعهم الرئيسية ، يستخدم موقع Kiwi.com بنية microservice ، وكل فريق مسؤول عن عدد من الخدمات . كل مشروع له أهميته الخاصة داخل الهندسة المعمارية لدينا.

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

ولكن لدينا بعض المشاريع المثيرة للاهتمام المتاحة للجمهور في مؤسستنا جيثب . هناك يمكنك أن تجد Phoenix ، لدينا أداة الركود إعلان انقطاع ؛ Crane ، نصنا لنشره في Rancher مباشرةً من GitLab ؛ حديقة الحيوان ، وكتالوج خدماتنا ومجموعة من المشاريع الأصغر حجماً ، ولكن لا تزال باردة.

- ماذا عن CI / CD ونشر البنية التحتية؟

نحن نستخدم GitLab كمستودع شفرة المصدر ، وبالتالي ، فإن GitLab CI هو الحل الذي يدمج الأفضل. نعتقد أيضًا أنه حل جيد جدًا. إنها مرنة إلى حد كبير وتتيح لنا امتلاك خطوط أنابيب فعالة ، بالإضافة إلى Crane ، لتوجيه عمليات النشر إلى بيئات مختلفة بنقرة بسيطة (أو تلقائيًا إذا كنت شجاعًا بما يكفي).

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

لتنسيق بنيتنا التحتية ، نستخدم حاليًا Rancher ، والذي أثبت أنه يعمل جيدًا مع الحمل وعدد الخدمات.

- يبدو أن بيثون هي لغتك المفضلة. ما هي اللغات الأخرى التي تستخدمها ولأي أغراض؟

يجب أن تكون JavaScript هي اللغة الثانية الأكثر استخدامًا ، والتي تستخدم أساسًا لجميع واجهات برمجة التطبيقات للواجهة الأمامية و GraphQL. لدينا أيضًا Kotlin و Java لتطبيقات Android ؛ سويفت والهدف- C لنظام iOS ؛ بعض GoLang لمجموعة من الخدمات و C / C ++ لمحرك الرحلات لدينا.

- لقد ذكرت مشروع حديقة الحيوان ، وهو مصدر مفتوح جديد من كيوي. لماذا الكيوي مفتوحة المصدر الأشياء؟ ما هي الفائدة؟

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

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

- المزيد عن حديقة الحيوان. كم عدد المستودعات هل تحقق معها؟

لدينا حوالي 1300 مستودع في GitLab الداخلية وحوالي 100 في GitHub العام لدينا. في المجموع ما يقرب من 1500 .

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

- هذا رقم مثير للإعجاب! وكم من الأخطاء تجد عادة؟ أي المصيد جيدة لتذكر؟

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

جميع القضايا المناسبة هي المصيد جيدة.

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

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

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

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

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

- هذا يبدو وكأنه أشياء يجب على كل شركة كبيرة التحقق منها! هل ستقول المزيد عنها خلال حديثك ؟

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

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

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

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

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

تعال إلى Moscow Python Conf ++ في 5 أبريل للتعرف على تفاصيل العمل مع هذا المشروع المفتوح المصدر المثير للاهتمام وربما بطريقة ما استعارة تجربة Kiwi.

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


All Articles