Pour la version traduite publiée en russe ici .C'est ainsi que le discours d'Alex Viscreanu sur Moscou Python Conf ++ a été nommé. Maintenant, c'est deux semaines avant la conférence, mais bien sûr, j'ai déjà entendu de quoi Alex va parler. Trouvez ci-dessous quelques spoilers et discutez de la préparation des coulisses: quel type de zoo open source développé dans Kiwi, comment il teste le code Python et quelle est la différence entre The Zoo et par exemple mypy.
- Parlez-nous un peu de Kiwi, de vous-même et quel est votre travail au sein d'une entreprise?Kiwi.com est une agence de voyage en ligne basée en République tchèque. Nous visons à
rendre les voyages aussi simples et accessibles que possible . La société a été fondée en 2012 sous le nom de
Skypicker et est depuis devenue l'un des cinq plus grands vendeurs en ligne de billets d'avion en Europe. Il a été renommé Kiwi.com en 2016.
La particularité que nous proposons sur Kiwi.com est l'
entoilage virtuel , qui nous permet de connecter des vols de compagnies qui ne coopèrent généralement pas ensemble, et nous couvrons les éventuels problèmes de connexion causés par des vols retardés.
Certains des chiffres que nous gérons sur Kiwi.com comprennent plus de 90 000 000 de recherches quotidiennes, 25 000 sièges vendus quotidiennement et un total de 15 000 000 000+ combinaisons de vols disponibles.
En ce qui me concerne, je suis Alex Viscreanu, un
développeur full-stack qui a déménagé d'Espagne en République tchèque pour travailler chez Kiwi.com . J'ai travaillé principalement avec Python dans le backend et Javascript, avec des frameworks comme Backbone.js, Angular ou récemment Vue.js, sur le frontend.
J'ai rejoint Kiwi.com pour travailler au sein de l'
équipe Platform , je
développe donc principalement
des outils internes et conserve certains des services utilisés par nos développeurs. Comme ce poste nécessite beaucoup de connaissances sur la gestion des infrastructures et les outils de construction, je pense que le titre du poste qui conviendrait le mieux à ce que je fais est en fait
DevOps, avec une partie Dev plus forte qu'Ops .
- Combien de développeurs python avez-vous dans Kiwi? Quels sont leurs principaux projets Python au sein d'une entreprise?Nous avons
environ 350 développeurs dans tous nos bureaux. Sur ces 350 développeurs,
200 travaillent probablement avec
Python au quotidien. Concernant leurs principaux projets,
Kiwi.com utilise une architecture de microservices , et
chaque équipe est responsable d'un certain nombre de services . Chaque projet a sa propre importance dans notre architecture.
Je ne pense pas pouvoir vous dire un projet principal spécifique qui serait représentatif de ce sur quoi tous nos développeurs travaillent. Le code principal n'est pas rendu public, donc je ne peux pas en dire grand-chose à ce sujet.
Mais nous avons des
projets intéressants accessibles au public sur notre organisation
GitHub . Vous pouvez y trouver
Phoenix , notre outil de relâche d'annonce de panne;
Crane , notre script pour le déploiement sur Rancher directement depuis GitLab;
Le zoo , notre catalogue de services et un tas de projets plus petits, mais toujours cool.
- Et CI / CD et déployer l'infrastructure?Nous utilisons
GitLab comme référentiel de code source et, par conséquent,
GitLab CI est la solution qui intègre le mieux. Nous pensons également que c'est une assez bonne solution. C'est assez flexible et cela nous permet d'avoir des pipelines performants et, avec Crane, des déploiements directs vers différents environnements en un simple clic (ou automatiquement si vous êtes assez courageux).
L'ensemble du CI est effectué par une flotte d'instances de mise à l'échelle automatique EC2, ce qui nous permet d'évoluer autant que nous le devons pendant nos heures de travail tout en réduisant les coûts en n'ayant pas trop d'instances inutilisées en dehors des heures de travail.
Pour orchestrer notre infrastructure, nous utilisons actuellement Rancher, qui s'est avéré très bien fonctionner avec notre charge et notre nombre de services.
- On dirait que Python est votre langue de choix. Quelles autres langues utilisez-vous et à quelles fins?Le deuxième langage le plus utilisé doit être JavaScript, principalement utilisé pour toutes nos API frontales et GraphQL. Nous avons également Kotlin et Java, pour les applications Android; Swift et Objective-C pour les iOS; certains GoLang pour un tas de services et C / C ++ pour notre moteur de vols.
- Vous avez mentionné le projet Zoo, qui est une nouvelle Open Source de Kiwi. Pourquoi Kiwi ouvre-t-il des choses open source? Quel est le problème?Comme beaucoup d'autres sociétés, nous comptons sur des logiciels open source sur presque tout ce que nous développons. Cela ressemble peut-être à un cliché, mais
quand vous en prenez tellement, c'est aussi agréable de redonner et de contribuer à cette connaissance collective qui aide tout le monde à aller de l'avant.
Nous pensons également que les projets que nous proposons en open source peuvent bénéficier à d'autres personnes, et, en même temps, nous pouvons également bénéficier d'autres points de vue ou de meilleures solutions que nous n'avons pas envisagés / ne connaissions pas.
- Plus d'informations sur le zoo. Combien de référentiels vérifiez-vous avec elle?Nous avons environ 1300 référentiels sur notre GitLab interne et environ 100 dans notre GitHub public. Au total, c'est près de
1500 .
Nous analysons chaque référentiel que nous avons, indépendamment du fait que le service soit enregistré dans The Zoo ou non. La raison principale de cette logique est que les analyses que nous recueillons à partir de l'analyse sont bénéfiques pour nous et, de plus, lorsque le service est enregistré dans The Zoo, les données seront déjà là.
- C'est un nombre impressionnant! Et combien d'erreurs trouvez-vous normalement? Avez-vous de bonnes captures à retenir?Actuellement, dans notre base de données, nous avons trouvé environ
26 000 problèmes , ce qui signifie environ 20 problèmes par référentiel. Gardez à l'esprit que la plupart d'entre eux ne sont pas strictement des problèmes mais simplement des recommandations.
Tous les problèmes appropriés sont de bonnes captures.
Le processus d'écriture d'un chèque pour le zoo commence généralement par l'identification d'un problème sur un référentiel. Ensuite, si nous considérons que c'est quelque chose qui pourrait être dangereux d'avoir plus d'endroits, nous procédons à l'écriture du chèque pour le zoo, juste pour nous assurer que nous pouvons facilement identifier quels projets sont affectés afin que nous puissions le réparer dès que possible.
Ne vous attendez pas vraiment à des failles de sécurité critiques ou à des problèmes de contexte délicats. Nous utilisons d'autres outils à cette fin et, même si nous les avons intégrés dans notre plate-forme, The Zoo n'est pas censé être la première ligne de détection de ces problèmes. Il s'agit généralement de s'assurer que tous nos référentiels respectent certaines directives communes.
- Le zoo lui-même n'a pas de chèques par défaut, c'est au développeur d'écrire quelques chèques. Vous avez créé le zoo et vous écrivez toutes sortes de chèques. Quelles sont ces vérifications, pouvez-vous en nommer quelques-unes?Oui, le zoo est censé être une plate-forme où chacun peut faire ses propres chèques. Nous avons les nôtres, qui sont assez particuliers à notre installation et configuration, mais nous voulons également les ouvrir.
Comme je l'ai expliqué précédemment, nos contrôles sont basés sur les problèmes que nous avons trouvés sur nos services. Ces problèmes vont des recommandations README pour garantir une collecte d'informations plus facile aux audits de configuration plus avancés comme les configurations nginx.
- Cela semble être quelque chose que toutes les grandes entreprises devraient vérifier! En direz-vous plus à leur sujet lors de votre entretien ?Plus que le contenu des vérifications, je pense qu'il est plus important de pouvoir les exécuter sur tous les référentiels de manière simple. Bien sûr, je donnerai des informations sur ce que nous, sur Kiwi.com, vérifions, et j'espère que d'autres personnes bénéficieront de nos connaissances.
J'encourage totalement les gens à jouer avec, à écrire leurs propres chèques et à contribuer à la base de connaissances générales. Je suis sûr que quelqu'un trouvera quelque chose qui correspond à ses besoins.
- Merci! Enfin, si vous pouvez revenir il y a 5 ans, quels conseils liés à Python donnerez-vous à un jeune plus jeune?Ce n'est pas facile ... En tant que personne qui vient de commencer à écrire Python 3 il y a environ 1,5 ans, je recommande fortement de commencer le plus tôt possible avec. C'est une évolution naturelle de la langue qui établit les fondamentaux de la langue. Pour le moment, je ne reviendrais pas au code avec Python 2, et pas seulement à cause de la fin du support, mais parce que je me sens beaucoup plus à l'aise avec ses fonctionnalités.
Bien sûr, je porterais aussi un bagage de bonnes bibliothèques que j'ai fini par découvrir avec le temps, ainsi que quelques bonnes pratiques que j'ai apprises et que j'apprends toujours.
Venez à Moscou Python Conf ++ le 5 avril pour apprendre les détails de travailler avec ce projet open source intéressant et peut-être emprunter d'une manière ou d'une autre l'expérience de Kiwi.