Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Dies ist ein Buch über Continuous Deployment: die Praxis, deine Software-Pipeline so zu strukturieren, dass sie völlig frei von manuellen Eingriffen ist. Bei dieser Methode wird jeder Code-Commit, der die Quality Gates besteht, automatisch in die Produktion übernommen.
Dieses Thema bringt ein oft diskutiertes Spannungsverhältnis in der Softwareentwicklung an die Oberfläche: schnelles Erreichen der Produktionsreife versus sicheres Erreichen der Produktionsreife. Oberflächlich betrachtet mag Continuous Deployment wie Ersteres aussehen, aber bei genauerem Hinsehen entspricht es tatsächlich Letzterem. Bei noch genauerer Betrachtung würde ich sagen, dass wir uns nicht entscheiden müssen.
In den letzten Jahrzehnten haben wir eine Reihe von Praktiken gesehen, die zeigen, dass Geschwindigkeit und Zuverlässigkeit bei der Bereitstellung von Software tatsächlich Hand in Hand gehen. DevOps, eXtreme Programming (XP), Continuous Integration (CI) und Continuous Delivery (CD): Diese Praktiken haben immer wieder gezeigt, dass kürzere Iterationen die Stabilität von Produktionssystemen verbessern, anstatt sie zu behindern. Das liegt daran, dass kürzere Iterationen den Umfang der Änderungen in jeder Version reduzieren, die Kommunikation zwischen den Rollen fördern, eine Kultur der Automatisierung unterstützen und frühes und kontinuierliches Feedback ermöglichen. Insgesamt verbessern kürzere Iterationen und häufige Einsätze die Stabilität und Qualität der Software.
Ich halte die kontinuierliche Bereitstellung für den natürlichen nächsten Schritt in dieser Denkweise.
Während meiner Karriere als Softwareberater hatte ich das Glück, mit mehreren Unternehmen zusammenzuarbeiten, die bereits Continuous Deployment praktizierten oder es kurz nach meinem Eintritt in ihr Team einführten. Ich war von der Einfachheit und Schnelligkeit begeistert und bin bis heute der Meinung, dass dies die effizienteste Art der Softwareentwicklung ist, über die ich je gestolpert bin. Ich merkte aber auch, dass nicht alle damit zurechtkamen. Das galt vor allem für jüngere Kollegen oder neue Mitarbeiter, die noch nie mit dieser Methode gearbeitet hatten. Es ist verständlich, dass es ein ziemlicher Kulturschock sein kann, wenn ein Code innerhalb von Minuten in Produktion geht, wenn man lange Phasen manueller Tests, lange Funktionszweige und manuelle Genehmigungen gewohnt ist. Ich wollte helfen, indem ich Ressourcen zur Verfügung stelle, aber ich habe festgestellt, dass es keine Literatur zu diesem Thema gibt. Das Einzige, was ich mitteilen konnte, war, wie ich meinen eigenen Arbeitsablauf angepasst habe und wie ich angefangen habe, meinen Code anders zu schreiben, als ich wusste, dass die Übergabe an die Produktion fast sofort erfolgen würde.
Ich stellte fest, dass ich mich oft genug wiederholte, in einem Team nach dem anderen, so dass es sich vielleicht lohnte, diese Idee mit einem größeren Publikum zu teilen. Ich wusste es damals nicht, aber in meinem Kopf hatte ich bereits begonnen, den Inhalt dieses Buches zu schreiben.
Ich habe festgestellt, dass Continuous Deployment eine Erweiterung von Continuous Delivery ist, die so wichtig ist, dass sie eine eigene Diskussion verdient. Es ist wichtig, weil es zusätzliche Vorteile bringt, zusätzliche Nachteile hat und einige zusätzliche Überlegungen erfordert, damit es in einem Team gut funktioniert. All diese "Extras" werden wir in diesem Buch behandeln. Wir bauen auf der Grundlage von Continuous Delivery auf und erforschen die vollautomatisierte kontinuierliche Bereitstellung für die Produktion.
Für wen dieses Buch ist
Ich habe dieses Buch für Kollegen aus der Softwarebranche geschrieben, vor allem für Softwareentwickler, die den Weg ihres Codes bis zur Produktion verbessern wollen.
Dieses Buch ist besonders für dich geeignet, wenn du:
Du kennst dich bereits mit Continuous Delivery aus, aber nicht mit Continuous Deployment, und du bist neugierig, mehr darüber zu erfahren.
Du kennst dich mit Continuous Deployment aus und fragst dich, ob dies ein gangbarer nächster Schritt für dein Team ist.
Du hast dich bereits für eine kontinuierliche Bereitstellung entschieden, aber du willst wissen, was dich erwartet, wenn du die manuelle Tür zur Produktion geöffnet hast.
Du startest ein neues Produkt und willst die Gelegenheit nutzen, um Continuous Deployment auszuprobieren, aber du fragst dich, wie du es von Grund auf einrichten sollst.
Du bist dabei, einem Team beizutreten, das bereits Continuous Deployment einsetzt, und du möchtest verstehen, warum und wie sie es tun.
Auch wenn sich dieses Buch in erster Linie an Menschen richtet, die täglich Code schreiben, kann es auch für Menschen in anderen Rollen wertvoll sein, z. B. für QA-Ingenieure, Product Owner, Produktmanager, Scrum Master, Engineering Manager und Menschen in einer Vielzahl von technischen Führungspositionen. Wenn deine Berufsbezeichnung auf dieser Liste steht, könnte dich vor allem Teil I, "Continuous Deployment", interessieren, der einen ganzheitlichen Blick auf die Praxis bietet. Außerdem wird in den Kapiteln "Vor der Entwicklung" (Teil II) und "Nach der Entwicklung" (Teil IV) erklärt, wie du andere Teamrollen in einen Workflow für die automatisierte Bereitstellung in der Produktion einbindest, was eine wesentliche Voraussetzung dafür ist, dass du das volle Potenzial dieser Methode ausschöpfen kannst.
Wenn du ein Entwickler bist, solltest du dich vor allem auf Teil III, "Während der Entwicklung" konzentrieren, in dem ausführlich beschrieben wird, wie du den Entwicklungsprozess in kleine, in sich geschlossene Produktionsimplementierungen aufteilst. Außerdem solltest du einen Blick auf Teil V, "Fallstudien", werfen, in dem du Beispiele aus der Praxis von Unternehmen findest, die Continuous Deployment praktizieren und sehen, wie sie ihre Pipelines und Tools strukturieren.
Was du brauchst, um dieses Buch zu lesen
Da Continuous Deployment auf vielen anderen Konzepten aufbaut, die ihren Ursprung in der Agile-Bewegung haben, wie DevOps, CI und CD, solltest du zumindest oberflächlich mit ihnen vertraut sein, wenn du den größten Nutzen aus diesem Buch ziehen willst.
Glücklicherweise kennen die meisten Unternehmen diese Praktiken heute und setzen sie bereits bis zu einem gewissen Grad um. In Kapitel 1 werde ich XP, DevOps, CI und CD gründlich rekapitulieren, damit du dir das "Warum" noch einmal vor Augen führen und dein Gedächtnis auffrischen kannst.
Wenn du und/oder dein Team jedoch noch nie von diesen Praktiken gehört haben, solltest du dich mit ihnen beschäftigen, bevor du eine kontinuierliche Bereitstellung in Erwägung ziehst, und dieses Buch für später aufheben.
Was dieses Buch behandeln wird
Das Buch besteht aus fünf Teilen, die wie folgt gegliedert sind:
- Teil I, "Kontinuierliche Bereitstellung"
Dieser Teil des Buches enthält die gesamte Theorie und erklärt alles, was du über Continuous Deployment als Praxis wissen musst. Kapitel 1 bietet eine Einführung und den historischen Kontext, Kapitel 2 erklärt die Vorteile, Kapitel 3 befasst sich mit den Folgen und den wichtigsten "Problemen", Kapitel 4 erklärt die Voraussetzungen für die Einführung und Kapitel 5 befasst sich mit den Herausforderungen.
- Teil II, "Vor der Entwicklung"
Hier werden die Dinge etwas praktischer. In diesem Teil des Buches geht es um alle Aktivitäten, die die kontinuierliche Bereitstellung unterstützen, bevor das Team mit dem Schreiben von Code beginnt, und hier stelle ich das Beispiel vor, das im Rest des Buches verwendet wird. In Kapitel 6 wird erklärt, wie du dein Product Backlog am besten aufteilst, um häufige Deployments zu ermöglichen, während sich Kapitel 7 darauf konzentriert, wie du funktionsübergreifende Anforderungen bündelst, um jedes Inkrement produktionsreif zu machen.
- Teil III, "Während der Entwicklung"
In diesem Teil des Buches gehen wir auf die Details ein, die über Erfolg oder Misserfolg des Continuous Deployment entscheiden können: wie man die tägliche Entwicklung als eine Abfolge von kleinen und sicheren Produktionsinkrementen durchführt. In Anlehnung an das in Teil II vorgestellte Beispiel werden in diesem Teil auch ausführliche Codebeispiele vorgestellt. Die Beispiele sind in drei Technologien geschrieben, die ich aufgrund ihrer Beliebtheit in der Branche ausgewählt habe: JavaScript mit React.js, Java mit SpringBoot und SQL. Selbst wenn du sie noch nie benutzt hast, sind sie so beliebt, dass du sie wahrscheinlich gut genug kennst, um den Code zu lesen, auch wenn du in anderen Stacks arbeitest. In Kapitel 8 wird das Hinzufügen einer neuen Funktion nach und nach gezeigt, und in Kapitel 9 geht es darum, wie man komplexe Funktionen, die bereits in Betrieb sind, schrittweise umgestaltet. In Kapitel 10 schließlich geht es um die Feinheiten des Refactorings von Datenspeichern mit automatisierten Deployments.
- Teil IV, "Nach der Entwicklung"
InTeil IV erfährst du alles über die Aktivitäten, die nach der Entwicklung stattfinden, wo die kontinuierliche Bereitstellung wirklich zum Tragen kommt. In Kapitel 11 geht es um die sichere Durchführung von Sondierungstests in der Produktion und in Kapitel 12 um alle Arten von Releases und A/B-Tests.
- Teil V, "Fallstudien"
Teil V schließlich besteht aus einer Reihe von Fallstudien, die von Branchenkollegen verfasst wurden. Sie enthalten Erfahrungen aus erster Hand von Unternehmen, die Continuous Deployment "in freier Wildbahn" einsetzen, einschließlich der Geschichte, wie sie dorthin gekommen sind, welchen Herausforderungen sie gegenüberstanden und wie sie den Weg ihrer Produkte bis zur Produktion strukturieren.
In diesem Buch verwendete Konventionen
In diesem Buch werden die folgenden typografischen Konventionen verwendet:
- Kursiv
-
Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.
Constant width
-
Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.
Hinweis
Dieses Element steht für einen allgemeinen Hinweis.
Warnung
Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.
O'Reilly Online Learning
Hinweis
Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.
Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter https://oreilly.com.
Wie du uns kontaktierst
Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Nord
- Sebastopol, CA 95472
- 800-889-8969 (in den Vereinigten Staaten oder Kanada)
- 707-827-7019 (international oder lokal)
- 707-829-0104 (Fax)
- support@oreilly.com
- https://www.oreilly.com/about/contact.html
Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/continuous-deployment aufrufen .
Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter https://oreilly.com.
Finde uns auf LinkedIn: https://linkedin.com/company/oreilly-media
Schau uns auf YouTube: https://youtube.com/oreillymedia
Danksagungen
Wenn Leute sagen: "Dieses Buch wäre nicht möglich gewesen ohne...", finde ich, dass das meistens übertrieben ist. In meinem Fall ist es aber wirklich wahr. Dieses Buch würde es definitiv nicht geben, wenn ich nicht die Unterstützung von zwei Kollegen bei Thoughtworks erhalten hätte: Chris Ford und Andrew-Harmel Law, die mich während des gesamten Prozesses ermutigten und mir durchdachte technische Überprüfungen und Anregungen gaben (von denen einige in dieses Buch eingeflossen sind). Das Gleiche gilt für mehrere Menschen in meinem Privatleben, vor allem aber für Fergus Orbach, der mich mit allerlei technischen Hin- und Herüberlegungen unterstützt und meine Leidenschaft für dieses Thema angefacht hat. Ich danke euch beiden dafür, dass ihr mich ein Jahr lang unterstützt habt, während ich dieses Buch geschrieben habe. Aus dem gleichen Grund möchte ich meinen guten Freunden Rares Musina, Emma Baddeley, Anthony Scatchell, Giulia Mercurio, Glenn Wolfschoon, Nicolò Gardoni, Francesco Guatieri und Davide Orsucci danken.
Ich möchte mich auch bei den Mitarbeitern von O'Reilly bedanken, die dieses Projekt möglich gemacht haben, insbesondere bei meinen Redakteurinnen Shira Evans und Louise Corrigan. Es war ein Vergnügen, mit euch zu arbeiten. Ich würde dieser Liste noch alle meine Kollegen bei Thoughtworks hinzufügen, die mir geholfen haben, Zeit für dieses Buch zu finden, die Fallstudien zusammenzutragen und für das Buch zu werben, aber es gibt zu viele von euch, um sie zu nennen. Stattdessen möchte ich mich bei Thoughtworks als Ganzes dafür bedanken, dass sie dieses Buch möglich gemacht haben: Ich habe unglaublich viel Unterstützung für dieses Projekt erhalten, was beweist, dass Thoughtworks weiterhin ein fantastischer Ort für wachsende Vordenker und aufstrebende Autoren ist.
Apropos Fallstudien: Ich möchte allen Unternehmen und Einzelpersonen, die mit ihren Erfahrungen aus erster Hand zu diesem Buch beigetragen haben, ganz herzlich danken: Maarten Ackermans, Julian Austin, Ilias Bartolini, Alberto Ramírez Fernández, Atte Huhtakangas, Lloyd Jones, Simon Mittermüller, Roberto Mosca, Alison Rosewarne, Javier Tejero, Thiago Vacare, und Tom Vollerthun.
Get Kontinuierliche Bereitstellung now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.