Hilfe: Was ist Continuous Delivery?

Ранее мы erzählt über Continuous Integration (CI). Machen wir weiter mit Continuous Delivery. Hierbei handelt es sich um eine Reihe von Softwareentwicklungsmethoden. Dadurch wird sichergestellt, dass Ihr Code für die Bereitstellung bereit ist.

Hilfe: Was ist Continuous Delivery?
/Pixabay/ Blausittich / PL

Geschichte

Der Begriff „Continuous Delivery“ tauchte wieder auf agiles Manifest aus dem Jahr 2001 am Anfang der Liste der Grundprinzipien: „Im Vordergrund steht die Lösung von Kundenproblemen durch die kontinuierliche Bereitstellung aktueller Software.“

Im Jahr 2010 veröffentlichten Jez Humble und David Farley Buch durch kontinuierliche Lieferung. Laut den Autoren ergänzt CD den Ansatz Kontinuierliche Integration und ermöglicht Ihnen, die Vorbereitung des Codes für die Bereitstellung zu vereinfachen.

Nach der Veröffentlichung des Buches begann der Ansatz an Popularität zu gewinnen und wurde innerhalb weniger Jahre fast überall akzeptiert. Entsprechend Umfrage, durchgeführt unter mehr als 600 Entwicklern und IT-Managern im Jahr 2014, waren 97 % der technischen Manager und 84 % der Programmierer mit Continuous Delivery vertraut.

Mittlerweile ist dieser Ansatz einer der beliebtesten. Laut einer Studie aus dem Jahr 2018, an der die IT-Community DevOps und die Jenkins Community beteiligt waren, ist dies der Fall verwendet die Hälfte der über tausend Befragten.

Wie funktioniert Continuous Delivery?

Die CD-Basis ist die Bereitschaft des Codes zur Bereitstellung. Um diese Aufgabe zu erfüllen, wird der Prozess der Vorbereitung von Software für die Veröffentlichung automatisiert. Es sollte in verschiedenen Entwicklungsumgebungen Standard sein, um Schwachstellen schnell zu finden und zu optimieren. Beschleunigen Sie beispielsweise Tests.

Ein Beispiel für einen Continuous-Delivery-Prozess sieht so aus:

Hilfe: Was ist Continuous Delivery?

Wenn der Continuous-Integration-Ansatz für die Automatisierung der ersten beiden Phasen verantwortlich ist, dann ist Continuous Delivery für die nächsten beiden verantwortlich. Die Prozessstabilität wird unter anderem durch Systeme gewährleistet Konfigurationsmanagement. Sie überwachen Änderungen in der Infrastruktur, Datenbanken und Abhängigkeiten. Die Bereitstellung selbst kann automatisiert oder manuell erfolgen.

An den Prozess werden folgende Anforderungen gestellt:

  • Verfügbarkeit von Informationen über die Bereitschaft zum Eintritt in die Produktionsumgebung und die Bereitschaft zur sofortigen Veröffentlichung (CD-Tools testen den Code und ermöglichen die Bewertung der Auswirkungen von Änderungen in der Veröffentlichung).
  • Gesamtverantwortung für das Endprodukt. Das Produktteam – Manager, Entwickler, Tester – denkt über das Ergebnis nach und nicht nur über seinen Verantwortungsbereich (das Ergebnis ist eine funktionierende Version, die den Benutzern des Produkts zur Verfügung steht).

In CDs wird es normalerweise verwendet Code-Review, und zum Sammeln von Kundenmeinungen – das Prinzip dunkler Start. Eine neue Funktion wird zunächst für einen kleinen Teil der Benutzer freigegeben – ihre Erfahrung bei der Interaktion mit dem Produkt hilft dabei, Mängel und Fehler zu finden, die bei internen Tests nicht bemerkt wurden.

Was ist der Vorteil?

Continuous Delivery trägt dazu bei, die Codebereitstellung zu vereinfachen, was sich positiv auf die Produktivität auswirkt und die Wahrscheinlichkeit eines Burnouts bei Mitarbeitern verringert. Letztendlich werden dadurch die Gesamtentwicklungskosten gesenkt. CD hat beispielsweise einem der HP-Teams geholfen reduzieren diese Kosten um 40 %.

Laut einer Studie aus dem Jahr 2016 (Seite 28 Dokument) – Unternehmen, die CD implementiert haben, lösen Informationssicherheitsprobleme 50 % schneller als diejenigen, die diesen Ansatz nicht nutzen. Bis zu einem gewissen Grad lässt sich dieser Unterschied durch die Leistung von Prozessautomatisierungstools erklären.

Ein weiterer Pluspunkt ist die Beschleunigung der Veröffentlichungen. Kontinuierliche Lieferung im finnischen Entwicklungsstudio geholfen Erhöhen Sie die Geschwindigkeit der Codeassemblierung um 25 %.

Mögliche Schwierigkeiten

Das erste und größte Problem ist die Notwendigkeit, gewohnte Prozesse neu aufzubauen. Um die Vorteile des neuen Ansatzes zu zeigen, lohnt es sich, schrittweise auf CD umzusteigen und nicht mit den arbeitsintensivsten Anwendungen zu beginnen.

Das zweite potenzielle Problem ist die große Anzahl von Codezweigen. Die Folge der „Verzweigung“ sind häufige Konflikte und ein weiterer großer Zeitverlust. Mögliche Lösung – Vorgehensweise keine Filialen.

Insbesondere in einigen Unternehmen entstehen die Hauptschwierigkeiten beim Testen – es nimmt zu viel Zeit in Anspruch. Testergebnisse müssen oft manuell analysiert werden, eine mögliche Lösung könnte jedoch darin bestehen, die Tests in den frühen Phasen der CD-Implementierung zu parallelisieren.

Sie sollten Ihre Mitarbeiter auch im Umgang mit neuen Tools schulen – ein vorläufiges Schulungsprogramm spart Entwicklern Aufwand und Zeit.

Hilfe: Was ist Continuous Delivery?
/flickr/ h.ger1969 / CC BY-SA

Werkzeuge

Hier sind einige offene Tools für Continuous Delivery:

  • GoCD — Server für Continuous Delivery in Java und JRuby on Rails. Ermöglicht Ihnen die Steuerung des gesamten Anwendungsbereitstellungsprozesses: Build – Test – Release. Das Tool wird unter der Apache 2.0-Lizenz vertrieben. Sie finden es auf der offiziellen Website Setup-Anleitung.
  • Capistrano – ein Framework zum Erstellen von Skripten, die die Bereitstellung von Anwendungen in Ruby, Java oder PHP automatisieren. Capistrano kann Befehle auf einem Remote-Rechner ausführen, indem es sich über SSH mit diesem verbindet. Funktioniert mit anderen Tools für kontinuierliche Integration und Bereitstellung, z. B. dem Integrity CI-Server.
  • Gradle ist ein plattformübergreifendes Tool, das den gesamten Anwendungsentwicklungszyklus automatisiert. Gradle funktioniert mit Java, Python, C/C++, Scala usw. Es gibt eine Integration mit Eclipse, IntelliJ und Jenkins.
  • Drohne - CD-Plattform in Go-Sprache. Drohnen können vor Ort oder in der Cloud eingesetzt werden. Das Tool basiert auf Containern und verwendet YAML-Dateien, um diese zu verwalten.
  • Spinnaker – eine Plattform für die kontinuierliche Codebereitstellung in Multi-Cloud-Systemen. Die von Netflix entwickelten Google-Ingenieure spielten eine große Rolle bei der Entwicklung des Tools. Installationsanleitung Finden Sie es auf der offiziellen Website.

Was Sie in unserem Unternehmensblog lesen können:

Source: habr.com

Kommentar hinzufügen