Weit hinten im Application Lifecycle liegt der ideale Ausgangspunkt für eine sanfte Industrialisierung der Unternehmens-IT

Kürzere Time-to-Market, höhere Qualität, reduzierte Kosten: Industrialisiert ein Unternehmen seine Software-Integration, kann es damit eine Gesamtersparnis von bis zu 50 Prozent erzielen. Besonders stark profitieren Organisationen mit einer gewachsenen, heterogenen IT-Landschaft. Gleichzeitig sollten diese ihre Prozesse jedoch besonders behutsam an die neuen Vorgehensweisen anpassen, um jederzeit voll handlungsfähig zu bleiben.

Speziell das Build und Deployment ist als zentraler Prozess mit allen anderen Vorgängen der Software-Entwicklung verknüpft, und so ist die Software-Integration durch ihre nachgelagerte Position im Application Lifecycle der ideale Ausgangspunkt, um von dort aus mit Augenmaß Standards einzuführen und sinnvolle Workflows zu definieren: Optimiert wird mit jedem neuen Software-Release, so dass der Anteil an standardisierten Bereichen Schritt für Schritt wächst. Letztlich bilden diese Standards die Grundlage für die weitere Industrialisierung – etwa um innerhalb der eigenen IT-Projekte bestimmte Anforderungen wie Automatisierung, Nachvollziehbarkeit, Revisionssicherheit und Reproduzierbarkeit von Prozessen umzusetzen oder auch, um gleich die Fertigungstiefe zu reduzieren.

 

Optimale Strategien

In der Praxis erweisen sich bestimmte Maßnahmen fast immer als nützlich, um die Effizienz zu steigern – ganz unabhängig von der Ausgangssituation. Dazu zählt beispielsweise die Einführung von festen Release-Terminen sowie von Entwicklungs- und Software-Integrations-Standards. Auch die Virtualisierung von Integrations- und Testumgebungen, das Vereinheitlichen von Infrastrukturen sowie der Einsatz von Automatisierung in allen Handlungsfeldern lohnen sich praktisch für jedes Unternehmen.

Trotzdem ist es jedoch ratsam, zuerst die individuellen Rahmenbedingungen genau zu analysieren: Welche Betriebssysteme sind im Einsatz? Welche Applikationsserver und Third-Party-Tools werden genutzt? Wer entwickelt welche Software und wer integriert sie? Die Kostentreiber und ihre Position im Prozessgefüge müssen genau bekannt sein, ebenso wie mögliche Vorbehalte auf Seiten der beteiligten Akteure – denn eine wirklich passgenaue Optimierungs-strategie lässt sich nur auf Basis der realen Ausgangslage entwickeln.

 

Skaleneffekte nutzen

Oft ergeben sich beispielsweise schon durch die Einführung von Technologie-Standards Skaleneffekte: Speziell im Client-Server-Umfeld ist häufig eine erstaunliche Vielfalt an Hardware und Betriebssystemen zu finden. Werden diese konsolidiert, reduziert sich der Aufwand für Wartung und Erweiterungen der Systeme dadurch be-trächtlich. Interessante Ansatzpunkte sind außerdem Applikati-onsserver und Queuing: In der Regel reichen in diesen Bereichen zwei – beim Queuing oft sogar eine – Technologien aus, um alle Anforderungen abzudecken. Wer hier bereits für die Entwicklung der Applikationen klare Vorgaben macht, vereinfacht die spätere Integration erheblich und spart vor allem Personalkosten. Auch teures Spezialisten-Knowhow für Installation, Konfiguration und Wartung muss er dann nämlich nur noch für maximal zwei Systeme vorhalten.

Noch größeren Optimierungsspielraum als die Technologien bieten im Umfeld der Software-Integration jedoch die Prozesse. So zeigt sich in der Beratungspraxis von avato consulting beispielsweise, dass sich die Dauer der Build-Phase durch geschickte Standardisierung und Automatisierung auf etwa ein Drittel der ursprünglichen Zeit reduzieren lässt. Die Integration eines Release-Pakets ist durch industrialisierte Prozesse in einem Viertel der vorher benötigten Zeit möglich – und gleichzeitig wird der gesamte Vorgang in übersichtliche Teilschritte zerlegt, wodurch es unter anderem leichter ist, eventuelle Probleme frühzeitig zu erkennen. Durch geschicktes Kombinieren sämtlicher Optimierungsmöglichkeiten lässt sich die Zahl der Deployments in den meisten Fällen um mehr als das Zehnfache erhöhen, ohne dass dadurch der Aufwand steigt.

 

Nur ein Weg ins Unternehmen

Ausgangspunkt und gleichzeitig möglicher Nutznießer einer Prozess-Standardisierung ist bereits die Schnittstelle, an der die Software ins Unternehmen gelangt. Denn gleichgültig, ob die Anwendungen von externen Dienstleistern oder einem internen IT-Shop entwickelt werden – volle Transparenz und Kontrolle sind nur dann gegeben, wenn der Weg der Sourcen in die Software-Integration eindeutig festgelegt ist. Speziell wer in der Anwendungsentwicklung auf Outsourcing setzt, kann an dieser Stelle von definierten Prozess- und Infrastruktur-Standards profitieren: Diese machen es möglich, die Releases in leicht integrierbaren Installationspaketen anliefern zu lassen. Das Anwenderunternehmen kann dann auf Wunsch den Build-Prozess und sogar die Kontrolle und Speicherung des Source Codes auf den Lieferanten verlagern und muss dafür selbst keine Kontroll-, Speicher- und Personalressourcen mehr vorhalten.

Wer dagegen seine Software intern entwickelt, sollte unbedingt das Konfigurationsmanagement im Auge behalten: Eine standardisierte Vorgehensweise mit einer einfachen, klaren Struktur ist in diesem Fall nämlich nicht nur die Voraussetzung für zeitsparendes Arbeiten mit parallelen Entwicklungssträngen; sie ist auch unverzichtbare Ausgangsbasis für die Automatisierung der nachgelagerten Prozesse. Besonders effektiv ist in der Regel die Abbildung des „Development-in-Head“-Konzepts innerhalb des Konfigurationsmanagements.

 

Ein Paket für alle Fälle

Wer nicht outsourct und seine Software stattdessen selbst in installierbare Pakete umwandelt, kann die Effizienz auch intern steigern: indem er nur ein einziges Paket erzeugt, das sich in allen Zielumgebungen installieren lässt. Mehrere Aspekte müssen strukturiert werden, dann lässt sich die Software beispielsweise in Systemtest-, Integrationstest- und Produktionsumgebungen nutzen, ohne jedes Mal ein neues Paket und damit auch Aufwand und Fehler zu erzeugen.

Über Umgebungs- und Software-Parameter lässt sich das Paket an die verschiedenen Umgebungen anpassen, ohne die Software selbst zu verändern: Die nötigen Informationen werden bei der Anlieferung dokumentiert übergeben und ide-alerweise automatisch verarbeitet, um Zeit zu sparen und Fehler zu vermeiden. Klar strukturierte, standardisierte Daten sind dabei die Voraussetzung, um den Aufwand für die Parametrisierung in Grenzen zu halten – dann zahlt sich das einfache Verfahren meist schon nach wenigen Wochen aus.

 

Den Zeitaspekt bedenken

Ebenfalls in standardisierter Form werden die Konfigurationen der Basistechnologien übergeben, etwa Applikationsserver und Queuing. Speziell wenn vor einem Deployment umfangreiche Anpassungen nötig sind, ist hier der Zeitaspekt mit zu bedenken: Das Integrationsteam braucht die Informationen dann mindestens ein bis zwei Wochen vor der eigentlichen Software-Integration. Hier zahlt sich besonders die Konsolidierung der Infrastruktur aus, denn der Aufwand potenziert sich vor allem dadurch, dass jede Technologie jeweils für alle Umgebungen konfiguriert werden muss.

Liegen Software und Konfigurationen dann standardisiert vor, steht dem Bau des installierbaren Pakets nichts mehr im Weg. Auch hier ist es wieder sinnvoll, nur eine kleine Anzahl an Systemen zuzulassen: Die meisten Build-Tools geben einen Workflow und Integrationsstandards vor, und diese sollten für alle Releases einheitlich sein. In der Regel reicht hier sogar ein einziges Werkzeug aus, um alle Anforderungen zu erfüllen. Grundsätzlich sollten ebenfalls die Build-Skripte versioniert werden – nicht zuletzt, weil dieses Vorgehen Revisionssicherheit verleiht. Außerdem ist es durch die Versionierung möglich, Fixes für die Produktion automatisiert an neue Releases weiterzugeben, und die Transparenz bleibt selbst bei der Arbeit mit mehreren parallelen Entwicklungssträngen jederzeit gesichert.

 

Auslagern ist effizienter

Eine ähnliche Strategie wie im Build-Prozess lässt sich auch für die Standardisierung des Deployments anwenden: Eine einzige, übergreifende Installationsroutine fasst alle zentralen Schritte zusammen, die für das Deployment notwendig sind. Diese Overlay-Komponente ist für alle Projekte gleich und wird bereits im Build-Prozess in jedes Software-Paket integriert. Diese Vorgehensweise ist nicht nur weniger aufwändig und fehleranfällig als die manuelle Anpassung für jede einzelne Applikation – auch Änderungen werden jeweils nur am zentralen Overlay vorgenommen und gelangen beim nächsten Build automatisch in jedes einzelne Paket.

Als weiteren automatisierten Bestandteil eines ausgereiften Deployment-Verfahrens enthält das Overlay ein Modul mit Prüfmechanismen, die beispielsweise die Erreichbarkeit von Applikationsservern und Zielcontainern, Datenbanken, einzelnen Zielschemata oder den geforderten Queues kontrollieren. Ergeben sich dann bei der Auslieferung trotz erfolgreichem Test noch Fehler, ist deren Quelle bereits gut eingegrenzt: Sie liegt höchstwahrscheinlich in der Infrastruktur. Auch direkt nach dem Deployment sowie regelmäßig zur Laufzeit ist es hilfreich, alle für die Applikation wichtigen Punkte automatisiert zu testen und detaillierte Reports zu generieren, die kontinuierlich die Funktionalität der Infrastruktur sowie wichtiger Applikationsbestandteile belegen.

 

Sinnvoll automatisieren

Ziel all dieser Standardisierungen ist letztlich ein sinnvolles Maß an Automatisierung: Sie erbringt die bedeutendsten Produktivitätsgewinne – allerdings nur, wenn sich alle beteiligten Parteien an die vereinbarten Standards halten, externe ebenso wie interne Entwicklungs- und Support-Einheiten. Zur Steuerung und Kontrolle empfiehlt sich daher der Einsatz eines einheitlichen Ticketing- und Tracking-Tools. Es übernimmt abteilungs- und teamübergreifend das Workflow-Management für sämtliche technischen Vorgänge, schafft Transparenz über die damit verbundenen Daten und bindet alle Beteiligten unweigerlich an die festgelegten Vorgehensweisen. Sind die Standards dann gesetzt, bietet die Software-Integration zahlreiche Ansatzpunkte für eine Automatisierung, vom Software-Annahme-Prozess über Build und Deployment bis hin zum automatisierten Testen.

 

Effiziente Annahme

Fast vollständig automatisieren lässt sich beispielsweise die Software-Annahme: Der externe oder interne Lieferant legt seine Artefakte in einem definierten Zustand am vorgesehenen Ort bei seinem Kunden ab. Nach der Ablage stößt der Release-Manager des Unternehmens den Annahmeprozess an, Software- und Installationsartefakte werden automatisiert zu einem installierbaren Paket zusammengebaut. Dann erfolgt das Testdeployment auf eine virtuelle Umgebung mit anschließendem Antest, dem sogenannten Smoke Test. Sind alle vier Schritte mit positivem Ergebnis erfolgt, wird die Annahme erklärt und die Weiterverarbeitung in den nachfolgenden Teststufen kann beginnen.

 

Kontinuität im Build 

Lässt ein Anwenderunternehmen keine fertigen Software-Pakete anliefern, so kann es den Build-Prozess auch selbst automatisieren und dadurch an Effizienz gewinnen: Nach der Annahme der Sourcen triggert der Release-Manager neue Releases an – am besten mittels des erwähnten Ticketing- und Tracking-Tools – und startet damit die automatisierte Erzeugung der neuen Software-Builds. Diese werden nach einem vorgegebenen Schema automatisch nummeriert und im Software-Repository abgelegt. Das Deployment auf die vordefinierten Umgebungen kann anschließend manuell, automatisch oder zeitgesteuert erfolgen – für unterbrechungsfreies Testen in der Regel über Nacht.

Allein diese Automatisierung der einzelnen Prozessschritte realisiert bereits hohe Effizienzgewinne. Darüber hinaus ist jedoch auch noch eine wesentlich komfortablere Lösung möglich: ein einziger automatisierter Ablauf, von der Annahme über das Deployment bis zum Regressionstest mit anschließendem Reporting. Voraussetzung dafür sind sehr klare, absolut durchgängige Standards, damit der Prozess nicht ungeplant ins Stocken gerät. Vor allem bei den Tests sollte zudem vorab geprüft werden, wo sich die Automatisierung wirklich lohnt, denn meist gilt in diesem Bereich das Pareto-Prinzip: Etwa 80 Prozent der Tests lassen sich sinnvoll automatisieren. Bei den restlichen 20 Prozent wäre dagegen die Änderungsfrequenz so hoch, dass manuelles Testen die effizientere Lösung ist.

 

Den Überblick behalten

Je höher der Grad an Automatisierung, desto wichtiger wird es allerdings, den Überblick zu behalten. Besonders wo zahlreiche Test- und Produktionsumgebungen zu verwalten sind, bewähren sich in der Regel Umgebungsübersichten in Form von Dashboards: Diese stellen anhand der Daten aus dem Ticketing-System jederzeit transparent dar, welche Software-Version sich auf welcher Umgebung in welchem Status befindet und ergänzen damit die detaillierten Statusinformationen aus den verschiedenen Reports zu den Teilprozessen wie Annahme, Build und Deployment oder Antest.

Wie lange es letztlich dauert, in einem Unternehmen sämtliche benötigten Standards einzuführen und auf dieser Basis die Prozesse zu automatisieren, dazu lässt sich kaum eine allgemeingültige Aussage treffen: Die IT-Landschaften unterscheiden sich bezüglich der Anzahl der Applikationen und der Heterogenität der Infrastruktur – und nicht jeder Anwender muss alle hier beschriebenen Schritte durchführen, zumal viele Unternehmen bereits mit der Industrialisierung begonnen und wichtige Standards umgesetzt haben. Nur auf Basis der individuellen Ausgangsbedingungen ist es also möglich, den Aufwand realistisch einzuschätzen.

Und so gilt für alle Projekte glei-chermaßen: Eine gründliche und intensive Konzeptionsphase, auf Technik- ebenso wie auf Prozess-Ebene, ist die wichtigste Voraussetzung, um Probleme in der späteren Betriebsphase von vornherein zu vermeiden.

 

Must Haves 

Diese Punkte sollten Sie unbedingt von Anfang an einplanen, um Ihr Automatisierungsprojekt erfolgreich und ohne Verzögerungen durchzuführen:

1.Sichern Sie sich von Anfang an die Unterstützung des Managements.

2.Standardisieren Sie sowohl Test- als auch Produktionsumgebungen.

3.Beschränken Sie die Anzahl der Applikationsserver und Third-Party-Tools.

4.Machen Sie Ihren Lieferanten klare Vorgaben zu Integrationsszenarien und Applikationsservern.

5.Begrenzen Sie die Anzahl der Build- und Deployment-Verfahren und -Tools.

6.Verwalten Sie umgebungsabhängige Parameter für alle Umgebungen zentral.

7.Sichern Sie die Einhaltung von Standards und Prozessen durch ein übergreifendes Workflow-Tool.

8.Führen Sie parallele Entwicklungsstränge (mehrere Branches) für das gleiche Software-Produkt rechtzeitig in das gemeinsame Zielpaket zurück.

 

Build-Management

  • Für das Enterprise-Build-Management reicht in der Regel ein einziges Tool aus, um alle Anforderungen ab-zudecken. Eine intelligente und übersichtliche Automatisierung und Standardisierung erzielen Sie beispielsweise mit folgenden bewährten Systemen:
  • Hudson: Prominentester Vertreter der Open-Source-Gemeinde, der sich besonders aufgrund seiner einfachen Installation und Konfiguration immer größerer Beliebtheit erfreut.
  • AnthillPro: Bietet dem Kunden die Möglichkeit, den gesamten Software Lifecycle in automatisierten Stufen abzubilden.
  • Bamboo: Newcomer aus dem Hause Atlassian, der sich nahtlos in die weiteren Produkte, z.B. dem Ticket-System Jira, integrieren und damit kombinieren lässt.
  • Diegenannten Systeme arbeiten mit allen gängigen Build-Tools, wie z.B. ant und maven.

 

Ticketing und Tracking

Ein standardisiertes Ticketing- und Tracking-Tool erleichtert die Steuerung und Kontrolle standardisierter Prozesse. Die Auswahl dieses Werkzeuges orientiert sich häufig an der gewünschten Flexibilität und den Kosten.

 

  • OTRS oder Redmine: Diese bekannten Werkzeuge aus dem Open-Source-Bereich bieten eine besonders kosten günstige Einführung. Allerdings ist das Customizing teilweise aufwändig und nicht der gesamte Software Lifecycle ist abgebildet.
  • Jira: Eine sehr günstige und flexible Lösung kommt aus dem Hause Atlassian, die avato consulting selbst für seine Projekt-Arbeiten einsetzt:
  • Bildet die Möglichkeit CMMI- als auch ITIL-Prozesse abzubilden.
  • Workflow-Anpassungen lassen sich einfach und schnell über die webbasierte Administrations-Oberfläche vornehmen, so dass für die Konfiguration keine speziellen IT-Kenntnisse notwendig sind.
  • Stellt Schnittstellen zu SCM- und Build- sowie zahlreichen weiteren Systemen bereit.
  • Der Hersteller bietet viele kostenfreie sowie kosten-günstige Plugins an.

Whitepaper: One-Click Deployment (PDF)
Dieses Dokument beschreibt eine Continuous Delivery-Strategie mittels eines One-click Deployments. Betrachtet
werden Anforderungen, technologische Konzepte, Architekturen, Migrationsstrategien sowie Erfolgsfaktoren
bei der Einführung.

Software-Integration industriell (PDF)
Weit hinten im Application Lifecycle liegt der ideale Ausgangspunkt für eine sanfte Industrialisierung der Unternehmens-IT.

 

Haben Sie weitere Fragen? Wir beraten Sie gerne: marketing@avato.net

Impressum: 
Datum: Februar 2011
Autor: Uwe Bloch
Textredaktion: Bettina Röckl
Kontakt: marketing@avato.net
www.avato-consulting.com
© 2011 avato consulting
© avato consulting ag – Copyright 2019.
All Rights Reserved.