Wie Kiwi 1'000 Python-Projekte testet

Für Russisch sprechende übersetzte Version hier .

So heißt Alex Viscreanus Vortrag über Moscow Python Conf ++. Jetzt ist es zwei Wochen bis vor der Konferenz, aber natürlich habe ich bereits gehört, worüber Alex sprechen wird. Nachfolgend finden Sie einige Spoiler und Gespräche zur Vorbereitung hinter den Kulissen: Was für ein Open-Source-Zoo wurde in Kiwi entwickelt, wie wird Python-Code getestet und was ist der Unterschied zwischen The Zoo und beispielsweise mypy.

- Erzählen Sie uns etwas über Kiwi, sich selbst und was ist Ihre Arbeit in einem Unternehmen?

Kiwi.com ist ein Online-Reisebüro mit Sitz in der Tschechischen Republik. Wir möchten das Reisen so einfach und zugänglich wie möglich gestalten . Das Unternehmen wurde 2012 als Skypicker gegründet und ist seitdem einer der fünf größten Online-Verkäufer von Flugtickets in Europa. Es wurde 2016 in Kiwi.com umbenannt.

Die Besonderheit, die wir bei Kiwi.com anbieten, ist das virtuelle Interlining , mit dem wir Flüge von Unternehmen verbinden können, die normalerweise nicht zusammenarbeiten, und wir decken die möglichen Verbindungsprobleme ab, die durch verspätete Flüge verursacht werden.

Einige der Zahlen, die wir bei Kiwi.com verwalten, umfassen mehr als 90.000.000 tägliche Suchanfragen, 25.000 täglich verkaufte Sitzplätze und insgesamt mehr als 15.000.000.000 verfügbare Flugkombinationen.

In Bezug auf mich bin ich Alex Viscreanu, ein Full-Stack-Entwickler, der von Spanien nach Tschechien gezogen ist, um bei Kiwi.com zu arbeiten . Ich habe hauptsächlich mit Python im Backend und Javascript zusammen mit Frameworks wie Backbone.js, Angular oder kürzlich Vue.js im Frontend gearbeitet.

Ich bin zu Kiwi.com gekommen, um im Platform-Team zu arbeiten. Daher entwickle ich hauptsächlich interne Tools und behalte einige der von unseren Entwicklern verwendeten Services bei. Da diese Position viel Wissen über Infrastrukturmanagement und Build-Tools erfordert, denke ich, dass der Positionstitel, der am besten zu dem passt, was ich mache, tatsächlich DevOps ist, mit einem stärkeren Dev als Ops-Teil .

- Wie viele Python-Entwickler haben Sie in Kiwi? Was sind ihre wichtigsten Python-Projekte in einem Unternehmen?

Wir haben rund 350 Entwickler in allen unseren Büros. Von diesen 350 Entwicklern arbeiten wahrscheinlich 200 täglich mit Python . In Bezug auf ihre Hauptprojekte verwendet Kiwi.com eine Microservice-Architektur , und jedes Team ist für eine Reihe von Services verantwortlich . Jedes Projekt hat seine eigene Bedeutung in unserer Architektur.

Ich glaube nicht, dass ich Ihnen ein bestimmtes Hauptprojekt nennen kann, das repräsentativ für das ist, woran alle unsere Entwickler arbeiten. Der Backend-Code wird nicht öffentlich bekannt gegeben, daher kann ich nicht viel dazu sagen.

Wir haben jedoch einige interessante Projekte in unserer GitHub- Organisation öffentlich verfügbar . Dort finden Sie Phoenix , unser Tool für Ausfallmeldungen. Crane , unser Skript für die Bereitstellung in Rancher direkt von GitLab aus; Der Zoo , unser Servicekatalog und eine Reihe kleinerer, aber immer noch cooler Projekte.

- Was ist mit CI / CD und der Bereitstellung der Infrastruktur?

Wir verwenden GitLab als Quellcode-Repository. Daher ist GitLab CI die Lösung, die die besten Funktionen integriert. Wir denken auch, dass es eine ziemlich gute Lösung ist. Es ist ziemlich flexibel und ermöglicht uns leistungsfähige Pipelines und zusammen mit Crane direkte Bereitstellungen in verschiedenen Umgebungen mit einem einfachen Klick (oder automatisch, wenn Sie mutig genug sind).

Das gesamte CI wird von einer Flotte von EC2-Instanzen mit automatischer Skalierung ausgeführt, die es uns ermöglichen, während unserer Arbeitszeit so weit wie nötig zu skalieren und gleichzeitig die Kosten niedrig zu halten, indem nicht zu viele nicht verwendete Instanzen außerhalb der Arbeitszeit vorhanden sind.

Für die Orchestrierung unserer Infrastruktur verwenden wir derzeit Rancher, das sich bei unserer Auslastung und Anzahl der Services als gut erwiesen hat.

- Anscheinend ist Python die Sprache Ihrer Wahl. Welche anderen Sprachen verwenden Sie und für welche Zwecke?

Die am zweithäufigsten verwendete Sprache muss JavaScript sein, das hauptsächlich für alle unsere Frontend- und GraphQL-APIs verwendet wird. Wir haben auch Kotlin und Java für die Android-Apps; Swift und Objective-C für iOS; einige GoLang für eine Reihe von Diensten und C / C ++ für unsere Flugmaschine.

- Sie haben das Zoo-Projekt erwähnt, ein neues Open Source von Kiwi. Warum macht Kiwi Open Source Dinge? Was ist der Haken?

Wie viele andere Unternehmen verlassen wir uns bei fast allem, was wir entwickeln, auf Open-Source-Software. Vielleicht klingt es wie ein Klischee, aber wenn man so viel nimmt, ist es auch schön, etwas zurückzugeben und zu diesem kollektiven Wissen beizutragen, das jedem hilft, vorwärts zu kommen.

Wir glauben auch, dass die Projekte, bei denen wir Open Sourcing betreiben, anderen Menschen zugute kommen können, und gleichzeitig können wir auch von anderen Gesichtspunkten oder besseren Lösungen profitieren, die wir nicht in Betracht gezogen haben / über die wir nichts wussten.

- Mehr über Zoo. Wie viele Repositorys überprüfen Sie damit?

Wir haben ungefähr 1300 Repositories in unserem internen GitLab und ungefähr 100 in unserem öffentlichen GitHub. Insgesamt ist fast 1500 .

Wir scannen jedes Repository, unabhängig davon, ob der Dienst im Zoo registriert ist oder nicht. Der Hauptgrund für diese Logik ist, dass die Analysen, die wir beim Scannen sammeln, für uns von Vorteil sind. Wenn der Dienst im Zoo registriert ist, sind die Daten bereits vorhanden.

- Das ist eine beeindruckende Zahl! Und wie viele Fehler finden Sie normalerweise? Hast du gute Fänge, an die du dich erinnern kannst?

Derzeit haben wir in unserer Datenbank ungefähr 26000 Probleme gefunden , was ungefähr 20 Probleme pro Repository bedeutet. Denken Sie daran, dass die meisten von ihnen keine strengen Themen sind, sondern nur Empfehlungen.

Alle richtigen Themen sind gute Fänge.

Der Prozess zum Ausstellen eines Schecks für den Zoo beginnt normalerweise damit, dass ein Problem in einem Repository identifiziert wird. Wenn wir dann der Meinung sind, dass es an mehreren Stellen gefährlich sein könnte, schreiben wir den Scheck für The Zoo, um sicherzustellen, dass wir leicht erkennen können, welche Projekte betroffen sind, damit wir ihn so schnell wie möglich beheben können.

Erwarten Sie keine kritischen Sicherheitsverletzungen oder kniffligen Kontextprobleme. Zu diesem Zweck nutzen wir andere Tools, und selbst wenn wir sie in unsere Plattform integriert haben, ist The Zoo nicht als erste Erkennungslinie für solche Probleme gedacht. In der Regel geht es eher darum, sicherzustellen, dass alle unsere Repositorys einigen gemeinsamen Richtlinien entsprechen.

- Zoo selbst hat standardmäßig keine Schecks. Entwickler können einige Schecks ausstellen. Sie haben den Zoo erstellt und alle Arten von Schecks dafür ausgestellt. Was sind diese Schecks, können Sie einige nennen?

Ja, der Zoo soll eine Plattform sein, auf der jeder seine eigenen Schecks ausstellen kann. Wir haben unsere eigenen, die für unser Setup und unsere Konfiguration sehr spezifisch sind, aber wir möchten sie auch als Open Source anbieten.

Wie ich bereits erläutert habe, basieren unsere Überprüfungen auf den Problemen, die wir bei unseren Diensten festgestellt haben. Diese Probleme reichen von README-Empfehlungen, um das Sammeln von Informationen zu vereinfachen, bis hin zu erweiterten Konfigurationsprüfungen wie Nginx-Konfigurationen.

- Das scheint Dinge zu sein, die jedes große Unternehmen überprüfen sollte! Wirst du während deines Gesprächs mehr darüber erzählen ?

Mehr als der Inhalt der Prüfungen Ich denke, es ist wichtiger, dass sie auf einfache Weise über alle Repositorys laufen. Natürlich werde ich Informationen darüber geben, was wir bei Kiwi.com überprüfen, und hoffentlich werden andere Menschen von unserem Wissen profitieren.

Ich ermutige die Leute total, damit zu spielen, ihre eigenen Schecks auszustellen und zur allgemeinen Wissensdatenbank beizutragen. Ich bin sicher, dass jemand etwas finden wird, das seinen Bedürfnissen entspricht.

- Danke! Wenn Sie vor 5 Jahren zurückkehren können, welchen Python-Rat geben Sie einem jüngeren Ich?

Dies ist nicht einfach ... Als jemand, der vor ungefähr 1,5 Jahren mit dem Schreiben von Python 3 begonnen hat, würde ich wärmstens empfehlen, so schnell wie möglich damit zu beginnen. Es ist eine natürliche Entwicklung der Sprache, die die Grundlagen der Sprache festlegt. Im Moment würde ich nicht mehr mit Python 2 zum Code zurückkehren, und zwar nicht nur wegen des nahen Endes der Unterstützung, sondern auch, weil ich mich mit seinen Funktionen viel wohler fühle.

Natürlich würde ich auch ein Gepäckstück guter Bibliotheken mitnehmen, die ich mit der Zeit entdeckt habe, zusammen mit einigen guten Praktiken, die ich gelernt habe und die ich noch lerne.

Kommen Sie am 5. April nach Moscow Python Conf ++ , um die Details der Arbeit mit diesem interessanten Open-Source-Projekt zu erfahren und vielleicht Kiwis Erfahrung auszuleihen.

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


All Articles