© Liashko/Shutterstock.com
Voraussetzungen für Continuous Deployment in Unternehmen

Roadmap einer spannenden Reise


In Unternehmen existiert häufig eine umfangreiche Anwendungslandschaft. Dennoch besteht meist der Wunsch oder Bedarf, regelmäßig neue Versionen der Produkte produktiv zu setzen, um entweder neue Features auszuliefern oder Sicherheitslücken zu schließen. Welche Voraussetzungen für Continuous Deployment erfüllt sein müssen, wird anhand einer Roadmap in diesem Artikel vorgestellt. Dabei werden die Herausforderungen von Verfügbarkeits-, Sicherheits- und Qualitätsanforderungen angesprochen. Spezielles Augenmerk richten wir auf den Aspekt verteilter Verantwortlichkeiten, unabhängig von einer erfolgreichen Etablierung einer DevOps-Kultur.

Was Continuous Deployment betrifft, gibt es unterschiedliche Auffassungen. Eine der Definitionen besagt, dass Continuous Delivery in einer Vorproduktionsstufe ende, sodass Continuous Deployment die Fähigkeit sei, generell in Produktion deployen zu können, unabhängig davon, ob dies manuell per Knopfdruck oder automatisch geschähe (Abb. 1).

Nach einer alternativen Definition umfasst Continuous Delivery auch die manuelle Bereitstellung in der Produktion, während aber bei Continuous Deployment diese Bereitstellung stets automatisch erfolgt.

In diesem Artikel gehen wir von der zweitgenannten Definition aus, sodass nicht die Frage aufkommt, was „manuell per Knopfdruck“ bedeuten kann.

kaps_cd_1.tif_fmt1.jpgAbb. 1: Unterschied Continuous Delivery/Deployment

Schritt 1: Continuous Integration

Continuous Integration (CI) ist eine grundlegende Praktik in der (agilen) Softwareentwicklung. Durch immer kürzer werdende Release- und Produktzyklen ist es zwingend erforderlich, die Integration der Entwicklung kontinuierlich – bei jedem Commit – durchzuführen. Dadurch wird sichergestellt, dass der Code kompiliert werden kann und somit zu jedem Zeitpunkt eine funktionierende Software auslieferbar ist – und auftretende Fehler schnell an die Entwickler zurückgemeldet werden (Fast Feedback bzw. Fail Fast). Automatisierte Tests und Analysen helfen dabei, eine kontinuierlich hohe Qualität des Codes und der Anwendung sicherzustellen. Dabei spielen Continuous-Integration-Server wie Jenkins eine entscheidende Rolle.

Mindestens genauso wichtig ist das Branching-Konzept. Dabei hat sich Trunk Based [1] bewährt, also ein zentraler Branch für alle Commits. Feature Branches sollten weitestgehend vermieden werden, um Merge-Konflikte zu verhindern und ständige Integration zu ermöglichen. Alternative Techniken, um länger andauernde Änderungen dennoch zu ermöglichen, sind unter „Schritt...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang