Continuous Delivery made by Yahoo

Screwdriver: Continuous-Delivery-Tool von Yahoo jetzt Open Source

Kypriani Sinaris

© Shutterstock.com / Mr.Teerapong Kunkaeo

Das Continuous-Delivery-Tool Screwdriver ist Open Source verfügbar. Es kommt aus dem Hause Yahoo, wo es intern schon mit Jenkins genutzt wurde. Screwdriver soll unter anderem die Skalierung der Produktion in dynamischen Infrastrukturen vereinfachen – wir stellen den Open-Source-Neuling vor.

Screwdriver besteht aus vier Komponenten: dem Frontend, einem Stateless API, dass sich um die Orchestrierung der User-Interaktionen und um Build-Operationen kümmert, die ausführenden Engines – wie Docker Swarm oder Kubernetes – und einem Launcher, der Commands innerhalb des Container ausführt und kontrolliert.

 

Screwdriver2

Quelle: Yahoo

Zu den Haupt-Features gehören laut Entwicklern die vereinfachten Deployment Pipelines, unter anderem durch ein optimiertes sogenanntes Trunk Developement. Unter einem Trunk versteht man den Hauptentwicklungszweig einer Software. Außerdem hat man sich auf die einfache Handhabung von Rollbacks fokussiert.

Deployment Pipelines einfach instand halten

Deployment Pipelines, die den Code kontinuierlich testen, integrieren und deployen, minimieren das Fehlerrisiko und die Zeit bis Entwickler Feedback erhalten. Das besondere an Screwdriver ist, so die Entwickler, dass es erlaubt, die Pipeline im Code Repository zu konfigurieren. Das vereinfacht den Prozess, denn es handle sich hier um ein Umfeld, das den Entwicklern vertraut ist. Das vereinfache auch die Code Reviews.

Trunk Developement

Wie das Screwdriver-Team in diesem Blogpost berichtet, nehmen sie Pull Requests als Startschuss für Tests. Einen formalen Weg für diese sehen sie als Basis für eine gute Qualität der Code Reviews. Und so soll Screwdriver das funktionale Testen des Codes in Code Reviews ermöglichen. Die Konfiguration dafür ist fest in der Pipeline verankert.

Einfache Rollbacks

Um einfache Rollbacks zu ermöglichen, können Phasen der Pipeline nochmal abgerufen werden. So kann an einen früheren Punkt in der Produktion zurückgekehrt werden. Im Blogpost heißt es dazu:

We leverage features in our PaaS to handle the deployment, but we store and pass metadata to enable us to re-run from a specific git SHA with the same deployment data.

Was bisher geschah

Ursprünglich ging alles mit einem Abstraktions-Layer auf Jenkins los. Die Entwickler berichten, dass mit dem immer breiteren Einsatz von Screwdriver ein einziges Jenkins-Cluster aber zu klein wurde. Daher fügten sie unter anderem die Möglichkeit hinzu, horizontal zu skalieren, während neue Ressourcen hinzugefügt werden, mit denen Pipelines in mehreren Jenkins-Clustern festgelegt werden können.

Nach eigenen Angaben kümmert sich Screwdriver um mehr als 25.000 Builds und 12.00 Git Commits täglich. Das Tool unterstützt unterschiedliche Sprachen und kann sowohl mit VM-basierten Builds und Deployments umgehen als auch mit Container-basierten.

Geschrieben von
Kypriani Sinaris
Kypriani Sinaris
Kypriani Sinaris studierte Kognitive Linguistik an der Goethe Universität Frankfurt am Main. Seit 2015 ist sie Redakteurin bei JAXenter und dem Java Magazin.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.