Nagler & Company: Expertise

DevOps — Kontinuität von Entwicklung bis Produktion

von Johann Lenz und Alexander Kalchauer, 2 min. Lesezeit

DevOps – die wortwörtliche Verschmelzung von Development und (IT-)Operations – spiegelt die aktuelle Vorgehensweise der Software-Erstellung wider und repräsentiert somit die zurzeit letztgültige Stufe in einer langen evolutionären Reihe von Methoden zur Entwicklung, Wartung und Inbetriebnahme von Software-Paketen. Während es gegen Ende des letzten Jahrtausends durchaus noch üblich war, z. B. einen Programmfehler zu korrigieren und (nach erfolgreichem Test) mit einer Diskette im Aktenkoffer zum Kunden zu gehen und dort die korrigierte Version auf den betroffenen PCs zu installieren, ist ein solches Vorgehen heute undenkbar. Die Systemlandschaften der Kunden sind heute um ein Vielfaches komplexer und somit gilt es, mit jeder Software-Installation die Auswirkungen auf das Gesamtsystem zu berücksichtigen, Versions- Transparenz sowie Dokumentationsvollständigkeit ebenso im Auge zu behalten wie etwaige Auswirkungen auf Performance und Anwender-Berechtigungen – und vieles andere mehr.

Diesen Erfordernissen wird durch DevOps insofern Rechnung getragen, als die Entwicklung von Software und deren festgelegte Prozesse zum Ausrollen in Produktion gleichsam wie ineinandergreifende Zahnräder des Gesamtprozesses betrachtet werden. Dem Aspekt der „Continuity“ kommt hier auf drei Ebenen besondere Bedeutung zu:

Innerhalb der Systemlandschaft eines Unternehmens finden üblicherweise zahlreiche Entwicklungsprozesse parallel statt. Während das Schreiben des Software-Codes noch eine sehr individuelle Sache ist, beginnt schon mit dem Erstellen eines Software-Programmes (dem „Build“), die Integration mit anderen Komponenten. Abschluss einer erfolgreichen Integration eines Codeteils ist der erfolgreiche Durchlauf von Unit-Tests, welche vom Entwickler ebenso kontinuierlich entwickelt werden.

Nach der Erstellung des Softwarepaketes erfolgt die Auslieferung. Während die kontinuierliche Auslieferung auf Testumgebungen noch dem Entwickler hilft, Codeänderungen zu erproben, kann eine schnelle Auslieferung auf Integrationsumgebungen den Fachbereich frühzeitig einbinden. Ebenso können hier Software-Pakete, welche parallel von verschiedenen Abteilungen erstellt worden sind, frühzeitig getestet werden.

Dies ist praktisch die Königsdisziplin der Kontinuität im Zusammenhang mit DevOps. Hier ist das Ziel, mehr oder minder ohne Unterbrechung auf vollautomatisierte Art und Weise verlässliche und vollständig getestete Software in Produktion zu nehmen.

Dabei wird über zahlreiche Automatismen sichergestellt, dass jedes Stück Software die vorgegebenen Prozesse durchläuft, bevor es in der Produktion ankommt – insbesondere wird über mehrstufige Regressionstests sichergestellt, dass die modifizierte Software keine negativen Auswirkungen auf bestehende Funktionalitäten hat. Mit den angesprochenen Automatismen erreicht man ein straffes und effizientes Abhandeln besagter Prozesse, was häufige Integrations-Aktivitäten ermöglicht – mit dem letztendlichen Ziel, solche Integrationen nahezu kontinuierlich durchzuführen. Dadurch vermeidet man „große“ Releases (mit all den ihnen innewohnenden Risiken).

Um dies zu ermöglichen, bedarf es der Berücksichtigung mehrerer Komponenten:

Um neue Software nahezu kontinuierlich ausrollen zu können, ist es erforderlich, die Entwicklung in kleineren definierten Schritten voranzutreiben. Hierfür ist die klassische Wasserfall-Methode relativ ungeeignet. Agile Methoden (wie Scrum oder Kanban) bieten sich aufgrund ihres iterativen Vorgehens hier ebenso an wie etwaige Hybrid-Methoden, die auf kontinuierliche Einbindung der Stakeholder setzen.

Das kontinuierliche Ausrollen der Software setzt umfangreiche Tests voraus, durch welche sichergestellt wird, dass keinerlei negative Auswirkungen ins produktive System eingespeist werden. Diese Tests müssen aus Zeitgründen vollautomatisch ablaufen und ebenso automatisch im Fehlerfall eine Benachrichtigungskette anstoßen.

Auch wenn es ein Ziel von DevOps ist, möglichst viele technische Prozesse zu automatisieren, dürfen zwischenmenschliche Aspekte nicht außen vor gelassen werden. Häufig sind Fach-, Entwicklungs- und insbesondere Operationsabteilungen autark und räumlich getrennt. Kommunikation findet nur bei Problemen statt. Viele Prozesse sind komplex und zeitaufwendig, insbesondere wenn manuelle Schritte notwendig sind. Bei der Einführung von DevOps ist es wichtig, dass alle Abteilungen an einem Strang ziehen und die Kommunikation erhöht wird, dann werden alle von dem neuen Ansatz profitieren.

Nagler & Company hat in all diesen Bereichen – Continuous Integration, Continuous Delivery und Continuous Deployment – langjährige Erfahrung auf internationaler Ebene vorzuweisen – unser Know-how entwickelt sich mit den Ideen und Lösungen im Markt weiter.

Johann Lenz

Johann Lenz

Alexander Kalchauer

Alexander Kalchauer

Expertise