La version originale anglaise de cet article est ici .C'est le titre d'une conférence d'Alex Viscreanu à Moscou Python Conf ++. Deux semaines de plus avant la représentation, mais j'ai bien sûr déjà interrogé Alex sur tout et sous le chat, je partagerai les spoilers et les coulisses de la préparation du rapport: quel type de zoo open source fait ce qu'il fait avec notre code Python et en quoi il diffère des camarades mypy.
- Parlez-moi un peu de Kiwi, que faites-vous dans l'entreprise?Kiwi.com est une agence de voyage en ligne à la sauce secrète. L'entreprise a été fondée en République tchèque en 2012 sous le nom de Skypicker, et en 2016, le service a changé de nom et a déménagé sur Kiwi.com. Kiwi.com fait maintenant partie des cinq plus grands agrégateurs de billets d'avion en Europe.
Une fonctionnalité intéressante de Kiwi.com pour les utilisateurs est que nous trouvons des options de correspondance pour les vols des compagnies aériennes qui ne fonctionnent généralement pas ensemble, et nous nous occupons de toutes sortes de problèmes de connexion.
Pour évaluer notre échelle, voici les chiffres concernant Kiwi.com: 90 000 000+ recherches quotidiennes, 25 000 sièges de vente quotidiens et plus de 15 000 000 000 de combinaisons de vols disponibles.
Quant à moi, je suis un développeur full-stack, déplacé d'Espagne en République Tchèque pour travailler chez Kiwi.com. J'ai travaillé avec Python sur le backend, JavaScript et le zoo de différents types sur le frontend: Backbone.js, Angular, Vue.js.
Chez Kiwi.com, j'ai rejoint l'équipe infrastructure, j'ai donc principalement
développé et entretenu des outils internes pour les développeurs. Ce travail nécessite une connaissance approfondie de la gestion des infrastructures et des outils de déploiement, je pense que nous pouvons dire que je fais actuellement du
DevOps, avec un léger biais dans la partie Dev .
- Combien de développeurs Python y a-t-il à Kiwi? Pour quels projets utilisez-vous Python?Nous avons plus de
350 développeurs , 200 d'entre eux utilisent Python chaque jour. Kiwi.com possède une
architecture de microservices et chaque équipe est responsable de plusieurs services. Je ne pense pas qu'on puisse dire que l'un d'eux est le plus important, ou que tous les développeurs travaillent sur une chose. De plus, le backend a fermé le code, et je ne peux pas trop en parler.
Mais nous avons quelques projets open source intéressants disponibles sur GitHub:
- Phoenix - un outil pour les notifications dans Slack sur les incidents;
- Crane - un script pour le déploiement vers Rancher directement depuis GitLab;
- Le Zoo est un ensemble de petits services qui peuvent néanmoins être très utiles.
- Qu'en est-il du CI / CD et de l'infrastructure de déploiement?Nous utilisons
GitLab comme référentiel de code source et, bien sûr,
GitLab CI s'intègre mieux avec lui. C'est une assez bonne solution, elle est flexible et vous permet de construire des pipelines productifs. Et en utilisant un tas de GitLab CI et notre outil Crane, nous pouvons déployer des projets dans différents environnements en un seul clic (ou de manière entièrement automatique si vous avez le courage).
Nous fournissons à tous les CI une flotte d'instances de mise à l'échelle automatique EC2. Pour cette raison, vous pouvez facilement ajouter de l'énergie au besoin et économiser sans tenir les serveurs inutilisés pendant les heures creuses.
Nous orchestrons l'infrastructure avec l'aide de
Rancher , qui a parfaitement fait ses preuves dans notre charge de travail et dans nos conditions.
- Il semble que vous préfériez Python. Utilisez-vous d'autres langues et pour quoi faire?Le deuxième langage le plus utilisé est
JavaScript , principalement pour le frontend et l'API GraphQL. De plus, il existe des applications Kotlin et Java pour Android; Swift et Objective-C pour iOS; GoLang est utilisé à certains endroits pour un ensemble de services, et C / C ++ pour le moteur de recherche de vols.
- Vous avez mentionné le projet open source The Zoo. Pourquoi les projets open source Kiwi? Quel est votre avantage?Comme beaucoup d'autres sociétés, nous utilisons l'open source dans presque tout ce que nous développons. Cela peut ressembler à un cliché, mais quand vous obtenez autant, ce serait bien de donner quelque chose en retour.
C'est une contribution à la connaissance collective qui nous aide tous à aller de l'avant.
Outre le fait que nous bénéficierons de ce que nous publions en open source, cela nous est également utile. D'autres personnes peuvent regarder le produit sous un angle complètement différent et proposer quelque chose que nous n'avons pas pensé ou soupçonné.
- Parlez-nous un peu plus du Zoo. Combien de référentiels vérifiez-vous avec elle?Nous avons environ 1 300 référentiels dans GitLab interne et environ 100 dans GitHub public. Près de
1500 au total.
Nous analysons chacun de nos référentiels, même si le service n'est pas enregistré auprès du Zoo. L'idée est que, d'une part, plus les analyses sont nombreuses, plus les conclusions sont précises et, d'autre part, lorsque le service se connectera à l'avenir au Zoo, nous disposerons déjà de données sur le comportement passé.
- Un nombre impressionnant! Et combien d'erreurs trouvez-vous habituellement? Vous souvenez-vous d'une prise spéciale?Maintenant, dans notre base de données, il y a environ
26 000 problèmes trouvés , soit environ 20 problèmes par projet. Certes, la plupart d'entre eux ne sont pas des "problèmes-problèmes", mais simplement des recommandations.
C'est formidable lorsque vous pouvez détecter automatiquement des erreurs importantes.
Habituellement, une nouvelle vérification apparaît dans The Zoo après qu'un problème a été découvert dans l'un des référentiels. S'il nous semble que cela peut également apparaître dans d'autres endroits, nous commençons une nouvelle vérification dans The Zoo. Juste pour faciliter la détermination des projets concernés et nous assurer que nous pouvons corriger l'erreur partout dans les plus brefs délais.
Vous ne devez pas vous attendre à ce que le Zoo trouve des failles de sécurité critiques ou des problèmes de code complexes. Nous avons d'autres outils pour eux, et même si nous les implémentons dans la plate-forme, cela vaut la peine de détecter les bogues critiques avant même le zoo. Elle est plutôt nécessaire pour qu'une seule directive soit respectée dans tous les référentiels.
- Autrement dit, le zoo en tant que tel n'a pas de contrôles par défaut? En avez-vous besoin pour que le développeur puisse écrire les chèques qu'il souhaite? Vous avez créé The Zoo et testez beaucoup de tout avec. Pouvez-vous donner quelques exemples?Certes,
le zoo est une plate-forme dans laquelle chacun peut écrire son propre test. Nos contrôles sont adaptés à notre configuration plutôt spécifique, mais nous voulons également les ouvrir.
Comme je l'ai dit, les contrôles sont basés sur les problèmes rencontrés dans nos services. Ils vont des recommandations README aux vérifications de configuration plus complexes, telles que nginx.
- Cela ressemble à un "must have" pour toute grande entreprise! Allez-vous en parler plus en détail dans votre rapport sur Moscow Python Conf ++?Je pense qu'il sera plus intéressant de savoir comment faciliter et accélérer l'exécution de tests dans tous les référentiels. Mais, bien sûr, je vais vous parler de ce que nous vérifions sur Kiwi.com. J'espère que cela sera utile aux invités de la conférence.
J'invite tout le monde à essayer The Zoo, à jouer avec, à écrire leurs propres chèques et à élargir ainsi la base de connaissances générales. Je suis sûr que vous y trouverez quelque chose qui vous convient.
- Merci! Enfin, si vous pouviez remonter 5 ans en arrière, quels conseils vous donneriez-vous sur Python?Ce n'est pas facile ... J'ai commencé à écrire en Python 3 il y a seulement un an et demi, mais pour moi dans le passé, je recommanderais fortement de commencer le plus tôt possible.
Python 3 est une évolution naturelle du langage , il définit les bases. Maintenant, je ne reviendrai jamais sur Python 2. Le fait n'est pas seulement que la fin de son support est proche, mais pour la plupart, je suis déjà habitué aux fonctionnalités de la nouvelle version.
De retour dans le temps, j'attrapais le bagage de bonnes bibliothèques que j'ai rencontrées à cette époque, et de bonnes pratiques que j'apprends encore.
Venez à Moscou Python Conf ++ le 5 avril pour découvrir les détails de travailler avec ce projet open source intéressant et, peut-être, pour emprunter l'expérience Kiwi dans quelque chose.