Bei XebiaLabs erhalten wir viele Fragen zu unserer Automatisierungslösung für die Unternehmensbereitstellung , Deployit, von Benutzern, die eine automatisierte Bereitstellung als Voraussetzung für Continuous Delivery wünschen. Oft ist dies das Ergebnis von Initiativen zur Erweiterung bestehender Continuous Integration-Tools, um Anwendungsbereitstellungen zu unterstützen. Die Erhöhung der Häufigkeit von Anwendungstests, die Verkürzung der Zeit bis zur Produktivsetzung und die schnellere und regelmäßigere Bereitstellung eines größeren Geschäftswerts sind Ziele, die wir definitiv teilen, und in diesem Beitrag möchten wir einige wichtige Erfahrungen und Lektionen aus der Zusammenarbeit mit unseren Anwendern weitergeben, um ihnen bei der Realisierung von Continuous Delivery zu helfen.
Erweiterung der fortlaufenden Integration
Für viele Unternehmen sind Tools für die kontinuierliche Integration (Continuous Integration, CI) die offensichtliche "Basisplattform", auf der sie ihre Automatisierungssuite für Continuous Delivery (CD) aufbauen. Oft ist CI bereits etabliert und in Betrieb, z.B. als Teil der Einführung agiler Entwicklungsmethoden.
Von der kontinuierlichen Integration zur kontinuierlichen Bereitstellung
Der erste wichtige Punkt bei der Einführung von CD ist, dass es mehr ist als "nur ein Tool". Wie bei Agile oder Devops handelt es sich bei Continuous Delivery um eine Reihe von Grundsätzen und Prozessen und, was noch grundlegender ist, um eine Denkweise, deren Umsetzung Anstrengung, Veränderung und Akzeptanz erfordert.
Vorbereitungen für Continuous Delivery
Ausgehend von unserer Erfahrung bei der Unterstützung von Unternehmen bei der Ausweitung von Continuous Integration auf Continuous Delivery, stellen wir Ihnen hier vier der häufigsten Punkte vor, die Sie beachten sollten: 1. Was gehört zu unseren Bereitstellungspaketen?- Eine Anwendung besteht aus mehr als nur kompiliertem Code oder Binärdateien! Denken Sie an Konfigurationsdateien, Datenbankänderungen und Konfigurationseinstellungen oder Ressourcen, die in der Ziel-Middleware-Umgebung erstellt werden müssen.
- Kann ich alle Komponenten zum Zeitpunkt der Integration sammeln, um mein Bereitstellungspaket automatisch vorzubereiten? Kann ich Datenbankskripte oder Konfigurationsspezifikationen aus einem Repository abrufen?
- Eine nützliche Testfrage: Wenn ich mein Bereitstellungspaket auf einer frischen "Vanilla-Middleware-Installation des Unternehmens" einsetze, habe ich dann alle Komponenten und Einstellungen, die ich brauche?

- Die Cloud macht es möglich, mehrere identische 1-Umgebungen parallel laufen zu lassen, aber im Moment erfordern die meisten Unternehmensimplementierungen umgebungsspezifische Einstellungen und Implementierungen: unterschiedliche Datenbankbenutzernamen und Passwörter oder die Implementierung aller Komponenten in einem einzigen Cluster in Dev im Gegensatz zu Sets von Komponenten in verschiedenen Clustern für Q&A oder Production.
- Separate CI-Aufgaben für jede Umgebung, um diese Unterschiede zu behandeln, führen zu übermäßiger Duplizierung und Verwaltungsaufwand. Außerdem können dadurch sensible Informationen, die vor den Entwicklern und anderen Personen mit Zugriff auf den Build verborgen bleiben sollten, in den CI-Prozess gelangen.
- Streben Sie ein einziges CI-Build an, das Ihr "Goldstandard"-Einsatzpaket liefert, das zum Zeitpunkt des Einsatzes an die Zielumgebung angepasst werden kann (z. B. mithilfe von Konfigurationsdateien mit Platzhaltern). Umgebungsspezifische Bereitstellungsaktionen (z.B. für unterschiedliche Größenordnungen von Umgebungen) sollten von der Automatisierungskomponente für die Bereitstellung übernommen werden.
- Die meisten CI-Tools ermöglichen Ihnen sowohl das Hinzufügen zusätzlicher Aktionen zu einer Aufgabe/einem Job als auch die Definition einer "Aufgaben-/Job-Kaskade", bei der jede Aufgabe durch den Abschluss der vorhergehenden ausgelöst wird. Sie können also im Extremfall eine Aufgabe mit vielen Aktionen haben, die die gesamte Pipeline repräsentiert, oder eine Kaskade von vielen sehr kurzen Aufgaben.
- Wenn Sie die Pipeline in eine Kaskade aufteilen, bleibt die Konfiguration der einzelnen Aufgaben kleiner und fokussierter. Außerdem ist es so einfacher, nur diesen Teil der Pipeline auszuführen, was insbesondere für Tests und Verfeinerungen nützlich ist.
- Die Definition von fokussierteren Aufgaben führt jedoch zu viel mehr Aufgaben in Ihrer CI-Installation, so dass Sie Sortier-, Filter- oder andere Funktionen zur Verwaltung von Unternehmensdaten in Ihrem CI-Tool benötigen.
- Nützliche "Brocken", die Sie berücksichtigen sollten2:
- erstellen, testen und verpacken
- einsetzen und überprüfen
- Integrations-/Leistungs-/Funktionstests
- Abriss/Aufräumarbeiten
- Je länger die Pipeline wird, d.h. je weiter sie sich in Richtung Q&A und Produktion bewegt, desto wahrscheinlicher werden Sie an Punkte gelangen, an denen eine Genehmigung des Release Management (RM) erforderlich ist, um fortzufahren.
- Die Interaktion zwischen Release Management und Continuous Delivery geht mindestens in beide Richtungen: RM-Aktionen können Pipeline-Stufen auslösen, während CD-Aktionen RM-Verifizierungen auslösen können.
- Wenn Sie zum Beispiel eine Änderungsanforderung auf Genehmigt setzen, kann dies automatisch einen Bereitstellungs- und Testzyklus auslösen. Ebenso kann eine durch erfolgreiche Funktionstests ausgelöste Bereitstellung in der Q&A-Umgebung automatisch überprüfen, ob die RM-Genehmigung erteilt wurde, indem eine Änderungsanforderung validiert wird.
- so identisch, dass die Anwendung und ihre Konfiguration nicht geändert werden müssen
- Natürlich gibt es hier keine festen Regeln - jede Situation ist anders.
Verfasst von
Andrew Phillips
Unsere Ideen
Weitere Blogs
Contact



