Continuous Delivery
eBook - ePub

Continuous Delivery

Der pragmatische Einstieg

  1. 282 Seiten
  2. German
  3. ePUB (handyfreundlich)
  4. Über iOS und Android verfügbar
eBook - ePub

Continuous Delivery

Der pragmatische Einstieg

Angaben zum Buch
Buchvorschau
Inhaltsverzeichnis
Quellenangaben

Über dieses Buch

Continuous Delivery ermöglicht es, Software viel schneller und mit wesentlich höherer Zuverlässigkeit in Produktion zu bringen, als es bisher möglich war. Grundlage dafür ist eine Continuous-Delivery-Pipeline, die das Ausrollen der Software weitgehend automatisiert und so einen reproduzierbaren, risikoarmen Prozess für die Bereitstellung neuer Releases bietet. Dieses Buch macht Sie mit dem Aufbau einer Continuous-Delivery-Pipeline vertraut und erklärt, welche Technologien Sie dazu einsetzen können.Dabei lernen Sie u.a. folgende Themen kennen: • Infrastruktur-Automatisierung mit Chef, Docker und Vagrant• Automatisierung von Builds und Continuous Integration• Akzeptanztests, Kapazitätstests, exploratives Testen• Einführung von Continuous Delivery im Unternehmen• Continuous Delivery und DevOps• Auswirkungen auf die SoftwarearchitekturAls praktisches Beispiel wird ein konkreter Technologie- Stack vorgestellt. Zahlreiche Aufgaben und Vorschläge für weitergehende Experimente laden Sie darüber hinaus zur praktischen Vertiefung des Themas ein.Nach der Lektüre können Sie abschätzen, welche Vorteile Continuous Delivery konkret bietet, und Sie verfügen über das nötige Handwerkszeug, um Continuous Delivery in Ihrem eigenen Arbeitsumfeld zu etablieren.Die Neuauflage wurde in Bezug auf Werkzeuge wie Docker, Jenkins, Graphite und den ELK-Stack aktualisiert. An neuen Themen sind Docker Compose, Docker Machine, Immutable Server, Microservices und die Einführung von Continuous Delivery ohne DevOps hinzugekommen.

Häufig gestellte Fragen

Gehe einfach zum Kontobereich in den Einstellungen und klicke auf „Abo kündigen“ – ganz einfach. Nachdem du gekündigt hast, bleibt deine Mitgliedschaft für den verbleibenden Abozeitraum, den du bereits bezahlt hast, aktiv. Mehr Informationen hier.
Derzeit stehen all unsere auf Mobilgeräte reagierenden ePub-Bücher zum Download über die App zur Verfügung. Die meisten unserer PDFs stehen ebenfalls zum Download bereit; wir arbeiten daran, auch die übrigen PDFs zum Download anzubieten, bei denen dies aktuell noch nicht möglich ist. Weitere Informationen hier.
Mit beiden Aboplänen erhältst du vollen Zugang zur Bibliothek und allen Funktionen von Perlego. Die einzigen Unterschiede bestehen im Preis und dem Abozeitraum: Mit dem Jahresabo sparst du auf 12 Monate gerechnet im Vergleich zum Monatsabo rund 30 %.
Wir sind ein Online-Abodienst für Lehrbücher, bei dem du für weniger als den Preis eines einzelnen Buches pro Monat Zugang zu einer ganzen Online-Bibliothek erhältst. Mit über 1 Million Büchern zu über 1.000 verschiedenen Themen haben wir bestimmt alles, was du brauchst! Weitere Informationen hier.
Achte auf das Symbol zum Vorlesen in deinem nächsten Buch, um zu sehen, ob du es dir auch anhören kannst. Bei diesem Tool wird dir Text laut vorgelesen, wobei der Text beim Vorlesen auch grafisch hervorgehoben wird. Du kannst das Vorlesen jederzeit anhalten, beschleunigen und verlangsamen. Weitere Informationen hier.
Ja, du hast Zugang zu Continuous Delivery von Eberhard Wolff im PDF- und/oder ePub-Format sowie zu anderen beliebten Büchern aus Computer Science & Software Development. Aus unserem Katalog stehen dir über 1 Million Bücher zur Verfügung.

Information

Verlag
dpunkt
Jahr
2016
ISBN
9783864919312

1 Einleitung

1.1 Überblick über Continuous Delivery und das Buch

Continuous Delivery ermöglicht es, Software schneller und mit wesentlich höherer Zuverlässigkeit in Produktion zu bringen als bisher. Grundlage dafür ist eine Continuous-Delivery-Pipeline, die das Ausrollen der Software weitgehend automatisiert und so einen reproduzierbaren, risikoarmen Prozess für die Bereitstellung neuer Releases darstellt.
Dieses Buch erläutert, wie eine solche Pipeline praktisch aufgebaut werden kann und welche Technologien dazu eingesetzt werden können. Dabei geht es nicht nur um das Kompilieren und die Installation der Software, sondern auch um verschiedene Tests, die dazu dienen, die Qualität der Software abzusichern.
Das Buch zeigt außerdem, welche Auswirkungen Continuous Delivery auf das Zusammenspiel zwischen Entwicklung (Development) und Betrieb (Operations) im Rahmen von DevOps hat. Schließlich werden die Auswirkungen auf die Softwarearchitektur beschrieben. Neben der Theorie wird ein möglicher Technologie-Stack vorgestellt, der Build, Continuous Integration, Lasttests, Akzeptanztests und Monitoring abdeckt. Für die einzelnen Bestandteile des Technologie-Stacks gibt es jeweils ein Beispielprojekt, mit dem der Leser praktische Erfahrungen sammeln kann. Das Buch bietet einen Einstieg in den Technologie-Stack und zeigt außerdem auf, wie man sich mit den Themen tiefergehend beschäftigen kann.
Durch Experimente und Vorschläge zum selber Ausprobieren lädt es zur weiteren praktischen Vertiefung ein. Die Leser erhalten so Anregungen, wie sie sich weiter in die Themen vertiefen und eigene Erfahrungen sammeln können. So können die Beispielprojekte Basis für eigene Experimente oder für den Aufbau einer eigenen Continuous-Deployment-Pipeline sein.
Unter http://continuous-delivery-buch.de steht die Website zum Buch bereit mit Informationen, Errata und Links zu dem Beispiel.

1.2 Warum überhaupt Continuous Delivery?

Warum sollte man überhaupt Continuous Delivery einsetzen? Eine kleine Geschichte soll diese Frage beantworten – ob sie wahr ist oder nicht, bleibt offen.
Eine kleine Geschichte
Das Marketing eines Unternehmens – nennen wir es Raffzahn Online Commerce GmbH – hatte entschieden, den Registrierungsprozess auf der E-Commerce-Website zu überarbeiten. Dadurch sollten mehr Kunden gewonnen und der Umsatz erhöht werden. Also machte sich ein Entwicklerteam an die Arbeit. Nach nicht allzu langer Zeit waren sie fertig.
Zunächst mussten die Änderungen getestet werden. Dazu hatte das Team der Raffzahn Online Commerce GmbH in einem aufwendigen Prozess eine Testumgebung aufgebaut, auf der die Software manuell getestet wurde. Und es wurden tatsächlich Fehler gefunden. Mittlerweile waren die Entwickler aber schon bei dem nächsten Projekt und mussten sich wieder einarbeiten, bevor sie die Fehler mit einem Fix beheben konnten. Und wegen der manuellen Tests stellte sich bei einigen »Fehlern« heraus, dass die Tester nicht richtig getestet hatten oder die Fehler aus irgendwelchen Gründen nicht reproduzierbar waren.
Nun galt es, den Code in Produktion zu bringen. Der Prozess dazu war aufwendig – denn die E-Commerce-Website der Raffzahn Online Commerce GmbH war über die Jahre gewachsen und daher sehr komplex. Nur dieses eine Feature auszuliefern, rechtfertigte den Aufwand nicht. Daher wurde nur einmal pro Monat deployt. Schließlich konnte die Änderung zusammen mit den anderen Änderungen aus dem letzten Monat in Produktion gehen. Dazu war eine Nacht reserviert. Leider gab es beim Rollout einen Fehler. Das Team machte sich an die Arbeit, das Problem zu analysieren. Aber das war so schwierig, dass das System am nächsten Morgen nicht zur Verfügung stand. Zu diesem Zeitpunkt waren die Mitarbeiter übernächtigt und standen unter großem Stress – jede Minute Ausfall kostete bares Geld. Und zurück zur alten Version ging es nicht, weil einige Änderungen im Deployment nicht ohne Weiteres rückgängig gemacht werden konnten. Erst im Laufe des Tages, nach einer ausführlichen Fehleranalyse, konnte eine Task Force das Problem beheben und die Website stand wieder zur Verfügung. Der Fehler war eine Konfigurationsänderung gewesen, die in der Testumgebung vorgenommen, aber bei der Produktionseinführung vergessen worden war.
Also schien alles in Ordnung zu sein – aber es gab einen weiteren Fehler, der zunächst nicht entdeckt wurde. Dieser Fehler hätte eigentlich durch die manuellen Tests gefunden werden sollen. Der Test, der den Fehler gefunden hätte, wurde auch erfolgreich durchgeführt. Aber in der Testphase wurden auch einige Fehler gefixt und dieser Test wurde nur vor den Fixes durchgeführt. Der Fehler wurde erst durch einen der Fixes eingeführt. Nach den Fixes wurde der Test nicht noch einmal durchgeführt – daher konnte der Fehler es bis in die Produktion schaffen.
Am nächsten Tag stellte sich also mehr zufällig heraus, dass die Registrierung für die Website der Raffzahn Online Commerce GmbH gar nicht mehr funktionierte. Das war niemandem aufgefallen und erst, nachdem der erste potenzielle Kunde sich bei der Hotline meldete, wurde das Problem erkannt. Wie viele Registrierungen dieser Ausfall gekostet hatte, konnte leider niemand sagen – dazu fehlten Informationen über die Nutzung der Website. Wie schnell die optimierte Registrierung diesen Nachteil ausgleichen konnte, ist fraglich. So konnte es gut sein, dass die Änderung nicht wie ursprünglich geplant zu mehr Registrierungen, sondern zu weniger geführt hatte. Und außerdem war das neue Release wesentlich langsamer – ein Umstand, mit dem vorher auch niemand gerechnet hatte.
Und so begann die Raffzahn Online Commerce GmbH, die nächsten Features zu implementieren, um in einem Monat wiederum ein Update der Website auszurollen. Was wohl dieses Mal passieren würde?
Continuous Delivery hilft.
Continuous Delivery löst solche Probleme durch verschiedene Maßnahmen:
  • Es wird öfter deployt – bis hin zu mehreren Malen pro Tag. Dadurch wird die Zeit, bis ein neues Feature genutzt werden kann, verringert.
  • Durch häufige Deployments ist auch das Feedback auf neue Features und Code-Änderungen schneller. Die Entwickler müssen sich nicht erst wieder darauf besinnen, was sie vor einem Monat implementiert haben.
  • Um schneller zu deployen, müssen der Aufbau von Umgebungen und die Tests weitgehend automatisiert werden, da der Aufwand sonst zu hoch ist.
  • Die Automatisierung führt zu Reproduzierbarkeit: Wenn die Testumgebung erfolgreich aufgebaut werden kann, dann lässt sich mit demselben Automatismus auch die Produktion aufbauen – und zwar mit derselben Konfiguration. Das Problem durch die Fehlkonfiguration der Produktionsumgebung wäre also nicht aufgetreten.
  • Außerdem führt die Automatisierung zu mehr Flexibilität. Testumgebungen können On-Demand aufgesetzt werden. So kann es z.B. bei einem Redesign der Oberflächen zeitlich begrenzt eine separate Testumgebung für Marketing geben. Oder für großangelegte Lasttests können zusätzliche Umgebungen aufgesetzt werden, um eine produktionsnahe Umgebung zu haben, die nach den Tests wieder abgerissen werden, so dass keine dauerhaften Investitionen in Hardware notwendig sind – wenn beispielsweise eine Cloud genutzt wird.
  • Automatisierte Tests führen dazu, dass Fehler leichter reproduziert werden können. Da die exakt gleichen Schritte bei jedem Test ausgeführt werden, gibt es auch keine Fehler bei der Testdurchführung.
  • Wenn Tests automatisiert sind, können sie öfter ausgeführt werden. Also wäre der Fix durch den gesamten Testprozess gegangen und dieser Fehler nicht erst in Produktion aufgefallen.
  • Das Risiko eines neuen Release wird weiter reduziert, indem das Deployment in Produktion so aufgesetzt wird, dass es einen Weg zurück zur alten Version gibt. So wird der Produktionsausfall aus dem Beispiel verhindert.
  • Und schließlich sollten die Anwendungen auch ein fachliches Monitoring haben, so dass die Registrierung nicht ausfallen kann, ohne dass es jemand merkt.
Durch Continuous Delivery gewinnt das Business eine schnellere Verfügbarkeit neuer Features und eine zuverlässigere IT. Die Zuverlässigkeit ist auch für die IT nützlich. Nachts oder an Wochenenden unter hohem Stress neue Releases auszurollen und Fehler zu beheben, macht eben keinen Spaß. Und es ist sicher auch für die IT besser, wenn Fehler durch Tests auffallen und nicht erst in Produktion.
Um Continuous Delivery umzusetzen, gibt es eine Vielzahl an Technologien und Techniken. Continuous Delivery hat Auswirkungen bis hin zur Architektur der Anwendung. Genau um diese Themen geht es in diesem Buch. Am Ende steht ein schnellerer und zuverlässigerer Prozess, um Software in Produktion zu bringen.

1.3 Für wen ist das Buch?

Das Buch wendet sich an Manager, Architekten, Entwickler und Administratoren, die Continuous Delivery als Methodik und/oder DevOps als Organisationsform einführen wollen:
  • Manager lernen durch den theoretischen Teil Prozess, Erfordernisse und Vorteile von Continuous Delivery für ihr Unternehmen kennen. Außerdem können sie die technischen Konsequenzen von Continuous Delivery abschätzen.
  • Entwickler und Administratoren erhalten eine umfassende Einleitung in die technischen Aspekte und können damit die notwendigen Fähigkeiten erlernen, um Continuous Delivery umzusetzen und eine entsprechende Pipeline aufzubauen.
  • Architekten können neben den technischen Aspekten auch die Auswirkung auf die Softwarearchitektur kennenlernen – siehe dazu Kapitel 12.
Das Buch stellt verschiedene Technologien für die Umsetzung von Continuous Delivery vor. Als Beispiel dient ein Java...

Inhaltsverzeichnis

  1. Cover
  2. Titel
  3. Impressum
  4. Inhaltsverzeichnis
  5. Kapitel 1: Einleitung
  6. Teil 1: Grundlagen
  7. Teil 2: Die Continuous-Delivery-Pipeline
  8. Teil 3: Management-und Architektursicht auf Continuous Delivery
  9. Index
  10. Fußnote