der praktische leitfaden für enterprise devops und ...€¦ · devops wird von organisationen...

37
1 Der praktische Leitfaden für Enterprise DevOps und Continuous Delivery

Upload: others

Post on 30-Apr-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

  • 1

    Der praktische Leitfaden für Enterprise DevOps und Continuous Delivery

  • 2

    Inhalt

    Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    1 Das Geschäftsproblem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2 Continuous Delivery: Schnellen, wettbewerbsfähigen Änderungen angepasste Bereitstellung . . . . . . . . . . . . . . . . . 11

    3 Continuous Delivery: Die Herausforderung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    4 Automatisierung der Bereitstellungs-Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    5 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

  • 3

    Julian Fish ist Micro Focus Director of Products für Release- und Bereitstellungsmanagementlösungen. Julian verfügt über mehr als 15 Jahre Erfahrung in der IT-Branche. Er begann in der Qualitätssicherung, bevor er sich in so verschiedenartigen Domänen wie Infrastrukturverwaltung, Datenbankadministration, Softwareentwicklung, Release-Engineering und IT-Operationen betätigte. In den letzten Jahren hat Julian zahlreiche große Organisationen bei der Transformation ihrer Entwicklungs- und Release-Managementprozesse unterstützt. Julian besitzt einen Abschluss in Angewandter Geologie mit Auszeichnung der University of Leicester.

    Über den Autor

  • 4

    Einleitung

    Wahrscheinlich interessiert Sie diese Broschüre, weil Sie ein besseres Verständnis für die Einführung von

    kontinuierlicher Bereitstellung (Continuous Delivery, CD) und DevOps im Enterprise Software-Segment

    erwerben möchten . Sie und Ihr Unternehmen haben Bedenken im Hinblick auf die sich beschleunigende

    Änderungsrate in dem Markt, in dem Sie wettbewerbsfähig bleiben müssen . Daher sind Sie ständig auf

    der Suche nach Möglichkeiten, Volumen und Geschwindigkeit Ihrer Änderungen zu erhöhen, um die

    Markteinführungszeit zu verkürzen . Die IT-Landschaft ist zunehmend dienstleistungsbezogen geworden .

    Mehr als je zuvor erwarten Kunden bessere Services . Die Interaktion zwischen Verbraucher und

    Unternehmen läuft heute in praktisch jedem Unternehmen zunehmend auf digitaler Ebene ab . Weil sich

    Verbraucher an die kontinuierliche Änderung und Verbesserung der von ihnen verwendeten Apps gewöhnt

    haben, müssen Sie in der Lage sein, die Erwartung Ihrer Kunden zu erfüllen .

    Diese Broschüre ist für Vordenker in Unternehmen, die beabsichtigen, die Geschwindigkeit und das Volumen

    von Änderungen zu erhöhen, die bei kritischen und umsatzgenerierenden IT-Services relevant sind . Da sie

    gleichzeitig bemüht sind, die Stabilität, Sicherheit und Verfügbarkeit der von ihnen gelieferten Services zu

    wahren, ist dieses Ziel schwierig zu erreichen . Diese Broschüre zeigt, wie Unternehmen zahlreiche Wege

    erkunden, um die sichere Bereitstellung strategischer Geschäftslösungen zu beschleunigen . Dabei suchen

    sie nach Möglichkeiten, Neuerungen schneller einzuführen, um mit agileren Konkurrenten Schritt zu halten,

    oder in einem überfüllten Markt die Führung zu übernehmen . Diese Unternehmen wollen mehr als nur die

    beschleunigte Bereitstellung von Releases . Sie möchten ihre bisherige Unternehmenskultur in eine Kultur

    ändern, in der Anwendungen kontinuierlich weiterentwickelt werden . Damit nehmen sie Abschied von

    dem Konzept sequenzieller, serieller Versionen mit langen Vorlaufzeiten und geringer Bereitstellung von

    Funktionen .

    Wenn Sie beabsichtigen, als Teil Ihres DevOps-Transformationsprogramms eine Strategie kontinuierlicher

    Bereitstellung für Unternehmensanwendungen einzuführen, lesen Sie bitte weiter – diese Broschüre ist

    für Sie .

    „Früher ging es bei geschäftlichem Erfolg nur um Größe: Die Großen fressen die Kleinen. Heute geht es um Geschwindigkeit:Die Schnellen fressen die Langsamen.“

    Daniel Burrus

    Futurist

  • 5

    Was versteht man unter Continuous Delivery?

    Bei der kontinuierlichen Bereitstellung (Continuous Delivery) handelt es sich um einen Software

    Engineering-Ansatz, der den gesamten Prozess der Veröffentlichung von Software beeinflusst . Zwar

    stellt die Automatisierung von Prozessen für das Entwickeln, Testen und Bereitstellen von Anwendungen

    eine wesentliche Komponente der kontinuierlichen Bereitstellung dar, aber eine wahrlich kontinuierliche

    Bereitstellungslösung ist nicht ohne größeren Konfigurationsaufwand umzusetzen . Eine solche Lösung

    kann ein gewisses Maß an organisatorischen Veränderungen erfordern . Alle, die mit dem Prozess der

    Veröffentlichung von Unternehmenssoftware zu tun haben, müssen dies berücksichtigen – nicht nur die

    Entwicklung, sondern auch Qualitätssicherung, IT-Operationen und das Unternehmen als Ganzes spielen hier

    eine Rolle .

    In den vergangenen zwei Jahrzehnten hatte die Einführung agiler Entwicklungsverfahren eine drastische

    Auswirkung auf das Bereitstellen von Software durch Unternehmen . Entwicklungsteams können

    Anwendungen jetzt viel schneller erstellen und aktualisieren . Das Produkt wird als eine sich ständig

    weiterentwickelnde, ständig zu verbessernde Code-Basis betrachtet, die sich an den Anforderungen des

    Unternehmens orientiert . Bis vor Kurzem allerdings wurde diese neu erworbene Agilität von fachbezogenen

    Teams nicht immer mit der gleichen Bereitschaft angenommen .

    Continuous Delivery ist ein Mechanismus, der sowohl die Agilität als auch die Geschwindigkeit des

    Bereitstellungsprozesses erhöht . Ihr Erfolg hängt letztlich von der Auflösung der Grenzen zwischen

    Entwicklung, Qualitätssicherung und IT-Operationen ab, sodass der gesamte Software-Lebenszyklus

    kontinuierlich in einer unternehmensorientierten Weise abläuft .

    Was ist DevOps?

    Zum Begriff „DevOps“ gibt es unzählige widersprüchliche Informationen . DevOps wird von Organisationen

    aller Arten als Teil der „neuesten IT-Mode“ betrachtet und zur Vermarktung ihrer Bücher, Software, Hardware,

    Services und Seminare eingesetzt . Ein DevOps-Logo lässt sich leicht auf einem Produkt anbringen, aber das

    allein macht DevOps nicht aus .

    Wikipedia beschreibt DevOps als eine „Kultur, Bewegung oder Praktik, die die Bedeutung der

    Zusammenarbeit und Kommunikation sowohl zwischen Softwareentwicklern als auch anderen IT-Experten

    betont, und dabei gleichzeitig Praktiken für die Automatisierung der Softwarebereitstellung und Änderungen

    an der Infrastruktur unterstützt . Das Ziel besteht darin, eine Kultur und Umgebung zu schaffen, in der

    Software schnell, regelmäßig und zuverlässig entwickelt, getestet und veröffentlicht werden kann .“1 Außerdem

    handelt es sich bei DevOps um eine Kombination aus Entwicklungs- und Operationspraktiken, Richtlinien,

    Prozeduren und Prozessen . In der Welt der Unternehmenssoftware bietet DevOps ein Instrument für den

    organisatorischen Wandel von isolierten, traditionell gegnerischen Gruppen zu kollaborativen Teams mit

    geteilter Eigentümerschaft, einem gemeinsamen Ziel und kollektiver Verantwortung .

    1Entnommen von https://en .wikipedia .org/wiki/DevOps

    https://en.wikipedia.org/wiki/DevOps

  • 6

    Die vorige Generation von Projekten zur Unternehmenstransformation entsprang der schnellen Einführung

    agiler Praktiken in den 2000er Jahren . Heute beginnen DevOps-Initiativen häufig, wenn ein Executive-

    Sponsor Geschichten von erfolgreichen Implementierungen in Organisationen von hohem Wert bei niedrigem

    Ressourcenbedarf hört . Wenn DevOps von Netflix, Facebook und Google erfolgreich implementiert werden

    kann, um eine neue Funktion schneller auf den Markt zu bringen, fragt der Sponsor, warum sie nicht das

    Gleiche tun können . DevOps definiert Praktiken, Prozesse und Strategien zur Förderung der Zusammenarbeit,

    Effizienz und Kommunikation zwischen Teams, die End-to-End in der DevOps-Landschaft involviert sind .

    Davon sind benachbarte Teams betroffen, die eine Rolle bei der Initiative spielen . Diese umfassen (sind

    aber nicht beschränkt auf) Architektur-, Infrastruktur-, Qualitätssicherungs-, Produktionsunterstützungs-,

    Änderungs- und Freigabeteams . Diese Teams sollen zusammengefasst und hinsichtlich Prozess und

    Technologie aufeinander abgestimmt werden, damit Unternehmen den End-to-End-Prozess ihrer

    Anwendungsbereitstellung optimieren können . Dies führt zu schnelleren, hochwertigeren Releases mit

    geringerem Risiko und niedrigeren Kosten .

    In dieser Broschüre wird DevOps aus einer Software-/Anwendungsentwicklungs- und Bereitstellungs-

    Perspektive behandelt, aber es gibt eine Reihe weiterer wichtiger Disziplinen, die Teil jeder größeren DevOps-

    Initiative sein müssen . Dazu zählen:

    • Codieren – Tools für die Entwicklung und Überprüfung von Code, statische Codeanalyse und kontinuierliche Integration (CI)

    • Erstellen – Tools für Versionskontrolle, Codezusammenführung und Build-Status

    • Testen – Kontinuierliche Tests, Testautomatisierung und Ergebnisse zur Ermittlung der Leistung

    • Verpacken – Artefakt-Repository, Anwendungs-Staging vor der Implementierung

    • Veröffentlichen – Änderungsmanagement, Release-Genehmigungen, Release-Automatisierung, Provisioning

    • Konfigurieren – Konfiguration und Verwaltung der Infrastruktur, Tools für Infrastruktur als Code

    • Überwachen – Überwachen der Anwendungsleistung, Arbeitsumfeld des Endbenutzers

    Die wichtigsten Themen in dieser Broschüre sind Codieren, Erstellen, Testen, Verpacken und Veröffentlichen .

    Konfigurieren und Überwachen gehen über ihren Umfang hinaus .

  • 7

    Was Ihnen diese Broschüre bietet

    Viele Unternehmen benötigen Hilfe beim Wandel ihrer Organisation zur Unterstützung von kontinuierlicher

    Bereitstellung, und zwar nicht einfach durch einen Softwareanbieter, sondern über einen Partner für

    die Bereitstellung . Dieser Partner muss ein umfassendes Verständnis des Unternehmens und seiner

    geschäftlichen Initiativen erwerben . Außerdem muss er wissen, wer diese Initiativen leitet und welche Art von

    Hilfe benötigt wird .

    Für ein typisches Großunternehmen ist die Einführung von echten DevOps-Praktiken und Verfahren zur

    kontinuierlichen Bereitstellung ein schwieriges und komplexes Unterfangen . Mit dieser Broschüre möchte

    Micro Focus Ihnen das Umdenken erleichtern, indem Sie Einblick in unsere umfangreichen Erfahrungen in

    einigen der fortschrittlichsten IT-Unternehmen der Welt erhalten . Von unserer strategischen Perspektive aus

    können Sie erfahren, was moderne Unternehmen tun müssen, um die Einführung von DevOps reibungslos zu

    gestalten, seine Effektivität aufrecht zu erhalten und eine ständige Verbesserung zu gewährleisten .

    Beginnen wir also am Anfang.

  • 8

    Das Geschäftsproblem

    Unternehmen konkurrieren in Märkten, die sich aufgrund der zunehmend technologischen Art von Produkten

    und Services schneller verändern als je zuvor . Heutzutage sind selbst die alltäglichsten Produkte digitaler

    Art oder werden über digitale Kanäle vermarktet . Die zwei Triebfedern für schnelle Veränderung sind die

    Erwartungen digitalaffiner Kunden und das Wettrennen um revolutionäre Innovation, mit der Konkurrenten

    überflügelt werden . Der Wettbewerbseffekt wird durch die Globalisierung und die minimalen Kosten des

    Einstiegs in einen Markt verstärkt . Mit neuartigen Geschäftspraktiken und globalisierten, digitalbasierten

    Lieferketten können neue Mitbewerber in wenigen Wochen und manchmal sogar Tagen Märkte zerrütten

    oder zerstören, die über Jahrhunderte hinweg aufgebaut wurden .

    Veränderung in Ihrem Unternehmen zu beschleunigen, damit es diese Bedrohungen abwehren und

    diese Chancen nutzen kann, bedeutet einen Wechsel zu neuen Paradigmen . Dazu gehören soziales und

    mobiles Marketing und der Umstieg auf dynamische Lieferketten, vorübergehend Beschäftigte und kleine,

    spezialisierte, unabhängige Zulieferer (deren Existenz möglicherweise morgen selbst bedroht ist) .

    Vor allem jedoch wird Ihnen die digitale Transformation Ihrer Softwareentwicklung und Ihres

    Bereitstellungsprozesses den Vorsprung geben, den Sie zum Markterfolg benötigen.

    Mit der Verbreitung von Web- und mobilen Anwendungen, und jetzt dem Internet der Dinge (IoT), hat sich im

    vergangenen Jahrzehnt die Art der Software selbst verändert . Im Apple App Store (im Juni 2008 eröffnet)

    gibt es 1,5 Millionen Apps, im Google Play Store (im Dezember 2009 eröffnet) sogar 1,8 Millionen . In

    jedem Marktsektor und vertikalen Segment wird heute verstanden, wie wertvoll Apps für Organisationen

    sein können . Der Wechsel zu einer auf Apps basierenden Lieferung von Wert an den Kunden hat dazu

    geführt, dass Software zunehmend in Komponenten zerlegt wird und ihrer Architektur serviceorientierte

    Modelle zugrunde liegen . Viele Legacy-Anwendungen sind bereits überarbeitet und in Bibliotheken von

    standardisierten Widgets und Komponenten angelegt . Leider lassen sich die technischen Vorteile einer

    Überarbeitung von Anwendungen, die eine schnellere, funktionsbasierte Bereitstellung ermöglichen soll,

    nur mit großem Kosten- und Zeitaufwand erzielen . Projekte scheitern häufig, sind oft nur von kurzer Dauer

    und liefern selten einen differenzierenden Wert . Sie können Trost aus der Tatsache schöpfen, dass Ihre

    Konkurrenten wahrscheinlich vergleichbare Initiativen unternommen haben und die gleichen Erfahrungen

    damit machen wie Sie .

    Durch die Einführung agiler Praktiken für Anwendungs- und Software-Projektmanagement konnten

    Unternehmen immer feinere (inkrementelle) Änderungen an vorhandenen Anwendungen verlangen .

    Entwicklungsteams haben die Erwartung gefördert, dass sie in einem inkrementellen, schnellen „Just-in-

    Time“-Bereitstellungsstil entwickeln können, wenn Änderungen benötigt werden . Durch diesen Ansatz wurden

    Entwicklungskosten gesenkt, die Qualität erhöht und das Geschäftsrisiko reduziert, das jeder an einem

    stabilen System vorgenommenen Änderung innewohnt . Das von diesem Ansatz erzeugte Änderungsvolumen

    jedoch hat den nachgelagerten Prozess der Freigabe von Software in die Produktion überwältigt . Außerdem

    hat dies zu einer Steigerung der komponenten- und anwendungsübergreifenden Abhängigkeit um mehrere

    Größenordnungen geführt, dass diese jetzt so komplex ist, dass sie sich unmittelbar und nachteilig auf die

    Bereitstellung von vorgeschlagenen Änderungen auswirkt .

    Ihr wichtigstes kommerzielles Unterscheidungsmerkmal ist Ihre Fähigkeit, die vom Markt

    gewünschten Funktionen schnell und sicher bereitzustellen, nicht die Geschwindigkeit, mit der Sie

    die Änderungen am Code vornehmen können.

    1

  • 9

    Das gemeinsame Ziel: Bewege dich schnell, ohne etwas kaputt zu machen; aber wenn du etwas kaputt gemacht hast, repariere es schnell

    Wenn schnelle Entwicklung kein Unterscheidungsmerkmal ist, was ist es dann? Befürworter der

    kontinuierlichen Bereitstellung argumentieren, dass der Schlüssel eine schnelle Bereitstellung ist, d . h . die tatsächliche Zustellung der Software in die Produktion, schnell und frei von Fehlern, die einen geschäftlichen

    Mehrwert liefert . Von welchem Nutzen ist die neueste und großartigste Funktion in Ihrer Software, wenn sie

    sich in einem Qualitätssicherungslabor befindet anstatt auf einem Kundengerät?

    Das Hauptziel jeder Branche, ob Engineering, Fertigung oder Software-Bereitstellung, besteht in der

    Verkürzung der Markteinführungszeit . Das bedeutet die Bereitstellung fertiger Software für Endbenutzer,

    die sie wiederum dazu einsetzen, ihren Kunden neue oder aktualisierte Services zu liefern oder schnelles

    Feedback zum Produkt anzubieten . Wer würde nicht lieber schon nach den ersten drei Monaten der neuesten

    Innovation Ihrer Produktmanagement-Organisation herausfinden, dass Kundenanforderungen nicht erfüllt

    werden, als erst zwölf Monate später? Die Prinzipien und Praktiken von kontinuierlicher Bereitstellung

    ermöglichen es Unternehmen, die Ineffizienzen zwischen Geschäft, Entwicklung, Qualitätssicherung und

    Operationen anzusprechen, indem Zykluszeiten verkürzt und unwirtschaftliche Praktiken des End-to-End-

    Prozesses beseitigt werden . Durch Anwendung von Lean-Prinzipien und -Zyklen2 – wie der von Deming

    vorgeschlagenen – haben viele Organisationen entdeckt, dass höhere Lieferungsraten und eine frühzeitige

    Identifizierung von Problemen zu Kostensenkung und Qualitätssteigerung führen . Jede Software-Führungskraft möchte Lieferungsraten, Mengen und Genauigkeit erhöhen, ohne dass es zu Qualitätseinbußen oder höheren Kosten kommt.

    2 https://www .lean .org/WhatsLean

    Bei einer nationalen Apothekenkette…

    Die Kernanwendung für Rezeptverarbeitung wurde traditionell einmal im Jahr

    aktualisiert. Die Dynamik dieses wettbewerbsintensiven Markts jedoch zwang

    das Unternehmen zu einer häufigeren Aktualisierung, um mit den Initiativen

    von Konkurrenten Schritt halten zu können. Daher wurde eine DevOps-

    Initiative speziell zu dem Zweck unternommen, drei Hauptversionen pro Jahr

    möglich zu machen.

    https://www.lean.org/WhatsLean

  • 10

    Eine Hauptherausforderung bei den erforderlichen organisatorischen Veränderungen liegt darin, wie die

    Teams bewertet werden . In der Vergangenheit wurde Ops auf der Grundlage von Service Level Agreements

    (SLAs) bewertet . Konkret erfolgte dies anhand von Messungen der Systembetriebszeit, Anzahl von Vorfällen

    und Zeit zur Wiederherstellung von Services, aber nicht auf Grundlage der Anzahl der an die Produktion

    gelieferten Änderungen . Die Entwicklerteams werden zwar für verspäteten und unvollständigen Code

    getadelt, aber nicht an der Qualität oder Produktionsstabilität von Anwendungen gemessen . Praktiken

    des IT Service Management (ITSM), die von vielen Unternehmen gefördert und mit wesentlichen Folgen

    übernommen wurden, stehen oft in direktem Konflikt mit den agilen Mantras der kontinuierlichen

    Bereitstellung funktionstüchtiger Software . Das meinen dazu die „Principles Behind the Agile Manifesto“

    von agilemanifesto .org: „Unsere oberste Priorität ist es, den Kunden durch frühzeitige und kontinuierliche

    Bereitstellung wertvoller Software zufriedenzustellen .“ Tatsächlich ist dies zwar nicht der Fall, aber ITSM-

    Administratoren nehmen ihr bisheriges Ziel einer Verfügbarkeit von 100 Prozent ernst und wissen, dass

    Änderungen die Traumnote verderben .

    Wie sollen Sie dann mit einem Startup konkurrieren, der Ihren Markt stört, indem er inkrementelle Kapazitäten

    in Veröffentlichungszyklen von zwei Wochen anbietet und sofort Feedback vom Kunden erhält?

    Beginnen Sie mit kontinuierlicher Bereitstellung .

  • 11

    Continuous Delivery: Schnellen, wettbewerbsfähigen Änderungen angepasste Bereitstellung

    Die Einführung der kontinuierlichen Bereitstellung (Continuous Delivery, CD) kann als eine Reise betrachtet

    werden, aber keine, die man leichtfertig unternimmt . Die organisatorischen Auswirkungen und politischen

    Implikationen von CD-Praktiken sind fast so erheblich wie die Vorteile, die sie liefern . Wer dieses Wissen von

    Anfang an besitzt, ist in der Lage, angemessene Erwartungen festzulegen und auf ein klar definiertes Ziel

    fokussiert zu bleiben .

    Jez Humble, ein Technikexperte und Berater im Silicon Valley, wird allgemein der Verdienst zugesprochen, die

    Ziele und Prinzipien von CD in seinem 2010 erschienenen Buch Continuous Delivery: Reliable Software

    Releases through Build, Test, and Deployment Automation (Humble, Farley 2010) konkretisiert zu haben .

    Das Hauptziel der kontinuierlichen Bereitstellung, schreibt Humble, besteht darin, hochwertige, wertvolle

    Software auf effiziente, schnelle und zuverlässige Weise bereitzustellen . Dies kann auf die Ziele des im Jahr

    2000 veröffentlichten Agile Manifesto zurückgeführt werden, in dem erklärt wurde: „Unsere oberste Priorität

    ist es, den Kunden durch frühzeitige und kontinuierliche Bereitstellung wertvoller Software zufriedenzustellen .“

    In Unternehmen gibt es drei Arten von Prozessen: dokumentierte Prozesse, undokumentierte Prozesse und

    die alltägliche Arbeitspraxis . Viele Unternehmen verlassen sich auf undokumentiertes Wissen sowohl in

    App Dev als auch in IT Ops . Schlüsselfiguren fungieren als Helden, weil sich das gesamte Wissen in ihren

    Köpfen befindet und sie die einzigen Personen sind, die eine versagende Version retten können . Wenn jede

    Anwendung von einem derartigen Helden abhängt, ist ein Freigabefenster üblich, bei dem Dutzende, wenn

    nicht Hunderte von Teilnehmern benötigt werden, damit Code erfolgreich die Produktionsphase erreicht .

    Es gibt einen effizienteren und praktischeren Weg zur Bereitstellung von Produktionscode .

    2

    Allianz: DevOps und Ressourceneinsatz

    Die Allianz sah sich mit Herausforderungen im Zusammenhang

    mit den Ressourcenkosten und der Markteinführungszeit der

    Hauptgeschäftsanwendung des Unternehmens konfrontiert. Das AMOS-

    Team (Shared Services) rollte für diese Anwendung täglich bis zu drei

    Releases aus, die sowohl Oracle-Datenbanken- als auch WebSphere-

    Bereitstellungen erforderten. Die Allianz implementierte eine „Einzelklick“-

    Bereitstellungslösung, um den Bedarf an teuren technischen Ressourcen

    zu beseitigen, die an diesen Bereitstellungen beteiligt waren. Mithilfe von

    Deployment Automation konnte die Allianz zwei hochqualifizierte Ressourcen

    pro Release umfunktionieren, die Veröffentlichungszeit verkürzen und die

    Bereitstellung von geschäftlichen Veränderungen erhöhen.

    Klicken Sie hier, um die vollständige Allianz-Fallstudie zu lesen.

    https://www.microfocus.com/media/success-story/allianz_uk_ss.pdf

  • 12

    Jez Humble nennt die folgenden sieben Grundprinzipien zur Gewährleistung einer effektiven Einführung von

    DevOps:

    • Erstellen eines wiederholbaren, zuverlässigen Prozesses

    • Automatisieren aller möglichen Prozesse

    • Versionskontrolle für alles (sogar die Automatisierungsskripte)

    • Wenn es wehtut, tu es häufiger

    • Qualität integrieren

    • „Fertig“ bedeutet freigegeben

    • Alle sind für den Bereitstellungsprozess verantwortlich

    Wir werden diese Grundsätze genauer untersuchen, um die CD-Herausforderungen anzugehen . (In Kapitel 3

    untersuchen wir, wo man bei der Einführung der kontinuierlichen Bereitstellung am besten anfängt . In

    Kapitel 4 tauchen wir tiefer in die Automatisierung der Bereitstellungs-Pipeline ein .)

    Erstellen eines wiederholbaren, zuverlässigen Prozesses

    Wahrscheinlich haben Ihre Entwicklungs-, Qualitätssicherungs- und Bereitstellungsteams das Ziel des

    wiederholbaren Prozesses bereits formuliert – jedes Team in seiner eigenen Abteilung . Dies hat zu drei

    verschiedenen Prozessen und Mechanismen geführt, um den Code in die richtigen Umgebungen zu bringen .

    DevOps-Teams konzentrieren sich auf die Erweiterung des agilen Prozesses von Entwicklung zu Testen und

    Bereitstellung . Eine effektive Einführung von kontinuierlicher Bereitstellung sollte in einem Prozesskontinuum

    resultieren, das diese Teams vereint und sie zu einem kontinuierlichen agilen Prozess verschmelzen lässt .

    Die von Ops und dem Unternehmen benötigten Kontrollen und Konformitätsprinzipien werden beibehalten

    (und sofern möglich automatisiert), und etablierte Praktiken und Arbeitsabläufe werden beibehalten, sofern

    sie angemessen sind . Alles dreht sich um die Optimierung der Prozesse und um die Beseitigung von

    Prozessgrenzen .

    So viel wie möglich automatisieren

    Code von der Entwicklung über die Testphase und Tests zur Benutzerakzeptanz (UAT) in die Produktionsphase

    zu überführen, muss nicht schwierig oder komplex sein . Allerdings ist Irren menschlich, und bei der

    Veröffentlichung oder Bereitstellung von Anwendungen für die Produktion trifft das Sprichwort häufiger

    zu, als es der Fall sein sollte . Kunden bemerken oft, dass die meisten Produktionsausfälle nicht auf Fehler

    bei der Bereitstellung oder Konfiguration, sondern auf eine minderwertige Code- oder Anwendungsqualität

    zurückzuführen sind . Ein Release-Engineer, der am späten Freitagabend 200 Schritte in einer

    Tabellenkalkulation abarbeiten muss, wird nicht jeden Schritt jedes Mal richtig ausführen . Die meisten Fehler

    und Ineffizienzen, die eine Verzögerung von Bereitstellungen verursachen, beruhen auf menschlichen Fehlern .

    Humbles Rat, der von Gartner und anderen führenden Analysten bestätigt wird, ist dieser: Auch wenn Sie nichts anderes tun, starten Sie die Automatisierung Ihrer Bereitstellungen. Ob Sie in der Entwicklung oder im Betrieb beginnen, spielt dabei keine Rolle . Automatisieren Sie an einem Ende der Bereitstellungs-Pipeline, und

    arbeiten Sie sich dann zum anderen Ende vor . Die Automatisierung vereinfacht und beschleunigt Entwicklung,

    Testen und Bereitstellung, während die häufigsten Fehler eliminiert werden .

  • 13

    Wenn Projekte der kontinuierlichen Bereitstellung oder DevOps-Transformation in die Praxis umgesetzt

    werden, ist die Realität, dass die Automatisierung am häufigsten in der Entwicklung beginnt und

    kontinuierliche Integration (CI) implementiert wird . CI ist das Erstellen der Anwendung bei jeder Änderung,

    für die ein Entwickler ein Commit im Quellcode-Repository ablegt . In der Regel wird dies mit einem

    automatisierten Build- und Unit-Test erreicht . Dies bedeutet, dass Feedback sofort geliefert wird, wenn der

    Entwickler den Build beschädigt oder wenn neuer Code die Reihe automatisierter Tests nicht besteht . Auf

    diese Weise kann die Reparatur oder Fehlerbehebung sofort stattfinden, bevor sich der fehlerhafte Code

    schädlich auf andere Entwickler oder die Testteams auswirkt .

    Die sofortige Identifizierung von Problemen und die Ermittlung, wer den Build beschädigt hat, führt zu einer

    radikalen Veränderung des Entwicklungsparadigmas . Statt wie früher einmal täglich Code zu erstellen,

    und dann Stunden mit dem Versuch zu verbringen, 50 oder mehr Code-Commits aufzuheben, um den

    Übeltäter ausfindig zu machen, wissen wir es jetzt sofort – und der betreffende Entwickler ebenfalls . Viele

    Organisationen ringen mit der Aufgabe, einen einzigen, allen Teams gemeinsamen Erstellungsprozess zu

    schaffen . Erfahrenere Teams wenden etablierte CI-Praktiken an, während andere Teams nicht einmal über einen

    gemeinsamen Prozess für das Erstellen verfügen . Durch die Standardisierung der Erstellungsprozesse und die

    anschließende Implementierung von CI wird die grundlegende Entwicklungsanforderung für kontinuierliche

    Bereitstellung erfüllt . Dies kann als der unerlässliche erste Baustein betrachtet werden, der als Grundlage

    für CD-Implementierungen dient . Viele CI-Erstellungstools dehnen ihre Möglichkeiten sogar in Richtung

    erweiterter Automatisierung und Pipeline-Management aus . Momentan setzen sich viele Unternehmen mit der

    Herausforderung auseinander, wie CD-Komponenten übergreifend über Qualitätssicherung und IT-Operationen

    eingeführt werden können . Man hat eine Reihe von technologischen Lösungen mit unterschiedlichem Erfolg

    ausprobiert .

    Versionskontrolle für alle Artefakte

    „Versionskontrolle bietet eine zentrale Informationsquelle für alle Änderungen.

    Wenn eine Änderung fehlschlägt, kann dadurch die Ursache des Scheiterns

    genau bestimmt werden und ein Rollback auf den letzten intakten Status

    problemlos durchgeführt werden, sodass die Wiederherstellung beschleunigt

    wird. Außerdem fördert die Versionskontrolle die Zusammenarbeit

    zwischen Teams. Die Vorteile der Versionskontrolle sind keineswegs auf

    Anwendungscode beschränkt. Tatsächlich zeigt unsere Analyse, dass

    Organisationen, die Versionskontrollen sowohl für System- als auch für

    Anwendungskonfigurationen nutzen, eine bessere IT-Performance aufweisen.“

    State of DevOps Report (Puppet Labs), 2014

  • 14

    Versionskontrolle für alles

    Entwickler sollten die Commits ihrer Codeänderungen in einem gemeinsamen Repository ablegen, bei der jede

    Änderung versioniert wird . Je mehr Entwicklungsteams es in Ihrer Organisation gibt, desto mehr Repositorys

    wird es geben . Unkontrollierte Repository-Ausbreitung entwickelt sich momentan zu einem erheblichen

    Mehraufwand und Risiko, während große Unternehmen vor der Herausforderung stehen, Kontrollen

    einzurichten und die Überwachung und Steuerung des Quellcodes aufrecht zu erhalten . Entwicklungstools,

    die früher unter der Steuerung einer zentralen IT-Funktion standen, befinden sich jetzt auf dem Server eines

    Entwicklers unter dessen Schreibtisch . Unter dem Deckmantel der Agilität haben Entwicklungsteams die

    Kontrolle über ihr Repository übernommen und sich dadurch vom Entwicklungskollektiv und der Sicherheit

    der Unternehmens-IT getrennt . Entwicklungs-Führungskräfte haben die Kontrolle über Projekte verloren, es

    fehlt ihnen der Einblick in den Status der Aufgaben, und ihr wertvolles geistiges Eigentum wandert frei und

    unsicher irgendwo auf dem WAN herum .

    Damit einfache Versionskontrolle in ein kontinuierlicheres Build-Modell umgewandelt werden kann,

    werden alle durchgeführten Änderungen auf mindestens täglicher Basis auf dem Hauptentwicklungszweig

    zusammengeführt und einem gemeinsamen Build unterzogen . Die Ausgabe jenes Builds ist eine ausführbare

    Datei, die ebenfalls im Repository versioniert wird . Eine echte DevOps-Einführung erfordert ein Engagement

    zur Versionierung aller Artefakte von einem Ende des Lebenszyklus der Anwendung zum anderen, z . B .

    Anforderungen, Testskripte, Release-Skripte, UI-Spezifikationen, Prototypen, Build, Baselines und so weiter .

    Wenn es wehtut, tu es häufiger

    IT-Mitarbeiter sind auch nur Menschen . Sie neigen dazu, vor Prozessschritten zurückzuschrecken, die schwierig

    oder fehleranfällig sind, oder wahrscheinlich kritisiert werden . Zur DevOps-Arbeitsmoral gehört es, diese

    anspruchsvollen Aufgaben wiederholt auszuführen, bis sie einfacher werden und die „Schmerzen nachlassen“ .

    Dieser Ansatz macht eine Änderung der Denkweise unumgänglich und fordert, wie so vieles bei DevOps, eine

    Kombination von Zuckerbrot und Peitsche, um die Einführung sicherzustellen .

    Qualität integrieren

    DevOps verwendet Ideen sowohl von agilen Entwicklungspraktiken als auch von der Lean-

    Prozessverbesserung . Diese konzentrieren sich auf die Vermeidung von Fehlern und Verschwendung und

    werden gleichermaßen auf Entwicklung und IT-Operationen angewandt . Mit diesen Grundsätzen werden

    Prozesse entworfen, die Fehler vorhersagen und vermeiden, bevor sie auftreten . Paar-Programmierung

    und kontinuierliche Integration identifizieren Fehler, bevor diese das Entwicklungsteam verlassen . Eine

    kontinuierliche Überwachung und Validierung der Prozessschritte hilft bei der Beseitigung von Engpässen und

    der Optimierung von Aufgaben . Menschen verhalten sich wie Elektronen im Stromfluss – sie nehmen den Weg

    des geringsten Widerstands . Dafür zu sorgen, dass Ihre Prozesse ohne Qualitätseinbuße den kürzesten Weg

    unterstützen, ist für eine erfolgreiche Softwarebereitstellung von entscheidender Bedeutung .

    „Fertig“ bedeutet freigegeben

    Dev und QA sehen ihre Prozesse und Ziele als separat von denen anderer Teams an . DevOps erfordert ein

    Zusammenführen dieser Prozesse in den Köpfen von Einzelpersonen, sodass Entwickler ein Gefühl von

    Eigentümerschaft am Code behalten, bis IT-Operationen die Freigabe an Endbenutzer abgeschlossen haben .

    Ops muss informiert sein, wenn Builds aus Dev hervorgehen, und diese müssen zur sofortigen Freigabe bereit

    sein . Was aus einer Entwicklungsperspektive als agiler „Fertig“-Status betrachtet wird – d . h ., die Geschichte

    ist abgeschlossen und wird an die nächste Prozessphase übergeben – ist in einem CD/DevOps-Modell

    ungeeignet . „Fertig“ bedeutet in diesem Fall „sicher zur Produktion geliefert“ .

  • 15

    Alle sind für den Bereitstellungsprozess verantwortlich

    Obwohl das Ideal darin besteht, Hierarchien abzuflachen, Abteilungen aufzubrechen und Teams zu

    integrieren, ist es nicht immer möglich, die Dev-, QA- und Ops-Abteilungen zu einem integrierten Team

    abzuflachen – häufig aus Kompetenzgründen . Entwicklerressourcen, die betriebliche Sachzwänge und

    Architekturen verstehen, sind so selten wie betriebliche Ressourcen, die Anwendungsarchitekturen und Code

    verstehen . Andererseits führt die Erstellung eines DevOps-Teams von Grund auf nicht zwangsläufig zu einer

    erfolgreichen Implementierung . Wir haben gesehen, wie dedizierte DevOps-Teams erstellt und zwischen

    Entwicklung und IT-Operationen eingefügt wurden . Dadurch wurde aber bloß eine weitere Abteilung zur

    Organisation hinzugefügt, die zusätzliche Probleme verursachte . Die Schaffung des gemeinsamen Ziels, die

    Software so schnell wie möglich in die Produktion zu bringen, führt kurzfristig mit größerer Wahrscheinlichkeit

    zum Erfolg, während Ressourcenprobleme angegangen werden .

    Das einfache DevOps-Mantra „Wenn ich wach bin, bist du wach“ kann die Zusammenarbeit zwischen Teams

    auf unkomplizierte Weise erhöhen, obwohl sie nicht als Möglichkeit betrachtet werden sollte, Hauptbeteiligten

    mehr Arbeit zuzuweisen . Wenn Entwickler stets verfügbar sind, nimmt die Wahrscheinlichkeit einer

    erfolgreichen Bereitstellung zu . Wenn der Entwicklungsprozess vollständig in den Prozess bis zur Freigabe

    integriert ist, erhöht sich die Erfolgswahrscheinlichkeit weiter .

    Die obigen sieben Prinzipien bieten eine Zusammenfassung der Ziele für die kontinuierliche Bereitstellung .

    In den nächsten zwei Kapiteln dieser Broschüre liegt der Schwerpunkt auf Prozess und Tools, um

    grundlegendere Fragen anzusprechen:

    • Wie wird die in der Entwicklung realisierte Flexibilität auf formelle Qualitätssicherungs-, Informationssicherheits- und IT-Operations-Teams erweitert?

    • Wie kann man stets die Produktionsbereitschaft des Codes sicherstellen, damit funktionsbasierte Versionen möglich sind?

    • Wie kann man die Qualität von Änderungen in der Bereitstellungs-Pipeline sichtbar machen?

    • Wie werden Erkenntnisse aus der Produktionsphase wieder der Entwicklungsphase zugeführt?

    Wie lange dauert es, eine Zeile Code zur Produktion zu bringen?

    Bei den meisten Organisationen, die keine kontinuierliche Bereitstellung

    mit langen Release-Zyklen anwenden, lautet die Antwort wahrscheinlich

    „Monate“.

    Der Leser dieser Broschüre sollte sich diese Frage überlegen, um den für die

    Freigabe von Code erforderlichen Aufwand zu verstehen.

  • 16

    Continuous Delivery: Die Herausforderung

    Alle Organisationen, die Geschäfts- oder kundenseitige Anwendungen erstellen, profitieren von der

    Einführung von Praktiken der kontinuierlichen Bereitstellung . Es gibt aber eine Reihe von Voraussetzungen,

    die implementiert werden müssen, um erfolgreich zu sein:

    • Verständnis der geschäftlichen Ziele – Die Digitalisierung von Produkten und Services sowie der Kanäle, über die sie vermarktet und verkauft werden, macht es unerlässlich, dass die IT versteht, was für das

    Unternehmen wirklich wichtig ist . Was sind die Ziele und Vorgaben des Unternehmens? Wie ist der Plan zur

    Erfüllung dieser Ziele? Und wie passen Entwicklung und IT-Operationen in den Kontext der Bereitstellung?

    Viele IT-Organisationen beschäftigen qualifizierte Mitarbeiter, deren alleinige Verantwortung darin

    besteht, als Mittelsmann zwischen Engineering und Geschäft zu fungieren . Diese Personen arbeiten

    mit den Interessenvertretern zusammen, um Feedback und Input von ihnen zu erhalten . Aber warum

    soll nur eine begrenzte Teilmenge von Ressourcen an diesem Prozess beteiligt werden? Je kleiner die

    Anzahl der beteiligten Personen, desto größer die Wahrscheinlichkeit, dass Vorurteile – bewusst oder

    nicht – in die Transformation der geschäftlichen Anforderungen einfließen . Wenn jedoch Mitglieder der

    Teams für Anwendungsentwicklung und -sichtung, IT-Operationen, Produktionsunterstützung und Vorfall-

    und Problemmanagement in den Prozess einbezogen werden, kann ein wesentlich größerer Grad an

    Verständnis und Klarheit der geschäftlichen Anforderungen erreicht werden .

    Dies bedeutet nicht, dass die IT ihre gesamte Zeit in Konzept- oder Planungsbesprechungen verbringen

    sollte, sondern dass ein besseres Verständnis der geschäftlichen Anforderungen zu einer besseren finalen

    Bereitstellung führt . Ein einzelner Product Manager, der „alles weiß, was der Kunde möchte“, wird nicht

    zu einem erfolgreichen Produkt führen . Bei größerer Beteiligung kann die IT ein Verständnis der Vision,

    Richtung und Ziele des Unternehmens erwerben und eine Kultur implementieren, die eine schnelle und

    erfolgreiche Bereitstellung von hochwertigen, zielgerechten Anwendungen unterstützt . Dieser integrierte

    Ansatz führt häufig zu vollständigeren und erfolgreicheren Implementierungen, weil längerfristige Ziele bei

    Design, Definition und Umsetzung berücksichtigt werden .

    • Unterstützung aus der Führungsebene – Wie jede andere Initiative hat DevOps Erfolg mit einem Fürsprecher in der Unternehmensleitung, der Befugnisse zu Änderungen der geschäftlichen Abläufe

    besitzt . Dieser Förderer muss nicht der CIO sein, aber mit dem aktuellen Medienrummel um DevOps

    mag der CIO für diese Initiative empfänglicher sein . Geschäftlicher Druck allein kann bedeuten, dass

    der Förderer aus der Unternehmensleitung bereit ist, eine Initiative ins Leben zu rufen, bei der Releases

    beschleunigt und häufigere Anwendungsbereitstellungen ermöglicht werden . Und es ist möglich, dass der

    Begriff „Continuous Delivery“ oder „DevOps“ zur Beschreibung verwendet wird .

    • Kontinuierliche Integration – CI ist im Wesentlichen eine Entwicklungspraktik, aber weil sie auch ein bestimmtes Maß an automatisiertem Testen von Software umfasst (zumindest Einheitentest),

    gerät sie zunehmend in den Bereich der Qualitätssicherung . Gewöhnlich werden bei agilen Ansätzen

    Entwicklungs- und Testressourcen integriert . Daher dürfen Teams die Einbindung des Einheitentests in

    den Entwicklungszyklus nicht als neues Konzept betrachten . Indem CI-Modelle die Lieferung von Build-

    Artefakten weiter nach rechts – in Richtung der IT-Operationsteams – zu verlagern suchen, machen sich

    die Auswirkungen auf Qualitätssicherungsteams stärker bemerkbar . Befürworter von CD stimmen meist

    darin überein, dass es wenig Sinn hat, DevOps in einer Organisation zu fördern, die CI noch nicht eingeführt

    hat und mindestens diesen Einsatz zur Prozessautomatisierung gezeigt hat .

    3

  • 17

    • Änderungsmanagement – Viele Unternehmen sind bereit, ITSM/ITIL-Prozesse für die Organisierung von IT-Bereitstellung und Problemverfolgung umzusetzen . Zwar bedeutet die Einführung von ITIL eine

    Implementierung von formellen Release Management- oder Service-Übergangsprozessen, doch ist eine

    effektive Bereitstellung von Software auf sorgfältig definierte betriebliche Änderungsmanagement-

    Praktiken angewiesen, wozu ITIL eine gute Anleitung bietet . ITIL-Praktiken, und DevOps-Praktiken

    generell, übersehen oft den Wert der Verfolgung von Änderungen auf Entwicklungsebene im Vergleich zu

    Änderungen auf Betriebsebene . Wenn sowohl ein gut definierter, ITIL-konformer Betriebsprozess als auch

    ein gut definierter Entwicklungsprozess auf agiler Basis vorhanden ist, zwischen denen wenig bis keine

    Interaktion stattfindet, führt dies sofort zu einer Trennung von Dev und Ops .

    Auf Unternehmensebene gibt es häufig mehrere Tools . Bedenken Sie aber, dass erstklassige Tools

    für Betriebsänderungen und das für Entwicklungsänderungen bevorzugte Tool möglicherweise zwei

    vollständig isolierte Produkte mit wenig bis keiner Prozessüberlappung sind . Eine einfache Möglichkeit,

    die Mauern zwischen Dev und Ops zu überwinden, besteht in der Entwicklung eines gemeinsamen

    Änderungsmanagement-Prozesses für die gesamte Bereitstellungs-Pipeline . Dabei ist zu beachten, dass

    es sich beim Änderungsmanagement um eine Risikobegrenzungsstrategie handelt . Viele CD-Befürworter

    betrachten einen formellen Änderungsmanagement-Prozess in einer erfolgreichen Bereitstellungs-Pipeline

    als unnötig . Folgende Frage muss für Ihr Unternehmen gestellt werden: Reicht es aus, Bereitstellungen

    schnell in Ihre Umgebung zu bringen, oder wünschen Sie auch die Möglichkeit zur Validierung und

    Erklärung, welche spezifischen Dev- und Ops-Änderungen als Teil der Bereitstellung geliefert wurden?

    • Automatisierung – Die Automatisierung von Code- und Konfigurationsbereitstellungen mit nur einem Satz von umgebungsübergreifenden Bereitstellungsprozessen unter Verwendung von Parametrisierung hilft

    sicherzustellen, dass umgebungsspezifische Einschränkungen und Anforderungen erfüllt werden . Setzen

    Sie Code nicht einfach auf verschiedene Weise ein, weil Sie von der Testphase zur Produktionsphase

    wechseln . Wiederholbarkeit und Konsistenz sind der Schlüssel zu einer erfolgreichen, präzisen und

    schnellen Bereitstellung . Stellen Sie sicher, dass alle Artefakte vom gleichen Speicherort oder Artefakt-

    Repository bereitgestellt werden .

    Eine Bereitstellung auf gleiche Weise über alle Umgebungen hinweg ist sowohl zeit- als auch

    kosteneffizient . Die Anwendung des gleichen Prozesses gewährleistet konsistenteres Testen, und

    umgebungsspezifische Probleme lassen sich einfacher bestimmen . Je automatisierter dieser Prozess

    ist, desto wiederholbarer und zuverlässiger ist er . Dies schlägt sich in schnelleren Bereitstellungen,

    reduzierten Ausfallzeiten und größerem Vertrauen seitens des Unternehmens nieder, dass Änderungen auf

    zuverlässige Weise bereitgestellt werden .

    Eine Möglichkeit, die Mauern zwischen Dev und Ops zu überwinden, ist die

    Entwicklung eines gemeinsamen Änderungsmanagement-Prozesses

    für die gesamte Bereitstellungs-Pipeline. Dazu gehören integrierte Prozesse

    sowohl für Entwicklungs- als auch für Betriebsänderungen.

  • 18

    Andere Tools und Prozesse können Bedingungen schaffen, die für CD günstig sind, die aber nicht als

    Voraussetzungen betrachtet werden müssen . DevOps überlappt zum Beispiel Application Lifecycle

    Management (ALM) und Enterprise Service Management (ESM), die Kette von Disziplinen, mit denen

    Organisationen Anwendungen „von der Wiege bis zur Bahre“ verwalten: Anforderungsmanagement,

    Softwarearchitektur, Entwicklung, Testen, Softwarewartung, Änderungsmanagement, Projektmanagement,

    Release-Management sowie Servicemanagement . Bei einigen Organisationen gehört Product Lifecycle

    Management (PLM) ebenfalls dazu . ALM kann verschiedene Grade der Prozesssteuerung aufweisen,

    und jede Organisation verfügt über einen Anwendungslebenszyklus (ALM), auch wenn es dort unter

    einen anderen Namen bekannt ist . Man kann Continuous Delivery und wiederum DevOps, als eine

    Weiterentwicklung der Idee von ALM (oder der von Forrester 2010 aufgestellten Definition von ALM 2 .0+3)

    betrachten . Es gibt keine bestimmte Implementierung von ALM-Tools oder -Produkten, die vorhanden sein

    muss, bevor eine DevOps-Transformationsstrategie erfolgreich eingeführt werden kann .

    Kontinuierliche Bereitstellung ist ein überzeugender erster Schritt für praktisch jede Art von Unternehmen,

    obwohl Befürworter zu der Ansicht neigen, CD sei für bestimmte Arten von Anwendungen besser

    geeignet als für andere . Tatsächlich wird bei der lautstarken Forderung nach Einführung von DevOps und

    CD auf Unternehmensebene oft übersehen, dass bestimmte Anwendungen in einer Weise ausgelegt

    und implementiert sind, bei der CD unpraktisch ist . Angesichts des Volumens und der Geschwindigkeit

    von Änderungen in der Entwicklung von webbasierten oder mobilen Anwendungen ist die kontinuierliche

    Bereitstellung bei diesen Arten von Anwendungen höchst angemessen . Höchstwahrscheinlich hat

    jedes Unternehmen, das die Entwicklung von Java- oder .NET-Anwendungen vornimmt, bereits die

    kontinuierliche Integration oder gemeinsame Build-Prozesse implementiert . Ältere „Legacy“-Technologien

    sind möglicherweise weniger geeignete Ziele für CD . Trotzdem versuchen viele Unternehmen, ihre

    Leistungsfähigkeit zu beweisen, indem sie die schwierigste Herausforderung zuerst bewältigen . Dieser

    Ansatz führt häufig zu Fehlern oder schlechten Einführungsraten und einer geringen Investitionsrentabilität .

    Gartner spricht von „Bimodaler IT“4  – agil und kontinuierlich für manche Anwendungen, stabil und

    sequenziell für andere . In Wirklichkeit ist diese Praktik „multi-modale IT“, weil Anwendungen verschiedene

    Geschwindigkeiten von Bereitstellung und Änderung haben . Abhängig von einer Reihe von Faktoren, z . B .

    organisatorischer Reife und Fähigkeiten des Anwendungsentwicklungs-Teams, begegnen sich Agile und

    Risikoscheue in verschiedenen Phasen . Anwendungen, die architektonisch als ungeeignet für CD gelten,

    können als Kandidaten für die Implementierung zu einem späteren Zeitpunkt identifiziert werden .

    Ein Portfolio von Unternehmensanwendungen kann zu einem ausschlaggebenden Faktor für die DevOps-

    Bereitschaft einer Organisation werden . Eine wichtige Frage zu einer geschäftskritischen Anwendung ist, ob

    sie diese neue Welt des schnellen Wandels unterstützen kann . Wenn nicht, könnte dies ein Signal dafür sein,

    dass es Zeit ist, die betreffende Anwendung zu überarbeiten oder durch eine Anwendung zu ersetzen, deren

    Architektur für CD geeignet ist, auch wenn dies ein kostspieliges und zeitaufwendiges Unterfangen sein

    kann . Unternehmen können die Leistungsfähigkeit von Anwendungen über eine realistische Portfolioanalyse

    bestimmen, und diese mit einer detaillierten Geschäftsanalyse des Werts der Anwendung überlagern .

    Hoher geschäftlicher Wert, geringe Komplexität und Produkte mit guter Architektur bilden den natürlichen

    Ausgangspunkt für jede CD-Strategie eines Unternehmens . Zuerst müssen die richtigen Anwendungen

    ausgewählt und Zugkraft gewonnen werden . Zu einem späteren Zeitpunkt kann das Projekt auf den Rest des

    Unternehmens ausgedehnt werden . Auf diese Weise sorgt Erfolg für Erfolg .

    3 Carey Schwaber et al . Forrester 2008-2010 https://www .forrester .com/report/ALM+20_Getting+Closer+But+Not+There+Yet/-/E-RES46166

    4 http://www .gartner .com/it-glossary/bimodal

    http://www.gartner.com/it-glossary/bimodal

  • 19

    Continuous Delivery und der Bereitstellungsprozess

    Die Bereitstellungs-Pipeline stellt die wichtigste Funktion des CD-Prozesses dar . Wenn ein Entwickler-

    Commit stattfindet, oder wie man früher sagte, wenn ein Entwickler eine Codeänderung eincheckt, bindet

    ein CI-Prozess die Änderung in den Rest der im Repository gespeicherten Code-Basis ein, und die Software

    wird aufgebaut und einheitengetestet . Ein erfolgreicher Build und Einheitentest führen zur Instanziierung der

    Bereitstellungs-Pipeline, wobei es sich einfach um eine modellierte Darstellung der logischen Umgebungen

    handelt, in der die neu bereitgestellten Artefakte bereitgestellt werden sollten . Dieser Prozess wird immer

    dann wiederholt, wenn ein Entwickler eine Codeänderung übergibt .

    Wenn der neue Build den Einheitentest abgeschlossen hat, stellt die Bereitstellungs-Pipeline den Code

    automatisch in der nächsten Umgebung bereit, wo er in der Regel einigen Integrationstests unterzogen

    wird . Sobald eine Bereitstellungs-Pipeline initiiert worden ist, gewinnt automatisiertes Testen an Bedeutung .

    Wenn die Erstellung des Builds fehlschlägt, werden die Entwickler sofort benachrichtigt und können den

    Fehlerbehebungsprozess in Gang setzen . Wenn eine Codeänderung bereitgestellt wird, und Probleme im

    Build identifiziert werden, kann die zum Beseitigen der Probleme benötigte Zeit deutlich verkürzt werden .

    Statt darüber zu streiten, wer den Build beschädigte und welche Änderungen das Problem verursachten,

    können Entwickler dies sofort ermitteln (das letzte Commit beschädigte den Build) . Um sicherzustellen,

    dass hochwertiger Code bereitgestellt wird, durchläuft jeder Build die Pipeline und verschiedene Ebenen

    von automatisierten Tests, einschließlich Performance-, Kapazitäts- und Sicherheitsdurchdringungstests .

    Schließlich kann der Build einem manuellen Prüfprozess, gewöhnlich einer Form von UAT, unterzogen

    werden, der zur geschäftlichen Freigabe führt . In diesem Fall kann die Bereitstellung als eine technische

    Entscheidung zur Freigabe einer Funktion in der Software betrachtet werden, wohingegen ein Release mit

    einer geschäftlichen Entscheidung verbunden ist, die Funktion oder Funktionen in die Produktionsphase

    einzuführen, oder sie dem Endbenutzer zur Verfügung zu stellen .

    Eine interessante Frage, die nur von der Organisation beantwortet werden kann, die versucht, eine DevOps-

    Strategie zu implementieren, ist, ob die DevOps-Initiative der IT-Organisation eine ideale Struktur und

    einen idealen Prozess auferlegen sollte, oder ob sie sich an vorhandenen Prozessen orientieren sollte . In

    der Realität spielt dies meist keine Rolle, solange die Voraussetzungen für die Einführung erfüllt sind . Die

    für die erfolgreiche Einführung eines DevOps-Transformationsprogramms erforderlichen Prozess- und

    Tooländerungen bedeuten, dass es kein Patentrezept gibt . Eine vernünftige Antwort lautet: was immer in Ihrer

    Unternehmenskultur am besten funktionieren könnte .

    Wie ändert sich Ihr Anwendungsfreigabe-Prozess, wenn Sie kontinuierliche Bereitstellung implementiert und

    eine Bereitstellungs-Pipeline aufgebaut haben?

  • 20

    Einem häufigen Missverständnis zufolge erfordert CD den Abbau der isolierten Organisation von IT-

    Abteilungen sowie eine Änderung der Reporting-Struktur, um sie aufnahmefähig für einen kontinuierlichen

    Prozess zu machen . In Wirklichkeit ist die Erwartung, dass eine organisatorische Änderung sofort auftritt,

    unrealistisch . Eine solche Änderung ist keine unabdingbare Voraussetzung für die Durchführung einer

    DevOps-Transformation oder die Implementierung von CD . Der Erfolg des Transformationsprojekts hängt von

    der Fähigkeit und Bereitschaft der Entwicklungs-, Test- und Bereitstellungsteams zur Zusammenarbeit an

    einem gemeinsamen optimierten Prozess ab .

    In der Entwicklung wurden möglicherweise seit mehr als einem Jahrzehnt agile Methoden angewandt, und

    ausgereifte und gut laufende Prozesse können vorhanden sein . Agilität kann auch bei IT-Operationen erreicht

    werden, doch ist dies auf Unternehmensebene nicht typisch, insbesondere nicht in US-Unternehmen .

    Scrum, eine gängige Herangehensweise an agile Bereitstellung, gestattet Entwicklern die Teilnahme an

    Analyse, Design und Erstellen einer Anwendung . Der Vorteil liegt in schnellen Feedback-Zyklen, die oft die

    kontinuierliche Integration, Feedback-Schleifen und automatisiertes Testen umfassen . Dies erlaubt es dem

    Entwicklungsteam, am Ende eines jeden „Sprints“ oder engen Bereitstellungszeitraums eine funktionierende

    oder bereitstellbare Software zu produzieren . Leider laufen Testen und Bereitstellung in vielen Unternehmen

    in Wasserfallmanier ab, da diese Phasen nicht zur Entwicklung gehören und die Qualitätssicherungs- und

    Release Management-Teams den laufenden Datenfluss steuern möchten . Bis Verbesserungen in Qualität

    und Geschwindigkeit nachgewiesen werden können, lassen sich vorhandene Abteilungen und Barrieren nur

    schwer beseitigen .

    In einem auf kontinuierlicher Bereitstellung basierenden Modell besteht das Ziel, dass jeder Sprint

    Analyse › Design › Build ›Test › Bereitstellung beinhaltet . Zuerst wurde in der Fertigung und später in der

    Softwareentwicklung nachgewiesen, dass eine Bereitstellung in kleineren Batches mit kontinuierlichem Fluss

    zu höherer Qualität und schnellerer Bereitstellung führt . Ohne Hindernisse oder Mauern wird der Fluss von

    Daten und Anwendungen reibungsloser .

    Analyse Design Build Test Bereits- tellung

  • 21

    Nach Abschluss des Builds liegt das Problem im Lebenszyklus immer bei der Übergabe . Die primären Lücken

    entstehen zwischen Build und Bereitstellung . Dieser Zeitpunkt ist in der Regel durch die Übergabe an eine

    spezielle Testorganisation gekennzeichnet, die für Verwaltung und Bereitstellung der Testumgebungen

    verantwortlich ist, und dann in diesen die Bereitstellung vornimmt . Während dieser Übergaben geht jedes

    Team davon aus, dass seine Verantwortlichkeiten umgesetzt wurden, und verliert die allgemeinen Ziele des

    Release aus den Augen .

    In einem herkömmlichen Modell wurde die Übergabe von der Entwicklung zum Betrieb von Projekt- oder

    Freigabemanagern gehandhabt, aber die beiden Organisationen blieben getrennt . In einem CD-Modell

    funktioniert diese Trennung von Aufgabengebiet und Prozess nicht . Entwickler müssen sich mehr an

    betrieblichen Bedenken orientieren, während sich IT-Operationsteams zumindest an nachgelagerten

    Aspekten der Entwicklung beteiligen müssen . Das bedeutet nicht, dass IT-Operationsteams plötzlich über

    ein Verständnis komplexer Anwendungsarchitekturen verfügen müssen . Sie sollten aber zumindest die

    Abhängigkeiten und Ausrichtung von Anwendungen verstehen .

    An allen Punkten auf dem Weg zur Produktion gibt es Herausforderungen, die bewältigt werden müssen .

    Beispielsweise muss das Qualitätssicherungsteam möglicherweise einen Änderungsauftrag oder ein

    Änderungsticket mit der IT-Operationsgruppe protokollieren, bevor die neue Version einer Anwendung

    bereitgestellt werden kann . Dieses Ticket gibt lediglich an, dass die Anwendung zu einem bestimmten

    Zeitpunkt in Umgebung X bereitgestellt werden muss . Bei dieser Umgebung kann es sich um einen

    einzelnen Server oder mehrere Server mit vielen Abhängigkeiten handeln . In manchen Organisationen

    wird dieser Prozess für jede Umgebung wiederholt . Dazu wird nicht das gleiche Ticket verwendet, sondern

    jedes Mal ein neues Ticket erstellt . Die richtigen Anwendungsversionen und Leistungen, einschließlich des

    Bereitstellungsauftrags, werden hinzugefügt .

    Wenn Unternehmen Code erneut in verschiedenen Umgebungen mit einem unterschiedlichen

    Anweisungssatz und potenziell anderen Binärdateien bereitstellen, kann man sich dann wundern, dass

    Produktionsbereitstellungen die Ursache von bis zu 85 Prozent5 aller Produktionsprobleme sind? Im

    Gegensatz dazu ermöglicht der Einsatz eines CD-Modells, bei dem der Prozess der Bereitstellung in

    anderen Umgebungen automatisiert ist, hoffentlich auf Self-Service-Ebene, dem Qualitätssicherungsteam

    zu sagen: „Ich möchte, dass diese bestimmte Anwendungsversion zu diesem bestimmten Zeitpunkt in dieser

    bestimmten Umgebung bereitgestellt wird .“ Da diese Bereitstellung auf eine vollständig automatisierte Weise

    erfolgt, wird ein Ressourcen-Engpass beseitigt und ein potenzieller Fehler und Risikobereich durch einen

    interaktionsfreien Prozessablauf ersetzt .

    5 Gartner: How IT Operations Can Set Up an Effective, Centralized Release Management Process . Veröffentlicht: 3 . Juni 2013; Analysten: George Spafford, Ronni J . Colville .

  • 22

    Eine wirklich DevOps-zentrische Organisation befasst sich auch mit der Bereitstellung der Infrastruktur für

    Entwicklung, der Infrastruktur für Tests sowie der Infrastruktur für Bereitstellung, während die Integration

    dieser Infrastrukturen in die Anwendungsbereitstellungs- und Testprozesse ebenfalls berücksichtigt

    wird . Der neue Prozessablauf und das neue Interaktionsmodell wiederum treiben neue Tool- und

    Prozessverbesserungen voran . Letztendlich sieht die Bereitstellungs-Pipeline eher wie in Abbildung 1

    gezeigt aus .

    Wie die Grafik zeigt, können Automatisierungs-Tools die Rollen von Mitarbeitern im Bereitstellungsprozess auf

    vielerlei Weise beeinflussen .

    Bei den Tools zur Implementierung der kontinuierlichen Integration sollte es sich um den ersten Teil der

    Bereitstellungs-Pipeline handeln . Der Betrieb mag kein direktes Interesse am CI-Erstellungsprozess haben,

    aber da dieser Prozess Tests und nachfolgende Bereitstellungen auslöst, ist das Ergebnis der CI-Erstellung

    von direktem Interesse für den letztendlichen Bereitstellungsprozess .

    IT-Operationsteams sind mehr als vertraut mit dem Konzept der Ausführung eines Skripts in einer bestimmten

    Umgebung . Jedoch könnte das Konzept der Modellierung eines gesamten Bereitstellungsprozesses, der sich

    durch eine Automatisierung des Prozesses auszeichnet, neu für sie sein .

    Abbildung 1: DevOps-Bereitstellungs-Pipeline

    Einheitentests werden in der Regel als Teil der

    kontinuierlichen Integration automatisiert, aber

    Organisationen quälen sich noch mit der Automatisierung von

    Integration und Akzeptanztests. Manuelles Testen kann nicht

    automatisiert werden.

  • 23

    Auswirkungen auf den Testprozess

    In vielen Organisationen entwickelt sich die Qualitätssicherungsfunktion vom traditionellen

    wasserfallbasierten, übergabebezogenen Ansatz zu einem stärker integrierten, voll umfassenden Prozess .

    Während Entwicklungsteams für die Erhöhung des Grades von Einheitentests durch Implementierung

    von CI die Verantwortung übernommen haben, mussten sich Qualitätssicherungsteams an eine erheblich

    schnellere Lieferungsrate und Verfügbarkeit von neu erstellten oder geänderten Funktionen anpassen . Der

    von Entwicklungsteams einheitengetestete Code wird anschließend – hoffentlich mithilfe von automatisierten

    Prozessen – in einer Integrationstest-Umgebung bereitgestellt . Dort wird er unter Einsatz einer beliebigen

    Anzahl von automatisierten Testtools getestet . Vor seiner endgültigen Freigabe wird er der Produktion

    bereitgestellt und in der UAT-Umgebung validiert . Allerdings führt ein Mangel an Transparenz in diesem End-

    to-End-Prozess zu Prozessineffizienzen und zu fehlender Echtzeit-Rückverfolgbarkeit und -Status-Accounting .

    In vielen Fällen ist die Qualitätssicherungsorganisation dafür verantwortlich, dass ein Zusammenhang

    zwischen diesen verschiedenen Umgebungen hergestellt wird . Beispiel: die physische

    Einheitentestumgebung, die Eigentum der Entwicklung ist und von dieser bereitgestellt wird;

    die Integrationstest- und UAT-Umgebungen im Besitz des Qualitätssicherungsteams; und die

    Produktionsumgebung im Besitz von IT-Operationen . Jedes Team kann seinen eigenen Prozess für die

    Bereitstellung dieser Umgebungen haben, die in einer idealen Welt im Hinblick auf Einrichtung und

    Konfiguration identisch sind . Um den Code vom Einheitentest zum Integrationstest zu bringen, kann

    die Entwicklung dem Qualitätssicherungsteam einen Änderungsantrag zuweisen und warten, bis die

    Qualitätssicherung die Umgebung als verfügbar markiert oder sogar eine Infrastruktur bereitstellt . Die

    nachfolgende Übergabe von UAT zur Produktion kann ähnlich sein, aber der Operationsprozess ist ein eigener

    und kann sich vom Prozess nach der Qualitätssicherung unterscheiden .

    Die Implementierung von DevOps- oder CD-Praktiken erfordert eine weit engere Orientierung der

    Qualitätssicherungsorganisation sowohl an der Entwicklungsorganisation, um ein gründliches und

    vollständiges Verständnis dessen sicherzustellen, was aus der Pipeline erwartet wird, als auch am IT-

    Operationsteam, um sicherzustellen, dass die endgültige Übergabe an die Produktion auch wirklich erfolgreich

    ist . Testteams benötigen ein wesentlich besseres Verständnis vieler Automatisierungstechnologien .

    Diese reichen von Automatisierungstools für Anwendungsfreigabe, die die Dateien auf den verwalteten

    Umgebungen bereitstellen, über automatisierte Testtools, die die Anwendung validieren, bis hin zu

    Infrastruktur-Bereitstellungstools, die zum Erstellen neuer Umgebungen und physischer Infrastruktur

    eingesetzt werden, wo diese benötigt werden . Die Anzahl von Umgebungen, die zur Unterstützung der

    funktionsbasierten CD benötigt werden, macht auch das Konzept von Container und containerbasierten

    Images attraktiv, wobei sich der Durchsatz der Testkapazität entsprechend den Entwicklungssteigerungen

    erhöht .

  • 24

    Automatisierung der Bereitstellungs-Pipeline

    Wie wir in Kapitel 1 gesehen haben, plädieren Befürworter der kontinuierlichen Bereitstellung für die

    Automatisierung von möglichst vielen Prozessen – von einem Ende des Freigabeprozesses zum anderen . Eine

    Automatisierung, die effektive Entwicklungsprozesse unterstützt (z . B . Peer-Review, statische Analyse und

    Einheitentests), gewährleistet eine höhere Entwicklungsqualität am Anfang der Bereitstellungs-Pipeline .

    Dafür gibt es eine einfache Begründung: Die „Bits“ sollten nicht von Menschen bewegt oder bereitgestellt

    werden . Bei der Bereitstellung von Anwendungen arbeiten Systeme besser und konsistenter als Menschen .

    Eines der ersten Dinge, die Sie sich auf dem Weg zu kontinuierlicher Bereitstellung anschauen sollten, ist die

    Automatisierung von manuellen Aufgaben und Übergaben . Mit Automatisierung können Sie schnelle Erfolge

    erzielen . Dieser Ansatz kann auf eine Weise durchgeführt werden, bei der die einfachsten oder wertvollsten

    Anwendungen zuerst anvisiert werden . Danach kann der Vorgang schnell und ohne größere organisatorische

    Änderungen wiederholt werden .

    4

    Abbildung 2: Toolketten-Integration mit der Bereitstellungs-Automatisierungstopologie von Micro Focus

    Integrationstest Tests zur Benut-zerakzeptanzVorproduktion/

    StagingProduktion

    Repository- Bereitstellung

    Konfigura-tionsinforma-

    tionen

    Umgebungs- Provisioning

    Testautomati-sierungen

    Bereitstellungsautomatisierung

    Build und CIAnwen-

    dungsüber-wachung

    BereitstellungSecurity Gate-

    keeper

  • 25

    Durch gemeinsame Technologielösungen können die Mitglieder von Entwicklungs- und IT-Operationsteams

    zusammenarbeiten, um die Änderungsgeschwindigkeit im ganzen System zu erhöhen, Best Practices

    durchzusetzen, Konformität zu gewährleisten und sicherzustellen, dass Releases wiederholbar, zuverlässig

    und vorhersagbar sind . Wie bereits erwähnt, je früher Entwicklungsfehler entdeckt und identifiziert werden,

    desto wahrscheinlicher kann das Team Überarbeitungen beseitigen, die Qualität verbessern und die

    Freigabebereitschaft des Codes sicherstellen .

    Ergänzende aufgabenspezifische Tools werden in Verbindung mit leistungsfähigen Source-, Build- und

    Implementierungs-Tools zur Automatisierung der Bereitstellungs-Pipeline eingesetzt . Diese sogenannte

    DevOps-Toolkette kann viele Tools verschiedener Anbieter integrieren und unterschiedliche Integrationen

    innerhalb des Freigabe- und Bereitstellungsprozesses verwenden . Zu den Haupttools in der DevOp-Toolkette

    gehören:

    • Quellcodeverwaltungs-Tools – Idealerweise mit integrierten Funktionen für Änderungsmanagement, Arbeitselementverwaltung, Fehlernachverfolgung oder Anforderungsbearbeitung ausgestattet, gestatten

    Quellcodeverwaltungs-Tools die Nachverfolgung und Genehmigung mehrerer funktionsbasierter

    Bereitstellungen .

    Diese Tools lassen sich vollständig in die geeigneten Build-/CI-Tools integrieren .

    • Tools für kontinuierliche Integration (CI) – Zur Überwachung von Änderungen an der Code-Basis und Verwaltung des automatischen Re-Building- und Einheitentests vorgesehen, benachrichtigen CI-Tools den

    Entwickler automatisch, falls der Build oder Einheitentest fehlschlägt . CI-Tools können Funktionen für die

    Integration von Artefakt-Verwaltung enthalten .

    • Tools für Continuous Delivery (CD) – Indem sie einen automatisierten Bereitstellungsmechanismus bieten, der in der Regel ohne menschlichen Eingriff ausgelöst wird, um Code am nächsten Bereich

    in der Bereitstellungs-Pipeline bereitzustellen, geben CD-Tools den Interessengruppen an allen

    Berührungspunkten im Freigabeprozess Feedback .

    • Tools für Automatisierung der Bereitstellungs-Pipeline – Pipeline-Automatisierungstools, die entwickelt wurden, um digitale Artefakte in einer vordefinierten oder dynamischen Reihenfolge durch

    Entwicklung, Test und Produktion zu bewegen, sollten es Benutzern ermöglichen, den Inhalt von

    Umgebungen jederzeit nachzuverfolgen .

    • Release Management-Tools – Diese Tools sind darauf ausgelegt, ein Release über den End-to-End-Prozess hinweg zu definieren, zu verwalten und zu verfolgen . Dies umfasst die Verwaltung der physischen

    Release-Artefakte, Beziehungen zwischen Anwendungen, Services, Plattformen oder sogar Komponenten

    sowie die in einem Release enthaltenen Änderungen, und zwar sowohl aus einer geschäftlichen als

    auch aus einer Entwicklungsperspektive . Weitere wichtige Funktionen beinhalten Links zu Testfällen,

    Aktivitätssequenzierung, Genehmigungen und Meilensteinverwaltung .

    • Überwachungstools – In der Regel ist die Bereitstellungs-Toolkette mit Anwendungen zum Überwachen der Anwendungsleistung integriert, die die Auswirkungen von neu bereitgestelltem Code verfolgen, mit

    denen IT-Operationsteams Abweichungen erkennen können, sobald sie auftreten . Diese Tools umfassen

    häufig eine erweiterte Analysefunktionalität und Performance-Dashboards .

  • 26

    Der Kernprozess: Continuous Integration und Continuous Deployment

    Der CI-Prozess unterliegt in der Regel der Entwicklungsorganisation . Jede Änderung an einer Software-

    Code-Basis wird im Wesentlichen in Echtzeit getestet . Wenn ein Entwickler das Commit einer Codeänderung

    ausführt, löst dies einen automatischen Prozess zum Testen der betreffenden Software aus, sodass dem

    Unternehmen am Ende dieses Prozesses ein bereitstellbares Element vorliegt . Weniger Mängel in dem zur

    Bereitstellung freigegebenen Code sind das angestrebte Ergebnis .

    Der Build-Prozess wird durch das Developer-Commit ausgelöst . Ein Entwickler, der einen Build-Fehler

    verursacht, wird sofort darüber benachrichtigt (durch das Build-Tool), dass er den Build beschädigt hat . In

    diesem Szenario liegt es in der Verantwortung des Entwicklers, der den Build beschädigt hat, die Fehler zu

    korrigieren und den Build wieder in Gang zu bringen . Wenn mehr als ein Build-Fehler auftritt, können ein

    Eskalationsverfahren und zusätzliche Benachrichtigungen generiert werden, um den Rest des Teams davon

    zu informieren, dass der Build instabil ist .

    Als Teil des CI-Prozesses wird eine Form des automatischen Testens auf Ausführung im Hintergrund

    eingerichtet und ausgelöst, während Entwickler ihren Code mit Commits erstellen . Diese automatisierte

    Testsuite validiert den kompilierten Code kontinuierlich und meldet fehlgeschlagene Tests dem Entwickler . Die

    tatsächliche Validierungsstufe kann von Organisation zu Organisation variieren, aber sie umfasst in der Regel

    eine Form von API- oder funktionalen Schnittstellentests (häufig lassen sich diese Testsuites am einfachsten

    automatisieren) . Der erweiterte Testprozess kann beinhalten, dass Entwickler die automatisierte Testsuite für

    Ausführung nach einem erfolgreichen Build oder planmäßig am Ende des Tages als Teil eines nächtlichen

    Build-Prozesses initiieren . Diese automatisierte Testsuite kann bei der Ermittlung hilfreich sein, ob alle

    Komponenten, an denen mehrere Entwickler gearbeitet haben, in eine Anwendung integriert werden können .

    Einfacher ausgedrückt ist dies lediglich eine automatisierte Form des Integrationstests .

    Abbildung 3: Das Release-Repository stellt sicher, dass bereitgestellte Komponenten identisch mit denen sind, die in Vorproduktionsumgebungen getestet wurden .

  • 27

    Die automatisierte Testsuite besteht aus vielen Tausenden gegen die Code-Basis gestarteten Testfällen . In

    einer idealen Welt würde die Code-Basis eine Einheitentestabdeckung von 100 Prozent erzielen .

    Den Grundbausteinen der Code-Basis Ihrer Anwendung (wie RESTful-Services und API-Aufrufe) sollten

    für die Automatisierung priorisiert und danach erweiterte Logik- und Geschäftsfunktionen folgen . Wenn

    ein Test fehlschlägt, wird der Entwickler automatisch benachrichtigt und ist für die Korrektur oder das

    Rückgängigmachen der problematischen Änderung verantwortlich .

    Sobald der automatisierte Einheitentest erfolgreich abgeschlossen wurde, sollte der Code automatisch

    der nächsten Testumgebung bereitgestellt werden, wo zusätzliche Tests ausgeführt werden können .

    Möglicherweise wird eine prozentual akzeptable Fehlerrate als angemessen betrachtet; diese Entscheidung

    liegt beim Development Lead, da diese Person die letztendliche Verantwortung für die Code-Basis und den

    kompilierten Code trägt, der in der nächsten Umgebung bereitgestellt wird . Nach erfolgreichem Abschluss

    der automatisierten Tests in der nächsten Umgebung kann es zu einer automatisierten Hochstufung

    zu weiteren Testumgebungen kommen . Der Prozess wird einfach wiederholt, wobei automatisierte

    Anwendungsbereitstellungen und unterschiedliche Arten von Tests in jeder Umgebung durchgeführt

    werden . Das Ziel besteht darin, einen wiederholbaren, automatisierten Prozess zu haben, bei dem

    menschliche Fehler verringert werden und das Risiko einer manuellen Interaktion ausgeschaltet

    wird.

    Continuous Deployment kann dazu eingesetzt werden, Anwendungen bis hin zur Produktion bereitzustellen .

    IT-Operationsteams sind generell einer Automatisierung der Produktionsbereitstellungen abgeneigt, außer

    wenn sie an der Erstellung und früheren Ausführung solcher Bereitstellungen beteiligt waren . Meistens

    bedeutet dies, dass das Continuous Deployment endet, sobald der Code einen Vorproduktions-Staging-

    Bereich erreicht . Danach werden herkömmliche manuelle Bereitstellungen oder vorhandene Skripts für

    den letzten Schritt zur Produktion verwendet . Obwohl dieser Ansatz verständlich und eine vorsichtige

    Herangehensweise bei Produktionsumgebungen lobenswert ist, bleibt das grundlegende Problem bestehen:

    unterschiedliche Tools und Skripte, die Änderungen an Ihren wichtigsten Produktionsumgebungen

    vornehmen, aber weder in Tests verwendet noch selbst getestet wurden, verursachen signifikante Ausfälle

    gefolgt von organisatorischer Verlegenheit .

    Viele IT-Führungskräfte finden es schwierig, zwischen Continuous Deployment und Continuous Delivery

    zu unterscheiden . Um den Unterschied zu verstehen, müssen wir uns Gedanken über die herkömmliche

    Bereitstellungs-Pipeline machen . Bei traditionellen Entwicklungs- und Bereitstellungsansätzen gibt es an

    jedem Punkt auf dem Weg zur Produktion Kontrollen oder Gates, die eine zustimmende Aktion erforderlich

    machen, bevor fortgefahren werden kann . Denken Sie an die Übergabe- und Validierungsschritte eines

    herkömmlichen Softwareentwicklungs-Lebenszyklus, die Genehmigungen für Eintreten und Verlassen jeder

    Umgebung beinhalten können .

  • 28

    Wenn ein CD-Ansatz implementiert wird, sollte die Anwendung immer „bereitstellungsbereit“ sein und könnte

    theoretisch jederzeit an die Produktion geliefert werden . Häufig sind organisatorische Regeln oder Praktiken

    vorhanden, die dies verhindern, z . B . Bedenken hinsichtlich Aufgabentrennung oder nicht autorisierte

    Produktionsänderungen . Bei der kontinuierlichen Bereitstellung sind selten automatisierte Bereitstellungs-

    und Testprozesse für Pipeline-Umgebungen auf einer unteren Ebene vorhanden, z . B . Entwicklungs- und

    Integrationstest, dürfen jedoch nicht in höheren Test-, Staging- und Produktionsumgebungen laufen . Das

    finale Ziel ist, immer Code zu liefern, der in Produktion gehen könnte, selbst wenn das nicht der Fall sein wird .

    Wenn ein Continuous Deployment-Ansatz implementiert wird, ist Code immer produktionsbereit . Solange die

    Bereitstellungs- und Testautomatisierungsprozesse erfolgreich sind, wird die Codebereitstellung automatisch

    durch alle Umgebungen und schließlich in der Produktion fortgesetzt, ohne dass menschliches Eingreifen

    oder eine Aufsicht erforderlich sind . Potenziell ermöglicht dies eine vollständig automatisierte Bereitstellung

    von Entwickler-Commit über Build, Bereitstellung und Test bis zur Produktion .

    Mithilfe funktionsbasierter Entwicklung (Funktions-Flags) kann CI sicherstellen, dass die Code-Basis jederzeit

    freigebbar ist, und dass die Lieferung von Code auf einer geschäftlichen Entscheidung statt auf einem

    betrieblichen Sachzwang beruhen kann .

    Schauen wir uns jetzt die verschiedenen Tool-Klassen für die Bereitstellungs-Pipeline genauer an .

    Tools für die Automatisierung der Bereitstellungs-Pipeline

    Diese Tools automatisieren die Bereitstellung und Validierung von Code über seinen gesamten Lebenszyklus .

    Da sie die Bereitstellung von Änderungen automatisieren, kann potenziell eine größere Menge von Releases

    an die Produktion bereitgestellt werden . Die schnelle Bereitstellung und Validierung von bereitgestelltem

    Code durch den Einsatz von Automatisierung kann zur Verringerung von Fehlerraten beitragen und

    vorhersagbare und zuverlässige Releases erleichtern .

    Tools für die Automatisierung der Bereitstellungs-Pipeline wirken sich auf verschiedene Weise auf die

    Bereitstellung von Anwendungen aus . Für die bereitgestellte Anwendung bieten diese Tools:

    • Zugriff auf das Quellcode-Repository und das Repository für ausführbaren Code, auf die Konfigurationsdateien und die bereitzustellenden Datenelemente

    • Einen definierten Prozess für die Bereitstellung einer Anwendung, der leicht geändert werden kann und gemeinsame Elemente für Standard-Aufgaben verwendet (z . B . Starten und Stoppen eines Webservers

    oder Sichern einer Datenbank)

    • Die Möglichkeit zur Definition einer gesteuerten Abfolge von Bereitstellungs-Zielumgebungen

    • Unterstützung von „kompensierenden Transaktionen“ für vollständig automatisiertes Rollback

    • Die Möglichkeit zum Aufrufen einer Kette von Ereignissen, die potenziell den gesamten Anwendungs-„Stapel“ bereitstellen, einschließlich Infrastruktur, Anwendung und Konfiguration

  • 29

    Ein Mangel an geeigneten Testumgebungen, die auf Konflikte in der Verwendung von Umgebungen

    abgestimmt sind, kann Bereitstellungen verzögern und Release-Kosten erhöhen . Echte kontinuierliche

    Bereitstellung erfordert die Verfügbarkeit von Test- und Vorproduktionsumgebungen . Es hat keinen Sinn, eine

    kompilierte und bereitstellungsbereite Anwendung zu haben, wenn die Umgebung, in der sie bereitgestellt

    werden soll, noch von der vorherigen Bereitstellung verwendet wird . Die Nutzung von Infrastruktur-

    Bereitstellungstools, die eine spontane Erstellung neuer Umgebungen gestatten, stellt eine großartige Weise

    zur Umgehung solcher Einschränkungen dar . Durch die Erstellung neuer physischer, virtueller, Cloud- oder

    Container-Umgebungen als Teil des Bereitstellungs- und Pipeline-Prozesses können Organisationen die

    Bereitstellungs-Zykluszeiten erheblich reduzieren .

    Zusätzliche Transparenz sowohl für die aktuelle als auch für die vorgeschlagene Nutzung von Umgebungen

    kann mithilfe einer Kalenderansicht gewonnen werden, die außerdem ein zentraler Ort für einen einheitlichen

    Testmanagement-Zeitplan sein kann . Transparenz dabei zu erhalten, wer und was momentan einen Satz von

    Umgebungen verwendet oder planmäßig verwenden soll, ermöglicht einen Einblick, den viele Unternehmen

    nur mit großen Schwierigkeiten erreichen . Die Zeitplanansicht zeigt auch alle geplanten Bereitstellungen, alle

    geplanten Wartungszeiträume und die verfügbaren Release-Fenster für jede Umgebung .

    Für Zielumgebungen bieten Bereitstellungs-Automatisierungstools:

    • Zugang zu und Transparenz von Test- und Produktionsbereitstellungs-Umgebungen

    • Die Möglichkeit zum Erstellen von neuen physischen, virtuellen, cloud- oder containerbasierten Umgebungen nach Bedarf

    • Eine Methode für die physische Verteilung der Anwendung an die Zielumgebung und zum Aufrufen der zugehörigen Testsuites

    Für den Bereitstellungsingenieur bieten Automatisierungstools:

    • Einen einfachen, vom CI-Tool gesteuerten CD-Service

    • Die Möglichkeit zur Durchführung von Bereitstellungen mit einem Klick, entweder auf Anforderungs- oder auf Zeitplanbasis

    • Echtzeitüberwachung des Fortschritts von Bereitstellung und automatisiertem Test mit der Möglichkeit zur Reaktion auf Eingriffsanforderungen

    • Ein Dashboard mit allen historischen Daten, früheren Bereitstellungszeiten, Trends, Mustern und Versionsinformationen über aktuell bereitgestellte Anwendungen und Komponenten

  • 30

    Die Bereitstellungsautomatisierung hat nachweislich zu einer Reduzierung der Bereitstellungs-

    Ausführungszeiten um mehr als 90 Prozent geführt . Fehlerraten, Nachbearbeitungsaufwand und

    fehlgeschlagene Bereitstellungen wurden um bis zu 90 Prozent reduziert . Mithilfe der Erfahrung, die Release-

    Engineers in der Nutzung dieser Produkte gewinnen, können sie zusätzliche Anwendungsbereitstellungen

    (durch die Wiederverwendung vorhandener Prozesse) in viel kürzerer Zeit automatisieren, als für die

    Erstellung anwendungsspezifischer Bereitstellungsskripts erforderlich ist .

    Ein effektives Bereitstellungs-Automatisierungstool kann in CI, Provisioning, Bereitstellung und

    automatisierten Tests integriert werden, wodurch Sie die Möglichkeit zur Planung von Bereitstellungen und

    Automatisierung von Ad-Hoc-Bereitstellungen in jeder Umgebung haben .

    Während ein organisationsübergreifender gemeinsamer Satz von Tools wünschenswert sein kann, sind die

    Entwicklungs-, Qualitätssicherungs- und IT-Operationsteams oft an bereits vorhandene Tools gebunden, die

    nicht einfach oder schnell ersetzt werden können . In diesem Fall ist es wichtig, die Flexibilität zu besitzen,

    diese Tools zu einer kohärenten Toolkette zusammenzufügen . Mit öffentlichen APIs oder, schlimmstenfalls,

    Befehlszeilenschnittstellen können die Produkten kommunizieren . In einem solchen Fall wird ein zentraler

    Punkt für den Einblick in den gesamten Pipeline-Prozess benötigt .

    Abbildung 4: Micro Focus DevOps-Toolkettenintegration

    Entwicklung Build Bereitstellung Test Release

  • 31

    Als Teil des Freigabeprozesses besteht einer der wichtigsten Integrationsbereiche in der Sicherstellung, dass

    das Release Management-Tool in das Änderungsmanagement-System integriert werden kann . Dadurch

    erhalten verschiedene Mitglieder der Organisation einen Einblick sowohl in den Änderungs- als auch in den

    Freigabeprozess . In vielen Organisationen sind spezifische Unternehmens-Änderungsmanagement-Tools

    vorhanden, z . B . ServiceNow oder BMC Remedy . Diese Tools bieten zwar eine hervorragende Prozess- und

    Genehmigungsverwaltung auf hoher Ebene, aber ihr Mangel an Integration in Artefakte oder entwicklungs-

    oder testorientierten Tools (agile Planungstools, Artefakt-Repositorys oder Build-Tools) bedeutet, dass

    eine breite Kluft zwischen formellen Änderungs- und Freigabeprozessen existiert . Das ideale Szenario ist

    verständlicherweise die Möglichkeit zu einer lückenlosen Nachverfolgbarkeit von der Änderungsanforderung

    bis zum bereitstellbaren Artefakt . Aktualisierungen, die in einem der beiden (oder beiden) Systeme(n)

    auftreten, müssen im anderen System gespiegelt werden . Die Lösung muss außerdem Statusübergänge

    zwischen den Änderungs- und Freigabeprozessen (oder umgekehrt) unterstützen . Zur Unterstützung dieser

    echten Integration von Änderungsmanagement und Release-Management bietet ein Tool, das entweder

    sich selbst oder andere Tools und Prozesse orchestrieren kann, die auf dem Zustand des Änderungs- oder

    Freigabeprozesses basieren, einen deutlichen Vorteil .

    Eine integrierte Plattform für Continuous Delivery

    Deployment Automation6 (DA) ist eine Plattform, die die gesamte Bereitstellungs-Pipeline unterstützt .

    Der Bereitstellungsprozess erstreckt sich über mehrere Umgebungen und lässt sich als Teil einer echten

    DevOps-Toolkette nahtlos in andere Produkte integrieren . Kritische Tool-Integrationen, z . B . jene zwischen

    Entwicklungstools (Softwarekonfigurations-Managementtools, Build-Server/CI-Server), Bereitstellungstools,

    Bereitstellungsautomatisierungs- und manuellen oder automatisierten Testtools, sind sofort einsatzbereit . Die

    erweiterbare Plug-In-Architektur ermöglicht es Unternehmen, diese Prozesse aufeinander abzustimmen und

    in den verschiedenen Tools zu integrieren .

    6- https://www .microfocus .com/products/deployment-automation/

    https://www.microfocus.com/products/deployment-automation/

  • 32

    In einem Beispielfall legt ein Entwickler als Reaktion auf eine gültige Änderungsanforderung ein Code-

    Commit im Quellcode-Repository ab . Das CI-Tool wird automatisch aufgerufen und das System erzeugt einen

    neuen Build . Die Automatisierung in Dimensions CM, dem marktführenden Application Lifecycle Management

    (ALM) von Micro Focus, gewährleistet, dass alle im Build enthaltenen Änderungen sowohl Peer-Review als

    auch statische Analyse bestanden haben und erfolgreich einheitengetestet wurden . Wenn der Build-Prozess

    erfolgreich ist, wird das Artefakt in das gesicherte Artefakt-Repository von Micro Focus hochgeladen . SDA

    stellt dann automatisch die neue Version der Komponente oder Anwendung an die erste Umgebung bereit,

    die als Teil der Bereitstellungs-Pipeline definiert ist .

    Die Bereitstellungsautomatisierungs-Technologie kann vor der Bereitstellung jede benötigte Infrastruktur

    erstellen und konfigurieren und bei Bedarf auch die Anwendung konfigurieren . SDA ruft das

    Testautomatisierungs-Tool auf, das automatisierte Tests ausführt und protokolliert, ob die Testsuite bestanden

    hat oder fehlgeschlagen ist . Wenn die Testsuite fehlschlägt, setzt das System die Anwendung automatisch

    auf die letzte erfolgreich bereitgestellte Version zurück, und meldet dem Entwickler und dem Test Lead, dass

    die Anwendung die automatisierten Tests nicht bestanden hat . Wenn die Anwendungs-Testsuite erfolgreich

    ausgeführt wird, stellt SDA die Anwendung automatisch für die nächste Umgebung in der Pipeline bereit .

    Als Teil des Bereitstellungsprozesses muss die Anwendung möglicherweise konfiguriert und auf einem

    anderen Anwendungsserver (z . B . WebSphere) bereitgestellt werden . Ein einfacher Prozess dafür wäre, den

    Anwendungsserver zu stoppen, die aktualisierte Anwendungsversion bereitzustellen, den Anwendungsserver

    dann erneut zu starten, vorhandene Dateien zu sichern, .war-Dateien umzubenennen usw . In bestimmten

    Situationen müssen Sie möglicherweise vor der Bereitstellung der Anwendung zuerst die Umgebung

    bereitstellen . SDA kann die gesamte Abfolge automatisch durchführen .

    Außerhalb des Anwendungs-Pipeline- und Bereitstellungsprozesses wird SDA nahtlos in Release Control7

    integriert . RC bietet ein Integrations-Framework mit vollem Funktionsumfang, das in Änderungsmanagement-

    Ticketsystemen (z . B . ServiceNow oder Remedy) integriert ist . Die erfolgreiche Bereitstellung kann eine

    Aktualisierung des Änderungsmanagement-Tickets auslösen, sodass alle Personen, die nicht direkt am

    Freigabeprozess beteiligt, aber eng am Änderungsprozess orientiert sind (z . B . Geschäftsbenutzer) in Echtzeit

    Einblick in den Fortschritt der Änderung und des