Container sind die Erfolgsbasis für Technologie, Prozesse und Kultur
Dem Business den versprochenen Nutzen in hoher Qualität liefern – dies war die Hauptmotivation der Mobiliar IT, den Weg zur Microservice-Architektur einzuschlagen. Diesen konsequent weiterzugehen, vor allem mit Hilfe von Docker, hilft uns auch dabei, die DevOps-Kultur entscheidend vorwärtszubringen.
Agil, performant, skaliert, automatisiert, Services intern/extern integrieren: Diese Strategiebegriffe unserer IT sollen nicht nur Schlagwörter sein. Darum bauen wir konsequent an einer Microservice-Architektur (MSA). Das wirkt auf Technologie und Prozesse, bringt aber auch Mindset und Kultur voran.
Erste Schritte
Die Mobiliar startete 2015 mit MSA. Richtungsweisend war der Entscheid für Docker als Container. Bei den Runtime-Plattformen setzte sich Kubernetes (K8S) gegenüber Docker Swarm durch. Aus heutiger Sicht zu Recht: K8S hat den Markt erobert.
Technologie und DevOps
Ausser Microservices stand auch Continuous Delivery (CD) im Fokus, als Basis für die DevOps-Einführung. Die enge Verzahnung von Entwicklung und Betrieb ermöglicht im komplexen Umfeld den schnellsten End-to-End-Durchlauf bis zum Kunden. Dabei geht es um Team-Verantwortung für Apps, aber auch um hoch-standardisierte, automatisierte Prozesse.
Docker: Mittel zum Zweck
Unsere lose Architektur realisieren wir mit auf Twelve Factor App basierenden Microservices. Container helfen uns beim Kapseln der Microservices – dies erhöht Veränderbarkeit, Testbarkeit und Stabilität. Services sind per Default stateless und immutable, es gibt eine klare Container-/Orchestrator-Schnittstelle. Abhängigkeiten zwischen Container/Orchestrator sind versionierbar in Files abgelegt. Feature Team und Operation von K8S-Clusters haben klar getrennte Aufgaben.
Der Docker-Einsatz vereinfacht CD: Durch die unveränderbare Software ist die Testpyramide einfacher umzusetzen. Zudem kann man unendlich viele Stages in die CI/CD-Pipeline einbauen. Auch Testdaten werden in DBs im Docker Image gehalten, somit sind Tests wiederholbar.
Unsere Learnings
Die Microservice-Kapselung funktioniert gut. Die klar getrennte Verantwortung zwischen Microservice und K8S-Runtime hilft, DevOps-Prozesse besser anzuwenden. Jeder Microservice hat eine eigene CI/CD-Pipeline und profitiert vom unabhängigen Deployment. Die isolierte Funktionalität unterstützt wesentliche Aspekte der DevOps-Kultur: ausser CD auch Lean Product Development, Lean Management und Transformational Leadership. Um Lifecycle Management zu automatisieren, muss man die Lifecycle-Informationen ins Docker Image einbauen, inklusive der benutzten Software.
Die Container-/Orchestrator-Schnittstelle ist klar, aber nicht immer einfach zu bedienen. Entwickler brauchen hierzu viel Ausbildung – für eine Schnittstelle, um die sie sich eigentlich nicht kümmern sollten. Vielleicht wäre Knative deshalb eine Alternative.
Das Angebot DBs als Docker Image wird wenig genutzt. Nicht alle sehen darin einen Mehrwert – die guten Erfahrungen der bisherigen Nutzer müssen sich noch herumsprechen.
Wie weiter?
Wir möchten zukünftig vermehrt Cloud-Services beziehen. Nutzen wir die weltweite, breitgefächerte IT-Industrie, müssen wir weniger selbst entwickeln und können uns auf fachliche Features konzentrieren.
Deren Stellenwert zeigt sich auch im Recruiting von rund 60 neuen Java-Entwicklern in der jüngeren Vergangenheit. Und diese werden es gegenüber früher sogar leichter haben: Feature Teams von morgen benötigen weniger direktes Infrastruktur-Know-how (etwa K8S-HELM).