„Also wir als Start-Up setzen ja auf eine skalierbare Microservice-Architektur”

da werde ich immer hellhörig. Gerade junge Unternehmen mit Blick auf schnelles Wachstum greifen gerne zum Architekturstil der Microservices. Schließlich fahren die großen Player gut damit und sowohl Entwicklungsprozess als auch Produkt können am Ende besser skalieren, als es mit einer monolithischen Architektur der Fall wäre. Doch so einfach ist es am Ende nicht: Microservices sind in erster Linie ein Mittel der Komplexitätsbewältigung. Man erreicht eine verhältnismäßig gute Beherrschbarkeit großer Softwareprojekte, nimmt dabei aber einige Nachteile in Kauf. So wird die Entwicklung zu Beginn erst einmal durch die höhere Systemkomplexität ausgebremst, die der Microservice-Ansatz mit sich bringt.

Für große Unternehmen rentiert sich dieser Trade-Off: Mehr Entwickler*innen können gleichzeitig an einem Produkt arbeiten, ohne sich in die Quere zu kommen. Es können weitgehend autonome Teams gebildet werden und die Bereitstellung der Software verläuft reibungsloser. Start-Ups kämpfen jedoch selten mit Teamgröße oder Produktkomplexität. Ihr Hauptaugenmerk liegt normalerweise nicht auf interner Prozessoptimierung sondern auf Innovationsgeschwindigkeit: Ideen müssen kostengünstig und schnell am Markt validiert werden. Und so fühlen sich Microservices schnell nicht wie ein Enabler an, sondern eher wie ein Klotz am Bein.

Autor

Marco Bürckel
Geschäftsführer

Erwägen Sie den Einsatz von Microservices sorgfältig

Im Folgenden sind fünf Überlegungen, die Sie gemeinsam mit Ihrem Team diskutieren sollten, bevor Sie sich für eine Architektur auf Basis von Microservices entscheiden:

1. Der Preis für falsche Servicegrenzen ist hoch
Teilt man ein System in Microservices auf, so muss dies mit größter Sorgfalt geschehen. Eine falsche Aufteilung kann viel unnötige Komplexität nach sich ziehen und für die Entwicklung teuer werden. Eine gute Aufteilung ergibt sich aus der Analyse der Fachdomäne (also dem „Business“ bzw. der Geschäftslogik), die dem Produkt zugrunde liegt. Ist Ihre Produktidee tatsächlich schon geschärft genug, um eine solche Analyse vornehmen zu können? Ist die Domäne Ihrer Software schon stabil genug, um sie nachhaltig zu segmentieren?
2. Feingranulare Skalierbarkeit lohnt nicht für jedes System
Zwar sind Microservices individueller skalierbar als ein monolithisches System, jedoch profitiert nicht jede Software von diesem Vorteil. In vielen Fällen ist eine einfach horizontale Skalierung (z.B. in Form eines einheitlichen Cookie-Cutter-Scalings) ausreichend. Können Sie auf Basis der funktionalen Module Ihrer Architektur stichhaltige Vorteile abschätzen, die eine individuelle Skalierung einzelner Systemteile mit sich bringen würde?
3. Mehr Aufwand in der Bereitstellung
Microservices bilden ein verteiltes System - mit allen Konsequenzen. Bereitstellung der Software, Monitoring und Troubleshooting werden zunächst einmal komplizierter. Gerade am Anfang der Betriebsphase bedeutet dies, dass Sie höhere Kosten in Sachen Softwarelizenzen und Personalkosten haben, bei vermutlich wenigen ersten Kunden. Haben Sie in diesem Kontext einmal abgeschätzt, was den Betrieb der Microservices in der Anfangsphase kosten könnte?
4. Mehr Aufwand in der Entwicklung
Auch die Entwicklung wird in einem solchen verteilten System zunächst komplizierter. Ihr Entwicklungsteam muss sich mit schwacher Datenkonsistenz, einer hohen Komplexität in Sachen Service-Kommunikation, und einer aufwändigeren Top-Level-Architektur auseinandersetzen. Am Entwicklungsrechner wird das Ausführen, Testen und Debuggen der Software schwieriger. Das sind im Einzelnen alles keine riesigen Aufwände, aber sie summieren sich mit jedem Tag der Weiterentwicklung. Es ist ziemlich wahrscheinlich, dass Sie für die Entwicklung im ersten Schritt signifikant mehr Geld ausgeben, wenn Sie auf Microservices setzen. Wie flexibel ist Ihr Zeitplan und finanzieller Spielraum, um mit dieser Komplexität umzugehen?
5. Komplizierter On-Premise-Betrieb
Können Sie einen On-Premise-Betrieb Ihrer Software ausschließen? Trotz aller Vorteile einer Cloud-Lösung wird insbesondere bei B2B-Lösungen regelmäßig nach einem Betrieb im kundeneigenen Rechenzentrum gefragt. Microservices gehen mit einer hohen Komplexität im Bereich Operations einher. Können Sie Ihren Kunden Installation und Betrieb im eigenen Rechenzentrum realistisch zumuten?

Abschließende Worte

Der Einsatz von Microservices in einem Start-Up ist natürlich nicht prinzipiell falsch. Ich glaube jedoch, dass der Großteil der Start-Ups zu Beginn mit einem monolithischen Ansatz besser fährt. Bei Bedarf kann dieser mittelfristig schrittweise in eine Microservice-Architektur überführt werden, wenn eine hinreichend große Kundenbasis existiert und man eher den finanziellen Spielraum in der Entwicklung hat.

Wenn Sie weitere Fragen haben oder beratend Unterstützung in der Entscheidungsfindung bei Ihrem Vorhaben benötigen, können Sie mich gerne kontaktieren.