WikiDer > Kontinuierliche Lieferung
Kontinuierliche Lieferung ist ein Softwareentwicklungsmethode Ziel ist es, Ideen so schnell und effizient wie möglich in die Produktion zu bringen. Dadurch können Geschäftsannahmen beim Kunden schnell validiert werden, um ein Produkt kurzzyklisch zu gestalten. So kommen Funktionalität und Ideen um ein Vielfaches schneller beim Verbraucher an, als es bei den alten üblich ist Wasserfallmethode. Der Continuous Delivery-Prozess konzentriert sich darauf, einen kontinuierlichen Fluss neuer Funktionen in die Produktion zu lenken und sich somit von den alten zu entfernen.Gedanken loslassen’.
Vorwort
Für viele Organisationen ist die Einführung von Software eine zeitraubende, stressige und vor allem teure Arbeit. Sobald Software in Produktion ist, tauchen oft Fehler auf, die einen neuen Rollout erforderlich machen. Ein unruhiger Teufelskreis unter Druck. Für viele Unternehmen fühlt sich eine Bereitstellung als unzuverlässig und riskant an.
Grundsätze
Die Umsetzung von Continuous Delivery erfordert nicht nur eine Optimierung auf technischer, sondern auch auf organisatorischer Ebene. Die Organisation muss mit der kontinuierlichen Arbeitsweise Schritt halten können. Die Einführung von Continuous Delivery geht daher oft mit der Einführung von agile Teams und ein DevOpsStruktur, die die Lücke zwischen Entwicklung und Ausarbeitung schließen soll.
Um kontinuierlich neue Software in Produktion nehmen zu können, muss der Softwarelieferprozess vollständig wiederholbar und zuverlässig sein. Alle Prozessbeteiligten müssen sich darauf verlassen können, dass die Software auch nach dem Hinzufügen eines neuen Features einwandfrei in der Produktion läuft.
Dies geschieht unter anderem nach folgenden Grundsätzen:
- Automatisieren Sie alles.
In einem kontinuierlichen Strom von Funktionen und/oder Änderungen von hohen Qualität Um liefern zu können, müssen alle Schritte im Lieferprozess automatisiert werden. Für manuelle Schritte bleibt Zeit und Raum und Fehler manueller Natur sollen dabei nicht mehr auftreten. Manuelle Anpassungen sind in einer Continuous-Delivery-Umgebung tabu.
- Wenn es wehtut, mach es öfter.
Schwierige, zeitaufwendige oder fehleranfällige Aufgaben im Lieferprozess sollten häufiger durchgeführt werden. Wenn Sie diese Aufgaben häufiger ausführen, erhalten Sie früher Rückmeldung über die wahre Natur des Problems und das Problem wird tatsächlich angegangen.
- Fertig ist live.
Ein Stück Code/Feature auf dem Computer des Entwicklers, auf dem Build-Server oder in der Testumgebung ist überhaupt nicht wertvoll. Das Feature bietet nur dann einen Wert, wenn es tatsächlich in Produktion ist. Das Team ist also erst dann fertig, wenn der gesamte Code tatsächlich in Produktion ist. Bis dahin wird keine neue Arbeit aufgenommen. Dadurch werden überfällige Wartungsarbeiten vermieden.
- Qualität einbauen
Wenn ständig neue Funktionen in Produktion gehen können, sollten alle Beteiligten darauf vertrauen können, dass diese Verbesserungen tatsächlich funktionieren. Dies bedeutet, dass ausreichende wirksame Qualitätskontrollen in den Lieferprozess eingebaut werden müssen. Beispielsweise sollten automatisierte Tests von Anfang an angewendet werden.
- Kontinuierliche Verbesserungen vornehmen
Ein kontinuierlicher Fluss von Funktionen und Anpassungen erzeugt einen kontinuierlichen Fluss von Feedback. Dieses Feedback zeigt, was öfter getan werden sollte (weil es den Prozess positiv beeinflusst) oder was vermieden werden sollte. Dabei sollte sich das Team ganzheitlich auf die Verbesserung des automatisierten Prozesses und der Software konzentrieren.
- Das gesamte Team ist für das Produkt verantwortlich
Jeder im Team trägt die volle Verantwortung für das Produkt in der Produktion. Das heißt Entwickler, Bediener, Tester, Manager usw. Jeder, einschließlich des Entwicklers, ist erst bereit, wenn das Produkt in Produktion ist. Dies zwingt das Team, sich auf die Verbesserung des gesamten Lieferprozesses und damit des Endprodukts zu konzentrieren.
Automatisierung
Ein Teil der Lösung besteht darin, den Build-, Test-, Bereitstellungs- und Bereitstellungsprozess zu automatisieren, damit Prozesse schneller und zuverlässiger ausgeführt werden. Konkret bedeutet dies:
- Versionskontrolle: Alle Codes und Konfigurationen unterliegen der Versionskontrolle.
- Automatisierte Builds: Das Kompilieren und Zusammenführen von Code ist zentralisiert und vollständig automatisiert.
- Automatisiert Tests: Tests werden in allen Phasen automatisch durchgeführt und sind integraler Bestandteil des Entwicklungsprozesses.
- Bereitstellungsautomatisierung: Anwendungen werden vollständig automatisiert und End-to-End in einer oder mehreren Umgebungen bereitgestellt.
- Bereitstellung: Serverumgebungen per Knopfdruck auf- und wieder abgebaut werden.
Organisation
Durch agiles Arbeiten auf möglichst vielen Ebenen können Teams selbst kontinuierlich Innovationen liefern. Dies gilt nicht nur für das Entwicklungsteam, auch das Geschäft und der Betrieb profitieren von einer solchen Teamorganisation. Devops wird auch oft verwendet, um die altmodische „Lücke“ zwischen Entwicklung und Betrieb zu überbrücken.
Bildung
Viele Veröffentlichungen zu diesem Thema sind bereits im Internet erschienen. Eines der bekanntesten Bücher zu diesem Thema wurde von Jez Humble geschrieben und heißt: Continuous Delivery: zuverlässige Software-Releases durch Build-, Test- und Deployment-Automatisierung, ISBN 978-0-321-60191-9