Was ist „Continuous Delivery“?

Abgeschlossen

Hier verfolgen Sie, wie das Tailspin-Team die Frage diskutiert, wie eine Continuous Delivery-Pipeline (CD) ihnen bei ihrem bevorstehenden Release helfen kann.

Das Tailspin-Team wird langsam zufriedener mit seinem Buildprozess. Sie haben einen automatisierten Prozess, der in Azure Pipelines ausgeführt wird, was bedeutet, dass die Buildumgebung stabil ist. Amita weiß sofort, wann sie ein Artefakt testen muss. Sie findet weniger Fehler, weil Andy und Mara begonnen haben, Komponententests und Codequalitätstests hinzuzufügen. Alles prima. Sehen wir nach, wie der Stand beim Team ist.

Morgenbesprechung

Das Team sitzt im Besprechungsraum und wartet auf Irwin, den Produktmanager, der mit ihnen sprechen möchte. Sie freuen sich darauf, ihm von ihren Fortschritten zu berichten. Aber als Irwin hereinkommt, sieht er nicht glücklich aus. Er beginnt sofort zu reden.

Irwin: Ich hatte heute Morgen eine Besprechung mit dem Management-Team. Sie wollen wissen, warum wir so lange für die Releases unserer Spiele und Websites brauchen. Unsere engsten Konkurrenten bringen neue Features und neue Spiele viel schneller heraus als wir. Wir müssen die Sache beschleunigen. Ich warne nicht nur Sie. Ich alarmiere alle Teams. Was können wir tun, um Ihrem Team zu helfen, schneller bereitzustellen?

Andy: Das kommt etwas plötzlich, aber wir sind Ihnen einen Schritt voraus. Wir haben die Erstellung unserer Websites automatisiert. Vielleicht ist es jetzt an der Zeit, unsere Automatisierung auf unseren Releaseprozess auszuweiten.

Irwin: Wie wollen Sie das machen?

Mara: Wir haben mithilfe von Azure Pipelines eine automatisierte Buildpipeline erstellt. Sie erstellt ein Artefakt, das Amita testen kann. Sie könnten auch eine Continuous Delivery-Pipeline (CD) erstellen.

Irwin: Was ist eine CD-Pipeline?

Mara beginnt, etwas zu erläutern, wird aber unterbrochen, weil Irwins Mobiltelefon piept. Irwin liest eine Textnachricht und murmelt etwas vor sich hin.

Irwin: Tut mir leid, aber das ist dringend. Ich muss gehen. Warum überlegt ihr euch nicht gemeinsam diese CD-Sache und meldet euch zügig wieder bei mir?

Andy schaut bei seinem Team in die Runde.

Andy: Kaffee?

Andy und der Rest des Teams machen sich auf den Weg zum Coffee Shop, um einen Plan aufzustellen.

Was ist „Continuous Delivery“?

Das Team trifft sich bei einem Kaffee, um zu besprechen, wie ein Continuous Delivery-Workflow eingerichtet werden kann.

Andy: Mara, kannst du uns sagen, was du über Continuous Delivery weißt?

Mara: Für mich sind CD und DevOps untrennbar miteinander verbunden. Erinnern Sie sich daran, dass wir DevOps als die Vereinigung von Menschen, Prozessen und Produkten definiert haben, um eine kontinuierliche Bereitstellung von Werten für unsere Endbenutzer zu ermöglichen.

CD an sich ist ein Satz von Prozessen, Tools und Methoden, die eine schnelle, zuverlässige und kontinuierliche Bereitstellung von Software ermöglichen. Somit geht es bei CD nicht nur darum, eine Pipeline einzurichten, obwohl dieser Teil wichtig ist. Bei CD geht es darum, eine Arbeitsumgebung zu schaffen, auf die Folgendes zutrifft:

  • Wir haben einen zuverlässigen und wiederholbaren Prozess für die Freigabe und Bereitstellung von Software.
  • Wir automatisieren so viel wie möglich.
  • Wir schieben etwas, das schwierig oder anstrengend ist, nicht auf, sondern tun es öfter, damit wir herausfinden, wie wir es zur Routine machen können.
  • Wir halten alles in der Quellcodeverwaltung.
  • Wir sind uns alle einig, dass erledigtfreigegeben bedeutet.
  • Wir bauen Qualität in den Prozess ein. Qualität ist niemals Nebensache.
  • Wir sind alle für den Releaseprozess verantwortlich. Wir arbeiten nicht mehr in Silos.
  • Wir versuchen immer, uns zu verbessern.

Viele dieser Ideen haben wir bereits umgesetzt, und wir sind uns einig, dass sie unsere Arbeitsweise verbessert haben. CD ist eine Erweiterung dessen, was wir bereits begonnen haben.

Warum brauche ich Continuous Delivery?

CD hilft Softwareteams, ihren Kunden zuverlässige Softwareupdates mit einer schnellen Kadenz zu liefern. CD trägt auch dazu bei, dass sowohl Kunden als auch Projektbeteiligte schnell über die neuesten Funktionen und Fixes verfügen.

Hören wir weiter zu, was das Team dazu bespricht.

Andy: Danke, Mara. Wir brauchen CD, weil sich, wie wir alle wissen, die Welt verändert hat. Neue Funktionen werden schneller freigegeben. Updates und Fehlerkorrekturen müssen sofort verfügbar sein. Es ist nicht nur unser Management, das unsere Releases beschleunigen möchte. Das Management reagiert lediglich auf die Anforderungen unserer Kunden. Wenn die Kunden bei uns nicht bekommen, was sie wollen, gehen sie woanders hin.

Tim: Einverstanden! Ich kann es kaum erwarten loszulegen.

Andy: Vielen Dank, Leute. Ich möchte vorschlagen, dass Mara und ich einen einfachen Proof of Concept (POC) zusammenstellen. Ich denke, alles wird viel leichter zu verstehen sein, wenn ihr eine CD-Pipeline in Aktion sehen könnt.

Amita: Viel Glück, ihr zwei.

Das Team verlässt Andy und Mara, damit diese die Details ausarbeiten können.

Wie verhält sich Continuous Delivery im Vergleich zum Right-Click-Publishing?

Viele Entwicklungstools bieten Möglichkeiten, Ihre Anwendung direkt in einer Zielumgebung zu veröffentlichen, z. B. Microsoft-Internetinformationsdienste (IIS) oder Azure. Sie können zum Beispiel eine ASP.NET Core-App in Azure veröffentlichen, indem Sie Visual Studio verwenden. Dieser Vorgang wird manchmal als Right-Click-Publishing (Veröffentlichung per Rechtsklick über das VS-Kontextmenü) bezeichnet.

Right-Click-Publishing ist eine großartige Möglichkeit, um schnell einen Prototyp zu erstellen. Zum Beispiel könnten Sie Ihre Anwendung per Rechtsklick in Azure veröffentlichen, um eine neue Idee mit Ihrem Team zu teilen. Allerdings hat dieses Verfahren seine Grenzen.

Continuous Delivery bietet eine konsistente Möglichkeit für Sie und Ihr Team, Ihre Anwendung bei jedem Einchecken des Codes kontinuierlich zu testen, bereitzustellen und zu überwachen. Wenn Sie Ihre Anwendung per Rechtsklick veröffentlichen, gibt es keine Garantie dafür, dass der Code ordnungsgemäß getestet wurde oder sich im realen Einsatz wie erwartet verhält.

In diesem kurzen Video erklärt Abel Wang, Cloud Advocate bei Microsoft, mehr dazu.

Wie verhält sich Continuous Delivery im Vergleich zu Continuous Deployment?

In der DevOps-Community kann man die Begriffe Continuous Delivery und Continuous Deployment hören. Bedeuten diese Begriffe dasselbe? In diesem kurzen Video erklärt Abel den Unterschied.

Welche Continuous Delivery-Tools kann ich verwenden?

Nach dem Ende der Besprechung planen Andy und Mara die nächsten Schritte. Sie verwenden Azure Pipelines, um ihre Software zu erstellen. Sie wollen überlegen, welche Tools, einschließlich Azure Pipelines, verfügbar sind, um ihnen bei ihrem Releaseprozess zu helfen.

Mara: Wo möchtest du anfangen?

Andy: Zunächst müssen wir uns auf ein Releaseverwaltungstool einigen. Lass uns sicherstellen, dass das Werkzeug, das wir auswählen, Folgendes erfüllt:

  • Es unterstützt unser Versionskontrollsystem.
  • Es kann in mehreren Umgebungen bereitstellen, sodass wir unsere Arbeit testen und überprüfen können.
  • Es vereinfacht das Definieren unserer Bereitstellungsaufgaben.
  • Es lässt sich einfach erweitern.

Mara: Azure DevOps lässt sich in verschiedene andere Continuous Integration (CI)- und CD-Lösungen integrieren. Es gibt viele Lösungen, und wir setzen noch keine von ihnen ein. Wenn es so wäre, wäre es sinnvoll, diese zu verwenden. Beliebte CI- und CD-Systeme sind unter anderem Jenkins, Circle CI, GitLab, Travis CI und Azure Pipelines.

Diese Tools besitzen Ähnlichkeiten, aber jedes hat auch seine spezifischen Stärken. Einige dieser Tools sind Open Source, einige sind kostenlos und manche sind kostenpflichtig. Sie bieten auch jeweils integrierte Integrationsmöglichkeiten in andere Softwaretools.

Jenkins ist zum Beispiel Open Source. Es enthält viele Plug-Ins und wird von vielen Unternehmen eingesetzt. Circle CI kannst du in der Cloud oder lokal ausführen. Ich denke, wir müssen es anpassen. GitLab ist eine einzelne Anwendung für den gesamten Lebenszyklus der Softwareentwicklung. Es könnte mächtiger sein, als wir im Moment wirklich wollen. Wir können auch weiterhin Azure Pipelines verwenden.

Hier ist ein kurzes Video, in dem Abel über die Verwendung von bewährten DevOps-Methoden für die Bereitstellung von Code in Azure spricht.

Mara: Ich bin dafür, bei Azure Pipelines zu bleiben.

Andy: Sehe ich genauso. Azure Pipelines hat für uns bisher hervorragend funktioniert, und wir müssen nicht noch eine neue Technologie erlernen.

Mara: Prima. Legen wir los mit den Pipelinedetails.

Andy und Mara gehen in einen Konferenzraum, um ihre CD-Pipeline zu planen.