Blog

Microservices Summit
Das große Trainingsevent für Microservices, DevOps, Continuous Delivery, Docker & Clouds
3. - 5. Dezember 2018, Berlin
4
Mai

„Die Architektur von Angular ist sehr gut für Microservices geeignet – aber das Tooling…“

Yara Mayer

Microservices mit Angular CLI und Docker bauen – das ist die Aufgabe, die sich Yara Mayer in ihrem Workshop auf dem Microservices Summit stellt. Wir haben sie vorab gefragt, wie sich fachlich zusammengehörige Teile einer Anwendung identifizieren lassen, und wie gut die Kombination Angular+Docker für Microservices-Architekturen geeignet ist.

JAXenter: Microservices sind derzeit in aller Munde. Doch denken viele dabei vor allem an APIs oder HTTP Services. Warum ist das nur die halbe Wahrheit?

Yara Mayer: Sagen wir mal so – was ist ein Microservice? Ein Microservice soll eine fachliche Anforderung erfüllen und dem Benutzer/Kunden einen Mehrwert bringen. Dafür ist oft (aber nicht immer) eine Oberfläche nötig. Wenn diese Oberfläche vom Backend getrennt ist – ob es eine SPA ist oder nicht, ist egal -, dann ist sie ein sogenanntes Microfrontend.

Natürlich könnte man eine SPA haben, welche mit allen Microservices spricht. Aber in vielen Use Cases widerspricht es dem Sinn von Microservices. Denn dann haben wir zwar nicht im Backend, aber dafür im Frontend einen Monolith. Bei Microservices geht es ja zentral um die Idee der Separation of Concerns: Jeder Service sollte einen klar umrissenen fachlichen Fokus haben.

Bei Microservices geht es zentral um die Idee der Separation of Concerns: Jeder Service sollte einen klar umrissenen fachlichen Fokus haben.

JAXenter: Wie schafft man es aus deiner Erfahrung, fachlich zusammengehörige Teile zu identifizieren?

Yara Mayer: Zufälligerweise haben wir bei uns heute intern einen Workshop abgehalten, der sich genau um dieses Thema gedreht hat. Eines kann ich sagen: Es ist kein einfaches Thema. Vor allem, weil es einige unterschiedliche Ausprägungen und Herangehensweisen für Microservice-Architekturen gibt.

Um die zusammengehörigen Teilen zu identifizieren, sind vor allem, wie die Frage schon sagt, die fachlichen Anforderungen wichtig. Um diese dann in eine Architektur umzuwandeln, kann man z.B. den Prinzipien von Domain-driven Design folgen. Ich glaube nicht, dass es eine einfache Antwort darauf gibt, weil ein fachliches Gebiet auch von der Betrachtungsweise abhängt. Zum Beispiel Rechnungswesen: Es kann entweder zu Projekten zusammen gehören oder mit Finanzen oder auch ein eigenes Fachgebiet sein.

Ich würde aber vor allem raten, Microservices so groß zu lassen, wie es noch Sinn macht, und nicht schon alles klein zu schneiden, bevor es überhaupt einen Use Case oder einen validen Grund dafür gibt. Denn das erhöht nur die Komplexität der Gesamtarchitektur.

JAXenter: Du baust in deinem Workshop Microservices mit Angular CLI und Docker. Beginnen wir einmal mit Angular. Wie gut ist Angular geeignet für Microservices?

Yara Mayer: Wenn ich nur die Architektur von Angular betrachte, ist es dafür sehr gut geeignet. Wir haben erstmal eine klare Definition der Software-Architektur (Models, Services, Components etc.), und wir können mit versionierten Modulen arbeiten.

Wenn es aber um das Tooling dafür geht, würde ich ganz klar zwischen zwei unterschiedlichen Fällen trennen: SPAs, die nichts miteinander zu tun haben, und SPAs, die geteilte, selbst entwickelte Module nutzen. Bei SPAs, die nichts miteinander zu tun haben, funktioniert es ohne Problem. Aber dort, wo es um geteilte Module geht, gibt es während der Entwicklung einiges zu beachten.

Wenn man geteilte Module haben möchte, sollte man in Kauf nehmen, dass man sich mit hochtechnischen Themen auseinandersetzen muss. Ich rede vor allem von Webpack, dem Typescript Compiler und Node-Module generell.

JAXenter: Und welche Rolle spielt Docker in deinem Setup in Hinblick auf Microservices?

Yara Mayer: Docker spielt in dem Moment mehrere Rollen, bzw. es wird aus unterschiedlichen Gründen benutzt. Zum einen ist es ein Werkzeug, um das UI als abgekoppelten Service bereitzustellen und laufen zu lassen – zum Beispiel mit Kubernetes oder Docker Swarm. Zum anderen dient es der Reproduzierbarkeit und Umgebungsunabhängigkeit.

Was ich damit meine ist: Das UI sollte überall genau gleich kompiliert werden können – hier rede ich vor allem über Unix-basierte Betriebssysteme. Wenn wir das nicht sicherstellen können, laufen wir Gefahr, dass sich die Applikation in Development und Produktion unterschiedlich verhält. Und das dann zu debuggen, macht keinen Spaß.

Das UI sollte überall genau gleich kompiliert werden können.

JAXenter: Was ist die Kernbotschaft deines Workshops, die jeder mit nach Hause nehmen sollte?

Yara Mayer: Dass auch Microfrontends zur Laufzeit konfigurierbar sein sollten. Es dient nicht nur der Reproduzierbarkeit, aber auch der Effizienz und Transparenz. Ohne jetzt allzu viel zu verraten, werden wir uns auf jeden Fall einige Situationen anschauen, die genau diese Botschaft verdeutlichen.

JAXenter: Vielen Dank für dieses Interview!

 

Hartmut Schlosser

Geschrieben von: Hartmut Schlosser

Content-Stratege, IT-Redakteur, Storyteller – als Online-Teamlead bei S&S Media ist Hartmut Schlosser immer auf der Suche nach der Geschichte hinter der News. SEO und KPIs isst er zum Frühstück. Satt machen ihn kreative Aktionen, die den Leser bewegen.