CI/CD und die Rolle von DevOps

Vorbemerkungen:

Die Auffassungen zu Agiler Softwareentwicklung sind sehr vielfältig. Es gibt die Auffassung „Jeder kann Alles“ oder „Die Entwicklung betreut auch die Produktion“. Die Versuche diese Thesen umzusetzen scheiterten beide!
Meine These ist: “Die Entwicklung und die Betreuung der Produktion sind getrennt und haben engste Kontakte.“ Bleibt die Frage wo ist die Schnittstelle?

Ein bisschen Psychologie

Was spricht eigentlich gegen die Überwachung der Produktion durch die Entwickler? Aus meiner Sicht gibt es einen entscheidenden Punkt, der Mensch beherrscht kein Multitasking, auch die Frauen nicht wirklich. Code Schreiben ist eine kreative Arbeit und jede Störung unterbricht den Fluss. Ich selbst merke sehr oft nicht einmal, dass Mails angekommen sind, wie soll man da noch das Dashboard der Produktion überwachen und bei Fehlern reagieren?
Nebenarbeiten stören den Arbeitsfluss der Entwickler und sollten auf das Notwendige und Zielführende beschränkt werden.

Die Aufgaben des Entwicklungsteams und die Qualitätssicherung

Die Entwicklung / Anpassung der Software ist die zentrale Aufgabe die zwingend durch eine Qualitätssicherung ergänzt sein muss. Automatisierte Tests sind das Ideal, müssen aber auch erstellt werden.
Betrachtet man die unterschiedlichen Tests, so sind nur die Unit Tests unabhängig von einen Deployment. Integrationstests, Unit Tests für DBs oder Plausibilitätstests benötigen immer eine mehr oder weniger vollständige Umgebung.

Aus meiner Sicht gibt es genau an dieser Stelle die Überschneidung zur Produktion. Das automatische Build, das automatische Deployment der Testumgebung und die automatische Ausführung der Tests sind 80% auf dem Weg zum Deploymnet in der Produktion.

CI/CD

Durch den automatischen Build und das automatische Deployment erhält man automatisch einen Test des Deployments. Dies ist sehr bedeutsam, insbesondere beim Deployment von Datenbanken und Infrastruktur in der Cloud.

Ob die notwendigen Pipelines von der Entwicklung oder von DevOps (Admins) aufgebaut werden ist eine Frage der Arbeitsteilung.

Fazit

Wenn man die Build- und Release-Pipelines zum Interface zwischen Entwicklung und DevOps macht, kann man sehr einfach auch die Zugriffsrechte entkoppeln. Dabei ergibt sich aber auch die Notwendigkeit einer Zusammenarbeit. Ich halte diese Zusammenarbeit auch aus vielen anderen Gründen für sinnvoll. Es ist wichtig, dass dies durch die internen Strukturen unterstützt wird.