Erste Erfahrungen mit Microservice-Architekturen im BIT

24. Februar 2020, 14:38
image

Das BIT setzt bei der Entwicklung von Applikationen vermehrt auf Microservices. Software-Architekt Oliver Santschi berichtet über seine Erfahrungen in der Praxis und zieht ein Zwischenfazit.

Wie in vielen IT-Unternehmen haben Microservices auch im Bundesamt für Informatik und Telekommunikation (BIT) Einzug gehalten. "Das ist nur wieder eine neue Modeströmung", sagen die Einen. "Alter Wein in neuen Schläuchen, mit serviceorientierter Architektur (SOA) hatten wir das schon vor Jahren!", die Anderen. Im BIT können wir auf erste Erfahrungen zurückblicken.

Hunderte Deployments pro Tag, automatisches Testing

Die ganze IT-Welt spricht davon: Netflix, Spotifiy, Twitter und viele andere Global Player setzen schon seit Jahren auf Microservice-Architekturen. Netflix führt hunderte Deployments pro Tag durch. Alles wird automatisch getestet. Ein Release wird zuerst nur für eine gewisse Benutzergruppe freigeschaltet. Wenn es schiefläuft, ist es nicht so schlimm, dann wird halt in einigen Stunden eine neue Version deployed. Die meisten Benutzer werden nichts merken. Operation am offenen Herzen sozusagen.
Warum soll die Bundesverwaltung, deren Existenz nicht von einer schnellen "Time to Market" abhängt und deren Benutzergruppe nicht Millionen umfasst, jetzt auch noch auf diesen Zug aufspringen?
Ein wichtiger Punkt ist die langfristige Sicht. Im Lauf der Zeit wird jedes System durch Erosion der Architektur immer fehleranfälliger. Eine monolithische Applikation muss irgendwann überarbeitet oder ersetzt werden. Die Ablösung eines alten Systems ist immer risikoreich. Da ein Microservice nur einen bestimmen Teil des Gesamtsystems abbildet, ist eine Anpassung weniger riskant.
"Time to Market" ist zwar nicht das wichtigste Kriterium, aber ein MVP (Minimum Viable Product) oder ein Quick Win ist in der Bundesverwaltung doch auch oft erforderlich. Wenn der Auftraggeber beim ersten Sprint Review schon ein lauffähiges Stück Software sieht, ist das ein guter Start und das Vertrauen in das Entwicklungsteam steigt.

PaaS als Grundlage

Um überhaupt Microservice-Architekturen realisieren zu können, braucht es eine wichtige Grundvoraussetzung: Eine Plattform, auf der die Microservices laufen. Das BIT hatte bis 2017 keine solche Plattform. Wir konnten zwar Server (inkl. Middleware) automatisiert bestellen, aber für eine Microservice-Basisinfrastuktur braucht es eine PaaS (Platform as a Service).
Im Mai 2017 hatten wir im BIT die einmalige Gelegenheit, im Rahmen des Transformationsprojekts DaziT zu zeigen, dass wir eine Applikation auf Basis einer Microservice-Architektur realisieren können. Der wichtigste Aspekt dabei war die Bereitstellung einer PaaS. Mit einem interdisziplinären DevOps-Team wurde diese Aufgabe angegangen. Als PaaS wurde nach kurzer Evaluation die Cloud-Foundry-Variante von HP (heute SUSE) ausgewählt und ein Proof of Concept (PoC) installiert. Für uns Java-Entwickler ist das eine gute Wahl, da Cloud Foundry im Spring-Universum optimal integriert ist. Die kleinstmögliche Spring-Boot-Applikation baut man in 10 Minuten. Eine weitere Minute braucht es, um die Applikation mit dem Befehl 'cf push' auf die PaaS zu deployen.

Etappe 1: Quick Win "e-Begleitdokumente" in einem halben Jahr entwickelt

Nach wenigen Wochen starteten wir im Sommer 2017 mit einem ersten DaziT-Vorhaben: e-Begleitdokumente. Wir mussten der EZV beweisen, dass wir in einem halben Jahr eine Anwendung mit einem neuen Architekturansatz auf einer noch nicht existierenden, neuen Plattform erstellen können. Challenge accepted!
Die Anwendung e-Begleitdokumente an sich ist nicht sehr komplex. Über eine Webanwendung können die Spediteure ihre Begleitdokumente als PDF hochladen. Bei der Einfuhr können die Mitarbeitenden der EZV nach den entsprechenden Dokumenten suchen und sie nach Wunsch herunterladen. Zudem wird eine B2B-Schnittstelle für grössere Speditionsfirmen angeboten. Hier konnten wir erste Erfahrungen mit Microservice-Architekturen sammeln. E-Begleitdokumente wird aktuell in einem Pilotprojekt eingesetzt.
Natürlich nützt eine PaaS nicht viel, wenn sie keine Services wie Datenbanken, Messaging-Dienste oder Virenscanner anbietet. Wir haben uns entschieden, die Services auf einem separaten Kubernetes-Cluster, parallel zu Cloud Foundry, zu betreiben. Ziel ist, dass die Entwickler einen Service mit einem einzigen Befehl erstellen können: cf create-service <<dbtyp>> <<dbgrösse>> <<name>>. Das Team hatte innert Kürze einen Service Broker geschrieben, der eine einfache MariaDB als Docker Container auf der Kubernetes-Plattform instanziierte. Wir Entwickler jubelten, als wir innerhalb von 3 Minuten unsere DB-Instanz hatten.
Ende 2017 war die Infrastruktur aufgebaut und ein erstes System mit fünf Microservices lief produktiv. Und es ging nahtlos weiter.

Etappe 2: Projekt IS-EETS

Im Projekt IS-EETS (Informatiksystem European Electronic Toll Service) geht es um die automatische Erfassung, Kontrolle und Abrechnung der Leistungsabhängigen Schwerverkehrsabgabe (LSVA) für ausländische Lastwagen, die auf Schweizer Strassen unterwegs sind. Die Erfassung der Route erfolgt im Fahrzeug, das mit einem globalen Navigationssatellitensystem-Gerät (GNNS) ausgerüstet ist und jede Fahrt ans IS-EETS übermittelt. Aus zurückgelegter Distanz, Gewicht und Emissionsklasse ergibt sich die Höhe der Abgabe. Stimmt die übermittelte Route mit den stationären und mobilen Kontrollstellen überein, erfolgt eine automatische Veranlagung und Verrechnung.
In IS-EETS haben wir uns für eine Event-Driven-Architektur entschieden. Unabhängig vom Gesamtsystem können hier Domänen in einzelne Microservices aufgeteilt werden und es ist einfacher, die einzelnen Services unabhängig zu entwickeln und zu testen.
Es gibt aber Dinge wie Monitoring, Logging und Security, die müssen in jeder Applikation gemacht werden. Viele Arbeiten werden einem durch die eingesetzten Frameworks, in unserem Fall Spring Boot, auf den Backend-Services abgenommen. Es gibt aber auch projekt-, programm- oder unternehmensspezifische Aspekte, welche überall gleichbehandelt werden müssen. Mit IS-EETS waren wir die ersten im BIT, resp. im Programm DaziT. Viele Funktionalitäten mussten wir als Common Library oder als Spring Boot Starter für unsere Systeme selber implementieren. Wir wussten, dass bald neue DaziT-Projekte starten würden, die dieselben Dinge benötigen. Daraus entstand bald die Notwendigkeit eines Teams, das sich ausschliesslich um das technische Fundament kümmert.
Derweil ist IS-EETS auf der Zielgeraden. Die letzten Features werden implementiert und aus den Lasttests gewonnene Erkenntnisse werden umgesetzt.

Eine sinnvolle Aufteilung des Umfangs der Microservices ist das A und O

Die Erfahrungen aus der Entwicklung mit Microservices sind durchwegs positiv. Aber man muss aufpassen, dass man das Wort ‘Micro’ nicht zu wörtlich nimmt. Eine sinnvolle Aufteilung des Umfangs der Microservices ist das A und O. Mehr Microservices bedeutet auch mehr Komplexität. Das Testing ist wichtiger denn je geworden. Um den Einfluss einer einzelnen Softwareanpassung auf das Gesamtsystem im Griff zu haben, müssen automatisierte Test vorhanden sein. Aus diesem Grund setzen wir in jedem Team sogenannte 'SDET - Software Development Engineers in Test' ein, die vom Background her vollwertige Entwickler sind, sich aber auf die Testautomatisierung fokussieren.
In den nächsten Wochen werden weitere Applikationen mit Microservice-Architektur produktiv gehen. Offen sind dabei noch viele Fragen bezüglich der Betriebsorganisation: Wer macht Pikett? Wer darf wann und was auf Produktion deployen? Laufen die Systeme, und wie kann ich Fehler und Engpässe schnell erkennen und finden?
Entwickler, die noch an monolithischen Anwendungen arbeiten, schauen ein wenig neidisch auf die schöne, neue Welt der Microservices. Es gibt aber für beide Architekturansätze Vor- und Nachteile, die bei jedem neuen Vorhaben in Betracht gezogen werden müssen. Und voraussichtlich sprechen wir in 5 Jahren wieder von einem anderen, revolutionären und total coolen Architekturansatz.
  • image

    Oliver Santschi

    Software-Architekt im Bundesamt für Informatik und Telekommunikation (BIT)

Loading

Mehr zum Thema

image

Zürcher Datenschützerin zum Cloudeinsatz: "Der Regierungsratsbeschluss ändert gar nichts"

Bei Dominika Blonski häufen sich seit dem Frühling Anfragen von Behörden zur Cloudnutzung. Im Gespräch sagt die Datenschützerin: "Ich weiss nicht, was die Absicht der Zürcher Regierung war."

publiziert am 30.9.2022 3
image

ALV braucht IT-Know-how für bis zu 55 Millionen Franken

In 8 Arbeitsgebieten sucht das Seco Digitalisierungs-Knowhow für die RAVs und die Arbeitslosenversicherung.

publiziert am 30.9.2022
image

Palantir übernimmt 230-Millionen-Auftrag, um US-Drohnen effizienter zu machen

Der opake Datenanalyse-Konzern des rechtslibertären Milliardärs Peter Thiel gibt auch in Europa wieder zu Reden. CEO Alex Karp inszeniert sich als kritischer Geist.

publiziert am 30.9.2022
image

Bund soll Frauen­anteil in MINT-Berufen genauer untersuchen

Ein neuer Bericht soll zeigen, ob und wie bisherige Massnahmen zur Erhöhung des Frauenanteils im MINT-Bereich wirken und welche neuen Massnahmen es braucht.

publiziert am 30.9.2022