Die englische Originalversion dieses Artikels ist hier .Dies ist der Titel eines Alex Viscreanu-Vortrags in Moscow Python Conf ++. Noch zwei Wochen vor der Vorstellung, aber natürlich habe ich Alex schon alles gefragt und unter der Katze werde ich Spoiler und Backstage für die Erstellung des Berichts teilen: Was für ein Open-Source-Zoo macht er mit unserem Python-Code und wie unterscheidet er sich von meinen Kameraden?
- Erzähl mir etwas über Kiwi, was machst du in der Firma?Kiwi.com ist ein Online-Reisebüro mit geheimer Sauce. Das Unternehmen wurde 2012 in der Tschechischen Republik unter dem Namen Skypicker gegründet. 2016 änderte der Dienst seinen Namen und wechselte zu Kiwi.com. Kiwi.com gehört jetzt zu den fünf größten Aggregatoren für Flugtickets in Europa.
Eine coole Funktion von Kiwi.com für Benutzer ist, dass wir Verbindungsoptionen für Fluglinien finden, die normalerweise nicht zusammenarbeiten, und wir kümmern uns um alle Arten von Verbindungsproblemen.
Um unsere Skala zu bewerten, sind hier die Zahlen zu Kiwi.com: 90.000.000+ tägliche Suchanfragen, 25.000 tägliche Verkaufssitze und mehr als 15.000.000.000 verfügbare Flugkombinationen.
Ich bin ein Full-Stack-Entwickler, der von Spanien in die Tschechische Republik gezogen ist, um bei Kiwi.com zu arbeiten. Ich habe mit Python am Backend, JavaScript und dem Zoo verschiedener Art am Frontend gearbeitet: Backbone.js, Angular, Vue.js.
Bei Kiwi.com bin ich dem Infrastruktur-Team beigetreten, daher
entwickle und pflege ich hauptsächlich
interne Tools für Entwickler. Diese Arbeit erfordert fundierte Kenntnisse über Infrastrukturmanagement- und Bereitstellungstools. Ich denke, wir können sagen, dass ich tatsächlich
DevOps mache
, mit einer leichten Verzerrung im Dev-Teil .
- Wie viele Python-Entwickler gibt es in Kiwi? Für welche Projekte verwenden Sie Python?Wir haben mehr als
350 Entwickler , von denen 200 täglich Python verwenden. Kiwi.com verfügt über eine
Microservice-Architektur und jedes Team ist für mehrere Services verantwortlich. Ich glaube nicht, dass man sagen kann, dass einer von ihnen der wichtigste ist oder dass alle Entwickler an einer Sache arbeiten. Außerdem hat das Backend Code geschlossen, und ich kann nicht zu viel darüber sprechen.
Aber wir haben einige interessante Open Source-Projekte auf GitHub:
- Phoenix - ein Tool für Benachrichtigungen in Slack über Vorfälle;
- Crane - ein Skript für die Bereitstellung in Rancher direkt von GitLab aus;
- Der Zoo besteht aus einer Reihe kleinerer Dienste, die dennoch sehr nützlich sein können.
- Was ist mit CI / CD und Bereitstellungsinfrastruktur?Wir verwenden
GitLab als Quellcode-Repository, und natürlich lässt sich
GitLab CI am besten integrieren. Dies ist eine ziemlich gute Lösung, sie ist flexibel und ermöglicht den Bau produktiver Pipelines. Mit einer Reihe von GitLab CI und unserem Crane-Tool können wir Projekte auf Knopfdruck in verschiedenen Umgebungen bereitstellen (oder vollautomatisch, wenn Sie den Mut dazu haben).
Wir stellen allen CI eine Flotte von EC2-Instanzen für die automatische Skalierung zur Verfügung. Aus diesem Grund können Sie bei Bedarf problemlos Strom hinzufügen und sparen, ohne nicht verwendete Server außerhalb der Geschäftszeiten zu halten.
Wir orchestrieren die Infrastruktur mit Hilfe von
Rancher , was sich in unserer Arbeitsbelastung und in unseren Bedingungen perfekt bewährt hat.
- Anscheinend bevorzugen Sie Python. Verwenden Sie andere Sprachen und wofür?Die am zweithäufigsten verwendete Sprache ist
JavaScript , hauptsächlich für das Frontend und die GraphQL-API. Darüber hinaus gibt es Kotlin und Java für Android-Anwendungen. Swift und Objective-C für iOS; GoLang wird an einigen Stellen für eine Reihe von Diensten und C / C ++ für die Flugsuchmaschine verwendet.
- Sie haben das Open-Source-Projekt The Zoo erwähnt. Warum sind Kiwi Open Source Projekte? Was ist Ihr Vorteil?Wie viele andere Unternehmen verwenden wir Open Source in fast allem, was wir entwickeln. Es mag wie ein Klischee klingen, aber wenn Sie so viel bekommen, wäre es schön, etwas dafür zu geben.
Es ist ein Beitrag zum kollektiven Wissen , der uns allen hilft, vorwärts zu kommen.
Neben der Tatsache, dass wir von dem, was wir in Open Source veröffentlichen, profitieren, ist es auch für uns nützlich. Andere Menschen können das Produkt aus einem völlig anderen Blickwinkel betrachten und etwas anbieten, das wir nicht gedacht oder vermutet haben.
- Erzählen Sie uns etwas mehr über den Zoo. Wie viele Repositorys überprüfen Sie damit?Wir haben ungefähr 1.300 Repositories im internen GitLab und ungefähr 100 im öffentlichen GitHub. Insgesamt fast
1500 .
Wir scannen jedes unserer Repositories, auch wenn der Dienst nicht bei The Zoo registriert ist. Die Idee ist, dass erstens, je mehr Analysen, desto genauer die Schlussfolgerungen sind, und zweitens, wenn der Dienst in Zukunft eine Verbindung zum Zoo herstellt, wir bereits Daten über das Verhalten in der Vergangenheit haben.
- Eine beeindruckende Zahl! Und wie viele Fehler finden Sie normalerweise? Erinnerst du dich an einen besonderen Fang?In unserer Datenbank wurden ungefähr
26.000 Probleme gefunden ,
dh ungefähr 20 Probleme pro Projekt. Es stimmt, die meisten von ihnen sind keine "Probleme-Probleme", sondern lediglich Empfehlungen.
Es ist großartig, wenn Sie automatisch signifikante Fehler erkennen können.
Normalerweise wird im Zoo eine neue Prüfung angezeigt, nachdem in einem der Repositorys ein Problem festgestellt wurde. Wenn es uns so vorkommt, dass dies auch an anderen Orten auftreten kann, starten wir eine neue Überprüfung im Zoo. Nur um festzustellen, welche Projekte betroffen sind, und um sicherzustellen, dass wir den Fehler so schnell wie möglich überall beheben können.
Sie sollten nicht erwarten, dass The Zoo kritische Sicherheitsverletzungen oder komplexe Codeprobleme findet. Wir haben andere Tools für sie, und selbst wenn wir sie auf der Plattform implementieren, lohnt es sich, kritische Fehler bereits vor dem Zoo zu erkennen. Vielmehr ist es erforderlich, dass in allen Repositories eine einzige Richtlinie eingehalten wird.
- Das heißt, der Zoo als solcher hat keine Standardprüfungen? Benötigen Sie es, damit der Entwickler bequem die gewünschten Schecks ausstellen kann? Du hast The Zoo gemacht und testest viel von allem damit. Können Sie einige Beispiele nennen?Der Zoo ist eine Plattform, auf der jeder seinen eigenen Test schreiben kann. Unsere Prüfungen sind für unsere eher spezifische Konfiguration geeignet, aber wir möchten sie auch öffnen.
Wie gesagt, die Überprüfungen basieren auf den Problemen, die bei unseren Diensten auftreten. Sie reichen von README-Empfehlungen bis hin zu komplexeren Konfigurationsprüfungen wie Nginx.
- Klingt nach einem "Muss" für jedes große Unternehmen! Werden Sie dies in Ihrem Bericht über Moscow Python Conf ++ ausführlicher erläutern?Ich denke, es wird interessanter sein, wie man es einfach und schnell macht, Tests in allen Repositorys durchzuführen. Aber natürlich werde ich Ihnen erzählen, was wir auf Kiwi.com überprüfen. Ich hoffe, dass dies für Konferenzgäste nützlich sein wird.
Ich fordere alle auf, den Zoo auszuprobieren, damit zu spielen, ihre eigenen Schecks auszustellen und so die allgemeine Wissensbasis zu erweitern. Ich bin sicher, dass Sie darin etwas Passendes für Sie finden können.
- Vielen Dank! Wenn Sie 5 Jahre zurückgehen könnten, welchen Rat würden Sie sich zu Python geben?Es ist nicht einfach ... Ich habe erst vor anderthalb Jahren angefangen, in Python 3 zu schreiben, aber für mich selbst in der Vergangenheit würde ich wärmstens empfehlen, so früh wie möglich zu beginnen.
Python 3 ist eine natürliche Weiterentwicklung der Sprache und definiert die Grundlagen. Jetzt würde ich nie mehr zu Python 2 zurückkehren. Der Punkt ist nicht nur, dass das Ende der Unterstützung nahe ist, sondern größtenteils, dass ich bereits an die Funktionen der neuen Version gewöhnt bin.
In der Zeitreise schnappte ich mir das Gepäck einiger guter Bibliotheken, die ich in dieser Zeit kennengelernt hatte, und einige gute Praktiken, die ich noch lerne.
Kommen Sie am 5. April nach Moscow Python Conf ++ , um die Details der Arbeit mit diesem interessanten Open-Source-Projekt herauszufinden und vielleicht Kiwi-Erfahrung in etwas auszuleihen.