كيف تقوم Kiwi.com باختبار 1000 مشروع من بيثون

النسخة الإنجليزية الأصلية من هذه المقالة هنا .

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

- أخبرني قليلاً عن الكيوي ، ماذا تفعل في الشركة؟

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

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

لتقييم نطاقنا ، فيما يلي أرقام حول Kiwi.com: أكثر من 90،000،000 عملية بحث يوميًا ، 25،000 مقعد مبيعات يوميًا ، وأكثر من 15،000،000،000 مجموعة طيران متاحة.

بالنسبة لي ، فأنا مطور برامج متكامل ، انتقلت من إسبانيا إلى جمهورية التشيك للعمل في Kiwi.com. عملت مع Python على الواجهة الخلفية وجافا سكريبت وحديقة الحيوانات بأنواعها المختلفة على الواجهة الأمامية: Backbone.js و Angular و Vue.js.

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

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

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

ولكن لدينا بعض المشاريع مفتوحة المصدر المثيرة للاهتمام المتاحة على جيثب:

  • Phoenix - أداة للإشعارات في Slack حول الحوادث ؛
  • Crane - سيناريو للنشر إلى Rancher مباشرة من GitLab ؛
  • حديقة الحيوان هي مجموعة من الخدمات الأصغر التي يمكن أن تكون مفيدة للغاية.

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

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

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

نحن ننسق البنية التحتية بمساعدة Rancher ، والتي أثبتت نفسها تمامًا في عبء العمل وفي ظروفنا.

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

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

- لقد ذكرت مشروع المصدر المفتوح The Zoo. لماذا كيوي مشاريع مفتوحة المصدر؟ ما هو صالحك؟

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

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

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

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

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

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

يوجد الآن في قاعدة البيانات الخاصة بنا حوالي 26000 مشكلة ، أي حوالي 20 مشكلة لكل مشروع. صحيح أن معظمهم ليسوا "مشاكل - مشاكل" ، ولكن مجرد توصيات.

إنه لأمر رائع أن تتمكن من التقاط الأخطاء الكبيرة تلقائيًا.

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

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

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

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

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

- يبدو وكأنه "يجب أن يكون" لأي شركة كبيرة! هل ستخبرنا عن هذا بمزيد من التفصيل في تقريرك عن Moscow Python Conf ++؟

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

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

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

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

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

تفضل بزيارة Moscow Python Conf ++ في 5 أبريل لمعرفة تفاصيل العمل مع هذا المشروع المفتوح المصدر المثير للاهتمام ، وربما لاستعارة تجربة Kiwi في شيء ما.

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


All Articles