Was sind Microservices?

Was sind Microservices?  Post Cover

Was sind Microservices? 

Umso größer, komplexer und fortgeschrittener eine Software-Anwendung wird, umso schwieriger und kostspieliger wird auch die Verwaltung, die Weiterentwicklung und Skalierbarkeit. Darüber hinaus werden Innovationen erschwert, da für Änderungen bzw. das Experimentieren komplexe Änderungen an der Codebasis nötig sind. Microservices bieten für all diese Probleme eine Lösung – wir verraten, wie.  

Microservices als Alternative zu monolithischen Architektur 

Microservices bezeichnen einen architekturbezogenen, organisatorischen Ansatz, bei dem eine Software aus kleineren Services besteht. Diese Services agieren unabhängig voneinander und kommunizieren über klar definierte API-Schnittstellen. Vereinfacht gesagt besteht die Software also nicht aus einem großen Programm, sondern vielen kleinen Funktionen, die miteinander kommunizieren und so die Verfügbarkeit der verschiedenen Funktionen der Software sicherstellen.  

Damit umgehen die Microservices das Grundlagenproblem der monoholistischen Architektur, bei der alle Funktionen einer Software in unmittelbarem Zusammenhang miteinander stehen. Das führt nicht nur zu Problemen bei der Skalierbarkeit, sondern erhöht auch das Risiko für die Anwendungsverfügbarkeit. Da jeder kleine Teil der Software miteinander verbunden ist, kann auch nur ein fehlerhafter Teil dafür sorgen, dass das ganze System nicht mehr handlungsfähig ist.  

Im Unternehmensalltag werden die Microservices darüber hinaus auch eigenständigen Teams zugeteilt, die sich nur um diesen Abschnitt der Software kümmern. So entstehen Teams, die auf Grund verkürzter Kommunikation und Hierarchien nicht nur deutlich produktiver sind, sondern auch deutlich flexibler und schneller auf neue Trends reagieren, bzw. Bugs und andere Probleme beheben können. Darüber hinaus ermöglicht dieses Modell eine höhe Spezialisierung der verschiedenen Teams, wodurch bessere Ergebnisse erzielt werden können.  

So funktionieren Microservices  

Im Gegensatz zum monolithischen Modell, bei dem alle Funktionen und Bereiche miteinander verknüpft sind, wird bei einer Microservices Artichtektur ein Softwaresystem in viele kleine Bereiche aufgeteilt, die völlig unabhängig voneinander sind – die sogenannten Microservices. Die verschiedenen Microservices kommunizieren über sorgfältig geplante API-Schnittstellen miteinander und funktionieren so als ein einheitliches Softwaresystem. 

MIcrosevice Box.jpg

Die Microservices sind aber tatsächlich völlig unabhängig voneinander – jeder Service kann zum Beispiel problemlos in einer anderen Programmiersprache gestaltet werden und auf einer anderen Plattform implementiert werden. Das hat den Vorteil, dass das Entwickler-Team immer die beste Lösung für den jeweiligen Service finden kann – ein Microservice kann also zum Beispiel Java verwenden, während der nächste Microservice des gleichen Softwaresystems nod.js verwendet.  

Darüber hinaus ermöglicht ein Microservices Ansatz auch ein deutlich einfacheres Implementieren von externen Schnittstellen. Das beste Beispiel dafür ist Netflix. Der Streaming-Anbieter hat nicht nur seine gesamte Architektur sehr erfolgreich auf AWS Cloud-basierte Microservices umgestellt, sondern stellt auch einen Großteil seiner erfolgreichen Anwendungen als Netflix OSS (Open Source Software Center) gratis anderen Nutzern zu Verfügung.  

Die technologischen Vorteile von Microservices  

Einer der wichtigsten Vorteile von Microservices ist sicherlich das minimierte Risiko für die Anwendungsverfügbarkeit. Denn ist einer der Bereiche von einem schweren Fehler betroffen, dann hat das keinerlei Auswirkungen auf alle anderen Bereiche des Softwaresystems. Im Kontrast dazu steht die monolithische Architektur, bei der es nur einen Fehler in einem einzigen Bereich braucht, um das ganze System funktionsuntüchtig zu machen.  

Das wiederum führt dazu, dass das eigene Team deutlich innovations- und experimentierfreudiger wird und mehr nach dem „Fail fast, fail forward“ Grundsatz arbeiten kann. Schließlich hat ein einzelner Fehlschlag in einem Microservice System längst nicht so drastische Auswirkungen. Darüber hinaus werden die Teams auch selbstständiger und können so, in kleinen, unabhängigen Gruppen, deutlich effektiver und schneller arbeiten. 

Darüber hinaus ermöglicht eine solche Aufteilung auch eine deutlich bessere Skalierbarkeit des eigenen Systems. Denn sollte ein einzelner Bereich überlastet werden, hat das keinerlei Auswirkungen auf die übrigen Bereiche – skaliert werden muss also nur der jeweilig Microservice. So können Entwickler auch deutlich schneller und effizienter auf neue Trends und Veränderungen am Markt reagieren und so Software-Überalterungen vermeiden.   

Hier noch einmal die wichtigsten Vorteile im Überblick:  

  • Minimiertes Risiko für die Anwendungsverfügbarkeit 
  • Innovations-Anreize 
  • Bessere Skalierbarkeit 
  • Erhöhte Eigenständigkeit 
  • Erhöhte Spezialisierung 
  • Vermeidung von Software-Überalterung  

Die Vorteile von Microservices am Beispiel Uber  

Auch Uber ist ein hervorragendes Beispiel für eine überaus erfolgreiche Implementierung von Microservices. Als Uber gegründet wurde, war die Software nur als Fahrdienst-Vermittler für die Stadt San Francisco gedacht. Also eine Lösung, die nur einen einzigen Service und nur eine einzige Region bedienen musste – perfekt für eine monolithische Architektur. 

Das System stieß allerdings schnell an seine Grenzen, als Uber damit begann, zunächst in andere Städte und dann in andere Länder zu expandieren. Zunächst muss für jede neu hinzugefügte Region und jedes neue Feature das ganze System editiert werden. Deshalb konnte Uber nur noch Entwickler einsetzen, die bereits seit den Gründungstagen an dem Programm gearbeitet hatten. Gleichzeitig führte ein Anstieg der Belastungsspitzen in nur einer einzigen Region dazu, dass das gesamte Uber-System überlastet war.  

Darüber hinaus wurde jedes kleine Update der Software zum Risikofaktor, schließlich konnte ein einziger Fehler das ganze System lahmlegen. Um genau diese Gefahren zu vermeiden, wechselte Uber zu einer Microservices Struktur, mit der Systeme nicht nur dezentraler, sondern auch produktiver gestaltet werden konnten. Der ungebrochene Erfolg des Unternehmens unterstreicht, dass diese Entscheidung genau richtig war.