asioso Blog

Allgemeine Einführung ins Thema Microservices


Dieser Artikel führt Euch allgemein in das Thema Microservices ein.

Was sind Microservices?

Microservices sind ein Architekturkonzept für die Anwendungsentwicklung. Was sie von traditionellen monolithischen Ansätzen unterscheidet, ist die Aufteilung der Anwendungen in ihre Kernfunktionen. Jede Funktion oder jeder Dienst kann unabhängig entworfen und implementiert werden. Dies bedeutet, dass einzelne Dienste funktionieren können, ohne andere Dienste in irgendeiner Weise zu beeinträchtigen. 
 
Der Microservice ist eine Hauptfunktion und läuft somit unabhängig von anderen Diensten. Bei der Microservices-Architektur geht es um mehr als nur die Bündelung solcher Kernfunktionen. Es geht darum, Kommunikation und Entwicklungsteams so zu strukturieren, dass sie zukünftige Skalierbarkeit und Integration neuer Features ermöglichen. 
 
Die Kombination von Produkt und Arbeitsweise geht auf Conways Law zurück: Der Informatiker Conway stellte bereits 1967 fest, dass die Anatomie von Systemen und Programmen immer denen der mit der Entwicklung betrauten Gruppe ähneln. 
 

Microservice-Architektur versus monolithische Architektur

Während die Monolith-Architektur versucht, alles in einem Programm zusammenzuführen, sind Microservices nur für eine Bestimmung zuständig und arbeiten unabhängig voneinander. Traditionelle Softwareentwicklung funktioniert wie ein Monolith: Alle Aufgaben werden in einem großen Anwendungsprogramm umgesetzt. Alle einzelnen Dienste werden über eine Benutzeroberfläche dargestellt und greifen auf eine enorme Datenbank zu, alles in einer einzigen Anwendung implementiert. Der Microservices-Ansatz basiert auf Modulen: Jeder Microservice übernimmt nur eine Aufgabe. Die Arbeitsabläufe sind so unterschiedlich wie die Ergebnisse der beiden Ansätze. 
 
Während sich das Team in einer Microservice-Architektur nur um die Ausarbeitung eines Microservices kümmert, ist die Gruppenbildung bei Monolithen anders organisiert. Die Arbeitsgruppen sind nach den Technologien arrangiert, mit denen sie arbeiten: Ein Team widmet sich Datenbanken, ein anderes programmiert einzelne Dienste und ein drittes beschäftigt sich mit der Gestaltung von Benutzeroberflächen. Andere Arbeitsgruppen sind für die Update-Veröffentlichung, Wartung und Analyse zuständig. In einer Monolithen-Architektur sind alle Befehle voneinander abhängig.  
 

Was versteht man unter diesem Architekturstil?

Microservices sind nicht nur Softwaretechnologien, sondern auch die Arbeitsweise von Entwicklern: Wie setzt man große Softwareprojekte am besten um? Als allgemeine Faustregel könnten Projekte, die Microservices verwenden, immer der Unix-Philosophie von Ken Thompson folgen: „Do one thing, do it good“. Somit sollten sich Entwickler auf eine Tätigkeit konzentrieren, diese aber perfektionieren. Das Statement ist nicht nur ein Coding-Tipp, sondern beschreibt auch, wie die einzelnen Microservices funktionieren. 
 
Wenn die Unternehmen dies aus Sicht der Softwareentwicklung verstehen, sollten sie kleine Arbeitsgruppen bilden, die sich um einen Service kümmern, umgesetzt in Microservices. Aus Sicht des Projektmanagements geht es darum, Arbeitsgruppen zu fokussieren und ihre Eigenständigkeit sicherzustellen. Anstelle einer zentralen Verwaltung trägt jedes Team die volle Verantwortung für sein Endprodukt, und zwar für den gesamten Entwicklungszyklus: von der Erstellung über die Auslieferung bis hin zur anschließenden Überwachung. Diese Arbeitsweise hat viele Vorteile und das Ergebnis ist eine modulare Softwarearchitektur. 
 
Die Microservices-Architektur ist im Wesentlichen eine Weiterentwicklung der Service Oriented Architecture (SOA): Kleine Dienste spielen in diesem Architekturmuster auch eine Rolle. Sie sind jedoch immer noch in ein größeres System integriert und nicht so autonom, wie man es den Microservices erwarten würde. Genauso wie es für Letzteres keine exakte Definition gibt, ist auch SOA ein eher vager Ausdruck.  
 

Für wen/Wann eignen sich Microservices?

Microservices bieten einen modularen Aufbau, von dem besonders große Teams profitieren. Der Hauptvorteil einer Microservice-Architektur ist ihre hohe Reaktionsfähigkeit. Komplexe Geschäftssituationen erfordern flexible Architektur und autonome Teams. Die dafür erforderliche Arbeitskultur und IT-Projekte unterscheidet sich deutlich von der traditionellen.  
 
Microservices wollen Autonomie durch professionelle Vollständigkeit erreichen. Sie gelingen nur rudimentär, insbesondere im speziellen Fall von eigenständigen Websystemen. Partielle Vervollständigung und partielle Konsistenz müssen aus technischer Sicht berücksichtigt werden, Anwender können Zwischenzustände sehen und müssen mit Zuständen arbeiten können, die sich zwischen den Subsystemen unterscheiden. 
 
Komplexität, Autonomie und Konsistenz dienen als Kriterien, um technische Entscheidungen für oder gegen den Einsatz von Microservices zu treffen. Zonendiagramme ermöglichen es Unternehmen, eine Anwendung zu finden und ihre Eignung für Microservices aufzuzeigen.  
 

Übersicht der gesamten Blogreihe über Microservices

 


Facebook Twitter Google+ LinkedIn Xing Mail