10 Gründe für Microservices

Juli 31, 2018 Pawel Zajaczkowski

Wahrscheinlich hören Sie nicht zum ersten Mal: Microservices sind die Zukunft der Software. Monolithen sind out. Sie sollten migrieren. Netflix macht es, Amazon macht es, Spotify macht es. Listen mit Vorteilen, die mit Worten wie Leistung, Hochverfügbarkeit, niedrigeren Kosten, kurze Time-to-Market voll sind … Oh, Moment, habe ich eigentlich Agilität erwähnt?

Auf dem Papier, oder wenn Business-Managern und Cloud-Evangelisten Ihre Botschaft verkünden, hört es sich gut an. Aber gibt es eigentlichen gute Gründe für diese Aussagen? Lassen Sie uns die Bullet Points der Microservices-Vorteile näher betrachten. Aber dazu müssen wir zunächst das Thema an sich verstehen.

Was sind Microservices?

Was ist eine Microservices-Architektur? Microservices werden oft im Gegensatz zu monolithischen Architekturen (wo eine einzige, umfangreiche Anwendung alles erledigt) benutzt. Dabei handelt es sich um einen Softwarearchitekturstil, der auf einer großen Zahl von lose gekoppelten, kleinen, unabhängigen Anwendungen basiert, denen jeweils dedizierte Aufgaben zugewiesen werden. Sie 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 zu migrieren, benötigen wir eine angemessene Automatisierungsinfrastruktur. Mit dieser können schnell Rechenressourcen und Anwendungen bereitgestellt werden und ihr Verhalten in der Produktionsumgebung genau überwacht werden. Die Cloud- und Container-Orchestrierung sind in dieser Hinsicht äußerst hilfreiche Tools. Hört sich interessant an? Dann kommen wir zu den Vorteilen einer solchen Lösung im Detail.

1 & 2 – Schnelle Release und Innovation

Nicht-triviale, monolithische Softwaresysteme mit vielen Entwicklungsteams sind oft mit Herausforderungen verbunden, wenn es darum geht, neue Funktionen schnell zu veröffentlichen. Die meisten von uns mussten diese Erfahrung bereits machen. Es geht um die Veröffentlichung eines komplizierten Prozesses, der sehr viel Zeit in Anspruch nimmt. Nicht selten steht das komplette System stundenlang nicht zur Verfügung. Es birgt Risiken und erfordert tiefe Kenntnisse, die meist nur wenige besitzen und die oft nur einmal pro Monat durchgeführt werden. Mit Microservices haben wir dagegen viele kleine Anwendungen, die kleinen und unabhängigen Teams zugeordnet werden. Wir müssen keine Freigaben im gesamten Unternehmen synchronisieren. 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, wodurch wir noch schneller arbeiten können, ohne die Benutzererfahrung zu beeinträchtigen. Die Geschäftsannahmen und -prioritäten mögen aktuell sehr volatil sein, aber die Technologie kann mithalten und ermöglicht es uns die sich dadurch bietenden Chancen auch zu nutzen.

3 & 4 – Einfache Entwicklung und Qualität

Je größer das monolithische System wird, desto mehr verlangsamt sich die Entwicklung und es werden mehr Programmierer benötigt. Je mehr Programmierer wir haben, desto wahrscheinlicher wird es zu Konflikten in Bezug auf den Code, die Versionierung der erforderlichen Bibliotheken, die Frameworks und die allgemeinen Komponenten kommen. Technische Fehler beginnen sich in der Codebasis zu verankern, Abhängigkeiten vervielfachen sich. Es wird immer schwieriger, die Struktur beizubehalten und die Logik zu verstehen, während das Risiko unvorhersehbarer Nebeneffekte steigt. Bei Microservices dreht sich alles um einen beschränkten Geschäftskontext und um das Prinzip der Einzelverantwortung. Wir behalten alles was wir brauchen, um eine einzige, genau definierte Aufgabe an einem Ort zu erledigen. Wenn wir etwas ändern müssen, wissen wir sofort, wo wir suchen müssen. Wir isolieren Teile des Codes physisch und kommunizieren über gut definierte Netzwerkschnittstellen mit anderen Modulen. Dies hilft, die Dinge einfach zu halten. Wir können Komponenten an vielen Stellen wiederverwenden, wodurch der Aufwand reduziert und doppelte Arbeit vermieden wird. Dank leistungsfähiger und leicht zugänglicher Überwachungstools können wir das Verhalten des Codes in der Produktionsumgebung im Auge behalten und ihn entsprechend anpassen. Die Arbeit ist einfacher und effektiver.

5 & 6 – Hohe Verfügbarkeit und Fehlertoleranz

Hardwarefehler entstehen, weil das Netzwerk unzuverlässig ist, die Festplattenlaufwerke beschädigt werden, Prozessoren kurzgeschlossen werden oder die Stromversorgung ausfällt. Software fällt aus unzähligen Gründen aus. Wenn es sich um Monolithen handelt, kann ein einziger Fehler das gesamte System beeinträchtigen. Die Microservices-Architektur basiert auf der Philosophie der Fehlertoleranz. Es ist möglich, redundante Komponenten bereitzustellen, die bei Problemen automatisch übernommen werden. Wir verfügen über eine Vielzahl von Werkzeugen, die es uns ermöglichen, mit einem Fehler behutsam umzugehen und ihn automatisch zu beheben. Selbst wenn ein kleiner Teil des Systems beschädigt wird, bleibt das Gesamtsystem intakt. Bei der automatisierten Infrastruktur kümmern wir uns nicht um zufällig auftrende Hardwarefehler. Wir monitoren nur Orchestrierungs-Tools, die eine neue Bereitstellungseinheit oder eine virtuelle Maschine für uns bereitstellen und so die Funktion erhalten. In Bezug auf Softwareprobleme sind die einzelnen Dienste mit “Gesundheitschecks” ausgestattet, die automatisch die Dienste, die fehlerhaft sind herunterfahren und durch neue Instanzen ersetzen (wir können die Ursachen nachträglich analysieren). Es geht im Gegensatz zu einem gesamten Monolithen auch viel schneller einen kleinen Dienst neu zu starten, was die Verfügbarkeit des Systems deutlich erhöht. Und schließlich nehmen wir sehr oft kleine Änderungen an isolierten Codeteilen vor, die von einem dedizierten Team gewartet werden das sich auskennt. Dadurch sinkt das Risiko kritischer Fehler erheblich.

7 & 8 – Skalierbarkeit und Kostenoptimierung

Einige Teile des Systems werden häufiger als andere Teile verwendet. Wenn der Traffic zunimmt, müssen wir keine zusätzlichen Instanzen für die gesamten Monolithen ausrollen, sondern nur einen kleinen Teil der Funktionalität. Wir können die Anzahl der einzelnen Dienste so differenzieren, dass sie den genauen Bedarf abgleichen und sich automatisch an den täglichen oder saisonalen Traffic anpassen. Da die Teile des Systems stark voneinander entkoppelt sind, vermeiden wir einzelnen Fehlerquellen, die häufig zu Leistungsengpässen führen und die Skalierung über die Grenzen eines einzigen leistungsstarken Servers hinaus verhindern. Wir sind dazu angehalten, Cloud Managed Services zu nutzen, die uns von Kosten für die Verwaltung und das Hosting von Datenbanken, Messaging-Warteschlangen, Speicher und anderen Ressourcen befreit. Für unsere Anwendungen sind möglicherweise verschiedene Hardwaretypen erforderlich, um einen effizienten Betrieb zu ermöglichen – einige benötigen mehr Rechenleistung, andere schnellen Speicher, eine starke Grafikkarte oder sogar Tensor-Verarbeitungseinheiten für AI-bezogene Aktivitäten. Mit Monolithen opfern wir viel von dem, was moderne Hardwarevielfalt zu bieten hat, aber es muss nicht so sein.

9 & 10 – Freiheit der Technologie

Es gibt keine universellen Sprachen, Frameworks, Technologien oder Techniken. Um geschäftliche Herausforderungen zu meistern, sind häufig maßgeschneiderte Softwarekomponenten erforderlich. In unseren Systemen stehen wir vor vielfältigen Herausforderungen. Ein benutzerfreundliches und allgegenwärtiges Web-Framework ist im Hochfrequenzhandel, in dem jede Nanosekunde zählt, möglicherweise nicht gut geeignet. Eine riesige und teure relationale Datenbank ist nicht die einzige Möglichkeit, Datensätze zu speichern, und bestimmte, weniger beliebte Sprachen passen möglicherweise zu bestimmten Domänen besser als die am häufigsten verwendeten Sprachen auf dem Markt. Bei Microservices sind wir nicht an eine bestimmte Technologie gebunden. Wir können wählen, was uns am besten passt, und viel experimentieren, ohne hohes Risiko einzugehen. Außerdem helfen wir mit, die gesamte Engineering-Organisation voranzubringen. Wenn etwas schief geht, ist das Umschreiben eines Dienstes von Grund auf keine große Sache mehr, aber die resultierende Erfahrung ist von unschätzbarem Wert. Die Verwendung aktuellster Spitzentechnologien hat einen zusätzlichen Vorteil: Die besten Talente für das Unternehmen zu gewinnen, was mit dem Wachstum der Softwareindustrie aktuell 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 mit der Microservices-Architektur ernsthaft beschäftigen. Um es richtig umzusetzen, ist zunächst ein größerer Arbeitsaufwand erforderlich – es zahlt sich jedoch schnell aus! Es ermöglicht Ihnen, neue Funktionen einzuführen und auf eine Art und Weise zu skalieren, die bei klassischen Softwareentwicklung-Konzepten grundsätzlich unmöglich ist. Microservices sind nicht nur eine Architektur, sondern ein Mindset und eine Unternehmensphilosophie. Agilität, die gut zu agilen, funktionsübergreifenden Teams und einer durchgehenden Verantwortung passt.


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

Unsere Empfehlungen