10 Gründe für Microservices

Juli 31, 2018 Pawel Zajaczkowski

Statements wie diese haben Sie bestimmt schon öfter gehört: die Zukunft heißt Microservices. Monolithen sind out. Migrieren Sie. Netflix macht‘s, Amazon und Spotify auch. Dazu kommen Listen mit Vorteilen, übersät mit Schlagworten wie Agilität, Performance, hohe Verfügbarkeit, Kosteneinsparungen, Agilität, schnellere Markteinführung, usw… hab ich Agilität schon erwähnt?

Auf dem Papier oder aus dem Munde von Managern und Cloud-Predigern hört sich das alles ganz toll an, aber was steckt eigentlich dahinter? Schauen wir uns gemeinsam die Vorteile der Microservices an und werfen gleich einen genaueren Blick darauf. Aber fangen wir erst einmal mit den Grundlagen an.

Was sind Microservices?

Was ist also eine Microservice-Architektur? Microservices stehen im Kontrast zu monolithischen IT-Architekturen (wo eine riesige Anwendung alles macht) – eine große Anzahl kleiner, lose gekoppelter und unabhängiger Anwendungen, die jeweils eigene Aufgaben erledigen. Die Module sind miteinander verbunden und bilden ein hochentwickeltes System, das skalierbar, effizient, zuverlässig und einfach zu handhaben ist. Um eine solche Architektur zu erstellen oder auf diese umzustellen, ist eine angemessene Automatisierungsinfrastruktur nötig, in der Rechenressourcen schnell bereitstehen und Anwendungen eingesetzt werden können. Auch muss das Verhalten der Komponente in der Produktionsumgebung genau überwacht werden können. Sehr hilfreiche Tools sind dabei die Cloud und Container-Orchestrierung. Hört sich interessant an? Weiter geht’s mit den Vorteilen!

1 & 2 – Schneller Release und Innovation

Bei nicht-trivialen, monolithischen Softwaresystemen, die viele Entwicklungsteams beschäftigen, ist die zeitnahe Veröffentlichung neuer Funktionen oft mit Herausforderungen verbunden. Die meisten von uns kennen das bereits: der Release ist ein zeitaufwendiger, komplizierter Prozess, bei dem manchmal das gesamte System stundenlang still steht. Das ist natürlich mit Risiken verbunden, und erfordert auch tiefgreifendes Systemwissen, welches bei Normalsterblichen oft nicht vorhanden ist. Das Ganze passiert vielleicht einmal im Monat oder sogar noch seltener. Microservices sind viele kleine Anwendungen, verwaltet von kleinen und unabhängigen Teams. Unternehmensweite Freigaben fallen weg. Dank einer automatisierten Infrastruktur können wir Änderungen in der Produktionsumgebung innerhalb von Minuten und nicht Wochen vornehmen. Es ist auch viel einfacher, fehlerhafte Updates rückgängig zu machen. So wird der Arbeitsaufwand minimiert, ohne die Benutzererfahrung zu beeinträchtigen. Geschäftsannahmen und -prioritäten mögen heutzutage sehr dynamisch sein, aber da die Technologie inzwischen mithalten kann, wird man auch anpassungsfähiger.

3 & 4 – Einfache Entwicklung und Qualität

Je größer das monolithische System, desto langsamer die Entwicklung und desto mehr Programmierer werden benötigt. Und je mehr Programmierer, desto wahrscheinlicher kommt es zu Konflikten in Bezug auf Code, Versionierung der nötigen Programmbibliotheken, Frameworks und allgemeine Bausteine. Technische Fehler schleichen sich in die Codebasis, Abhängigkeiten vermehren sich, und es wird immer schwieriger, die Struktur beizubehalten und die Logik zu verstehen – währenddessen steigt das Risiko unvorhersehbarer Nebenwirkungen. Bei Microservices dreht sich alles um einen beschränkten Geschäftskontext und um das Prinzip der Einzelverantwortung. Wir nutzen nur das, was wir brauchen, um eine einzige, genau definierte Aufgabe an einem Ort zu erledigen – und wenn wir etwas ändern wollen, wissen wir genau, wo wir suchen müssen. Teile des Codes können physisch isoliert werden und die Kommunikation mit anderen Modulen läuft über klar definierte Netzwerkschnittstellen. So bleibt das Ganze schön einfach. Wir können Bausteine an vielen Stellen wiederverwenden, wodurch der Aufwand reduziert und doppelte Arbeit vermieden wird. Dank leistungsfähiger und zugänglicher Überwachungstools können wir das Verhalten des Codes in der Produktionsumgebung im Auge behalten und ihn entsprechend anpassen. Die Arbeit ist gleich einfacher und viel effektiver.

5 & 6 – Hohe Verfügbarkeit und Fehlertoleranz

Hardware scheitert, weil das Netzwerk unzuverlässig ist, Festplattenlaufwerke aussetzen, Prozessoren kurzgeschlossen werden oder die Stromversorgung verloren geht. Software kann auch aus unzähligen Gründen ausfallen. Bei Monolithen kann ein einziger Fehler das gesamte System beeinträchtigen. Die Microservices-Architektur ist auf Fehlertoleranz gegründet. Man kann ganz einfach Bausteine einfügen, die bei Ausfällen zum Einsatz kommen. Eine Vielzahl von Tools ermöglicht den richtigen Umgang mit Fehlern sowie automatisierte Fehlerbehebung. Selbst wenn ein Teil des Systems beschädigt wird, kann man das fürs erste ignorieren und mit dem Hauptgeschäft fortfahren. Bei der automatisierten Infrastruktur sind allgemeine Hardwarefehler kein Grund zur Sorge mehr. Man lässt einfach die Orchestrierungs-Tools eine neue Bereitstellungseinheit oder eine virtuelle Maschine erstellen und fährt in Ruhe mit seiner Arbeit fort. Für Softwareprobleme sind die Services mit “Gesundheitschecks” ausgestattet, die automatisch die „auffällige“ Komponente herunterfahren und durch neue Instanzen ersetzen (die Ursachen können nachträglich analysiert werden). Einen kleinen Service kann man auch viel schneller neu starten, im Gegensatz zu einem großen Monolithen – das System ist also gleich viel schneller verfügbar. Isolierte Codeteile können jederzeit von spezialisierten Teams geändert werden. Dadurch sinkt das Risiko kritischer Fehler erheblich.

7 & 8 – Skalierbarkeit und Kostenoptimierung

Einige Systemteile werden häufiger verwendet als andere. Bei erhöhtem Traffic müssen keine zusätzlichen Instanzen für den ganzen Monolithen erstellt, sondern nur ein Bruchteil der Gesamtfunktion angepasst werden. Die einzelnen Services können so eingestellt werden, dass der genaue Bedarf gedeckt wird – und somit der tägliche oder saisonale Traffic. Da die Systemkomponente unabhängig voneinander arbeiten, werden so Fehlerquellen vermieden, die alleinig zu Leistungsengpässen führen und eine Skalierung über die Grenzen eines einzigen leistungsstarken Servers hinaus verhindern könnten. Cloud Managed Services befreien uns von den Hürden, die durch Verwaltungskosten, Datenbank-Hosting, Messaging-Warteschlangen, Speicherplatz und dem Verbrauch anderer Ressourcen entstehen. Der effektive Betrieb unserer Anwendungen erfordert möglicherweise verschiedene Hardwaretypen – einige benötigen mehr pure Rechenleistung, andere viel schnellere Speicher, eine gute Grafikkarte oder sogar Tensor-Verarbeitungseinheiten für AI-bezogene Aktivitäten. Monolithen erlauben uns nicht, die heutige Hardwarevielfalt zu erkunden – das muss aber nicht so sein.

9 & 10 – Technische Freiheit und das gewisse Extra

Es gibt keine universellen Programmiersprachen oder Frameworks. Zum meistern geschäftlicher Herausforderungen sind häufig maßgeschneiderte Softwarekomponenten erforderlich – und Systeme bieten auch ihre eigenen, vielfältigen Herausforderungen. Ein benutzerfreundliches und allgegenwärtiges Web-Framework ist für den Hochfrequenzhandel, in dem jede Nanosekunde zählt, möglicherweise nicht geeignet. Eine riesige und teure relationale Datenbank ist nicht die einzige Möglichkeit, Datensätze zu speichern, und bestimmte, weniger beliebte Programmiersprachen passen möglicherweise besser zu bestimmten Bereichen als die am häufigsten verwendeten Sprachen auf dem Markt. Microservices sind nicht an eine bestimmte Technologie gebunden. Wir können das Beste für uns herauspicken, und durch experimentieren neue und bessere Dinge entdecken, ohne dabei ein hohes Risiko einzugehen. Zur gleichen Zeit lernen all in der Organisation daraus. Wenn etwas schief geht, ist das Umschreiben eines Dienstes von Grund auf keine große Sache mehr, aber die gewonnene Erfahrung ist von unschätzbarem Wert. Die Verwendung aktuellster Spitzentechnologien hat einen zusätzlichen Vorteil: sie wirkt anziehend auf die qualifiziertesten Fachkräfte – etwas, das mit dem explosionsartigen Wachstum der Softwareindustrie heutzutage immer schwieriger wird.

Sind Microservices das richtige für mich?

Es gibt kein Patentrezept. Wenn Sie ein nicht-triviales IT-System mit echtem Potenzial aufbauen und weiterentwickeln möchten, sollten Sie sich ernsthaft mit der Microservice-Architektur auseinandersetzen. Für die richtige Umsetzung ist zunächst ein gewisser Arbeitsaufwand erforderlich – dieser Aufwand lohnt sich aber bei der Betrachtung der TCO. Neue Funktionen können schnell eingeführt und auf eine Art und Weise skaliert werden, die bei klassischen Softwareentwicklungskonzepten grundsätzlich unmöglich ist. Microservices sind nicht nur ein Architekturstil, sondern auch ein Mindset und eine Unternehmensphilosophie. Ideal für agile, funktionsübergreifende Teams und im Sinne der ganzheitlichen Verantwortung.

Interessiert? Möchten Sie mehr erfahren? Unser Microservices-Workshop hilft Ihnen bei der Erstellung von Cloud-nativen Anwendungen.

Unsere Empfehlungen