Toolbox für eine agile Entwicklung mit DevOps

Seit dem ich mein Studium der Informatik abgeschlossen habe, beschäftige ich mich beruflich mit Werkzeugen, welche in der agilen Softwareentwicklung eingesetzt werden. Wie ihr wisst, setzen wir aktuell auf die Containerlösung Docker und entwickeln eine ganze IT-Plattform neu. Dazu gehört im Umkehrschluss auch, dass wir die aktuelle IT-Plattform ablösen werden.

Doch es gehört natürlich mehr dazu, als nur neue Techniken und Methoden einzusetzen.
Kultur, Zusammenarbeit und Unternehmensphilosophie sind elementare Faktoren, die bei der erfolgreichen Einführung eines neuen IT System relevant sind. Die IT Wertschöpfungskette kann nur optimiert werden, wenn alle am gleichen Ziel arbeiten. Nicht jeder lässt sich auf die Transformation ein und die Angst vor Neuem ist allgegenwärtig.

DevOps – der nächste Trend?

Natürlich kann agile Softwareentwicklung nur erfolgreich sein, wenn auch der IT-Betrieb die entwickelte Software betreiben kann. Die DevOps Kultur, welche in den letzten Jahren entstanden ist, soll die Zusammenarbeit zwischen Entwicklung (Dev) und Betrieb (Ops) stärken, das gegenseitige Verständnis erhöhen und die Agilität entlang der IT Wertschöpfungskette ermöglichen. Dabei ist DevOps selbst einen ganzen Artikel wert. Nur kurz gesagt: DevOps hat sich nicht entwickelt, weil Menschen dachten „mhh wir wollen jetzt DevOps machen“, sondern weil kluge Menschen schneller und mit besserer Qualität Software liefern wollten. DevOps beschreibt Methoden und Werkzeuge, die dabei helfen Software zu entwickeln und dem Kunden zur Verfügung zu stellen. Wir reden von keinem Trend, sondern von einer Bewegung, der mittlerweile bei den deutschen Großkonzernen angekommen ist. Auch wir sind mitten in diesem Kulturwandel und die Verzahnung der einzelnen Methoden und Werkzeuge ist für mich sehr spannend. Ich freue mich jeden Tag darüber, den Prozess der Transformation zu begleiten.

Meine Erfahrungen darüber möchte ich auch in weiteren Blogeinträgen mit dir teilen, da ich dich während deiner Transformation unterstützen möchte.
(Vielleicht bist du schon einen Schritt weiter als ich. Dann wünsche ich mir natürlich Tipps und Tricks von dir ;-))

Ein Pinguin mit Werkzeugkiste
Die DevOps Toolbox

Unsere Werkzeuge

Transformation ist allerdings nicht nur ein kulturelles Thema, sondern auch die Werkzeuge in der IT ändern sich. Dazu kommt, dass viele der neuen Tools miteinander verzahnt sind und es deswegen garnicht so einfach ist, sich bei dieser Veränderung zurecht zu finden. Ich möchte dir heute gerne einen Überblick geben, wie unsere Toolbox aussieht und welche Werkzeuge du darin findest.

Dafür muss in erster Linie klar sein, wie Software entsteht. Wir haben mehrere Team mit im Schnitt vier Entwicklern. Diese arbeiten nach der Methode Scrum und organisieren ihre Aufgaben mit einem Kanban Board. Jeder dieser Entwickler hat ein breites T-Shape innerhalb der IT-Wertschöpfungskette. Bedeutet, er hat Fähigkeiten in vielen Bereich, wie zum Beispiel fachliche Konzeption, schreiben von Testfällen, Entwicklung und Operations und ist in einem dieser Bereich sehr stark spezialisiert. Genau wie ein „T“ – Breit aufstellt und trotzdem tief. Wenn unsere Entwickler dann Software in Form von Code produziert haben, legen sie diesen Code in einem Source Code Management, in unserem Fall Gitlab ab. Dieses Tool sorgt dafür, dass der Quellcode versioniert und sicher abgelegt ist. Auch für die Zusammenarbeit gibt es verschiedene Techniken und sogenannte Workflows, welche die tägliche Arbeit für die Entwickler erleichtern und die Qualität des Codes erhöhen.

Ab dem Zeitpunkt, an dem der Entwickler den Code in Gitlab eingecheckt hat, wird es spannend. Denn nun sollte im besten Fall alles automatisiert durch eine Continuous Integration / Continuous Delivery (CI/CD) Pipeline laufen. Kontinuierliche Integration bedeutet, dass bei jeder Erweiterung der Software, diese gesamthaft in der Pipeline getestet wird. Nur wenn die Software den Qualitätsansprüchen gerecht wird, wird sie in die Zielumgebung integriert. Das geht teilweise sogar soweit, dass die Software nicht nur für ein Deployment in der Produktion ausgeliefert, sondern direkt dem Kunden zur Verfügung gestellt wird (Continuous Deployment). Das ist natürlich nur möglich, da alle Schritte der Pipeline erfolgreich durchlaufen werden müssen, bevor es zu einem Deployment kommt. Somit ist jeder Pipeline Schritt eine Art Qualitätssicherung und sollte sorgfältig ausgearbeitet werden, damit Fehler im Code schon in der Pipeline erkannt werden.

In unserem Fall verwenden wir Jenkins für die Pipeline eines einzelnen Microservices und Gitlab CI für den Aufbau unserer Infrastruktur in der AWS. Du kannst dir also die Pipeline als zentrale Komponente vorstellen, denn diese verwendet und steuert alle anderen. Zum Beispiel wird bei uns in der Pipeline ein Dockercontainer gebaut, in Artifactory abgelegt und dann deployt (wichtige Docker Begriffe). Das Deployment selbst übernimmt das Container Orchestrierungstool Openshift. Im Kern basiert Openshift auf der Software Kubernetes, ergänzt diese aber meiner Meinung nach, um viele angenehme Funktionen. Die Containerorchestrierung ist dafür da, Container rudimentär zu verwalten, zu überwachen und zur Verfügung zu stellen.

Wie schon kurz angeschnitten läuft unsere komplette Infrastruktur auf der Cloudlösung von Amazon. Das hat für uns zum einen den Vorteil, dass wir kein eigenes Rechenzentrum mehr betreiben müssen und zum anderen, dass wir durchgehend eine optimale Auslastung der aufgebauten Infrastruktur gewährleisten können, da wir bei Bedarf einfach skalieren.

Wie geht es weiter?

DevOps ist meiner Meinung nach mehr als nur Kultur oder eine Werkzeugkiste, es ist eine Einstellung. Wir sind Menschen und sollten uns nicht hinter Prozessen verstecken. Eine offene Kommunikation und konstruktive Diskussionen sind der Schlüssel zu guter Software und DevOps steht genau dafür.

Unser Unternehmen steht gerade am Anfang und ich darf mitten drin und voll dabei sein. Meine Erfahrungen, Ängste, Sorgen und natürlich alle das neu generiere Wissen möchte ich mit dir in der neuen Rubrik DevOps auf diesem Blog teilen.

Bis dahin,
Kevin

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.