Microservices: flexible Softwarearchitektur für Unternehmen

In diesem Artikel geben wir eine Einführung zum Thema Microservices und warum sich diese Softwarearchitektur für Business-Anwendungen besonders eignet. Wir sind Fans von Microservices und entwickeln die meisten unserer Projekte auf diese Weise. Daher klären wir im Folgenden auf, was Microservices überhaupt sind, welche Vorteile es gibt und welche Technologien dahinterstecken. Außerdem geben wir ein Beispiel für eine Anwendung, die von uns mit Microservices umgesetzt wurde.

Microservices - flexible Softwarearchitektur

Fangen wir vorne an:

Was sind Microservices?

Wie zuvor bereits angedeutet, sind Microservices die Grundlage einer modernen Form der Softwarearchitektur. Bei diesem Ansatz besteht eine einzelne Anwendung aus vielen lose verknüpften und unabhängig voneinander einsetz- und programmierbaren kleineren Diensten. Damit die einzelnen Module als eine Anwendung funktionieren, kommunizieren diese über Schnittstellen (APIs).


Diese modulare Kopplung der einzelnen Dienste ist der größte Unterschied zur monolithischen Softwarearchitektur. Bei einem Monolithen ist die Anwendung eng gekoppelt. Zwar gibt es auch hier modulare Ansätze wie die service-oriented architecture (SOA), bei denen kleinere Services eine Rolle spielen, allerdings sind diese nach wie vor in einem festen System deployt und teilen sich eine Codebasis. Dadurch wird beispielsweise bei Ausfällen das gesamte System beeinträchtigt. Einzelne Änderungen und Fehler der Module können in einer Kettenreaktion die anderen Module beeinträchtigen. Bei Microservices hingegen sind die einzelnen Module unabhängig und können so einzeln gepflegt und betreut werden.


Daraus ergeben sich einige Vorteile von Microservices gegenüber nicht modularer Softwarearchitekturen. 

Die Vorteile von Microservices für Unternehmen

Unser Entwicklungsansatz zielt darauf ab, agile Entwicklung und Planungssicherheit zu vereinen. Dafür eignen sich Microservices hervorragend. Diese Art der Softwarearchitektur und die zuvor beschriebene Modularität kann man sich wie Lego vorstellen. Die einzelnen Steine eines Sets sind die verschiedenen Services und das zusammengesetzte Bauwerk ist die Anwendung. Man kann die Steine beliebig austauschen, verändern oder aus dem Bauwerk entfernen. Diese Möglichkeiten gibt es auch bei Microservices. Diese Modularität hat viele Vorteile, die besonders Anwendungen für Unternehmen zugutekommen. 


Die wichtigsten haben wir nachfolgend aufgelistet:


Die einzelnen Module

  • lassen sich unabhängig voneinander implementieren. Neue Elemente können hinzugefügt werden, ohne dass die gesamte Anwendung geändert werden muss. So kann die Softwareentwicklung auf neue Anforderungen und Gegebenheiten reagieren und beispielsweise neue Features ergänzen.

  • können von kleinen Teams verwaltet werden und mit unterschiedlichen Programmiersprachen und Stacks programmiert werden. Das ermöglicht, jeden Use Case mit der am besten geeigneten Technologie umzusetzen.

  • schaffen so die Möglichkeiten unabhängig gewartet, ausgetauscht und skaliert zu werden. So muss nicht die gesamte Anwendung skalieren, wenn nur einzelne Bausteine überlastet sind.


Diese Services können unterschiedlich groß sein. Ein Modul kann nur ein Skript beinhalten, aber auch das gesamte Frontend oder Backend. Allgemein ermöglicht die Microservice-Architektur schnelles und zuverlässiges Bereitstellen großer, komplexer Anwendungen und eignen sich so für vielseitige Businessanwendungen. 


Programmiersprachen für Microservices


Tools und Technologien

Wie in den Vorteilen bereits beschrieben, können einzelne Services in verschiedenen Programmiersprachen umgesetzt werden. So gut wie jede moderne Sprache kann in einer Microservices-Architektur verwendet werden.  Es gibt aber auch bestimmte Tools und Technologien, die für Microservices obligatorisch geworden sind und nicht selten im selben Atemzug genannt werden.

Docker Container

Ganz vorne dabei sind Container. Den Begriff Container hat die Open-Source-Software Docker am meisten geprägt. Der Name könnte nicht passender sein. Wie in der Transportlogistik dienen Container als standardisierte Verpackungen. In diesem Fall nur nicht für Waren, sondern für Code. In Containern werden Anwendungen isoliert in wiederverwendbaren Formaten verpackt. Diese Funktionalität eignet sich hervorragend für Microservices. Alle Bestandteile wie der Code, Systemwerkzeuge und die Bibliotheken lassen sich so jeweils für die einzelnen Dienste in einem sogenannten “Docker-Image” verstauen. Damit laufen die einzelnen Services autark, da alle notwendigen Information in einem Container gespeichert werden können. Anders als virtuelle Maschinen enthalten Container kein eigenes Betriebssystem. Dadurch fallen sie schlanker aus. 


Kubernetes: Der Steuermann im Containerschiff

Das Wort Kubernetes kommt aus dem Griechischen und lässt sich als Steuermann übersetzen. Vereinfacht gesagt ist Kubernetes genau das: Die Open-Source-Software ist ein Container-Orchestrierungssystem. Mit Kubernetes lassen sich die Bereitstellung, Skalierung und Verwaltung von Containern automatisch steuern. Das Ziel des Systems ist das Ermöglichen einer optimalen Packungsdichte unterschiedlicher container-basierten Anwendungen. Das sorgt für eine effizientere Ressourcennutzung und kann so Infrastrukturkosten senken. Hat man nur einige, wenige Container macht Kubernetes aber nicht zwangsläufig Sinn. Eine Nummer schlanker ist die Steuerung mittels Docker-Compose. 


Genug der Theorie: Wie kann eine Microservice-Anwendung aussehen? 

Beispielanwendung: Wissensmanagement im Unternehmen mit der Toolbox

Für das Dienstleistungsunternehmen gempex haben wir die sogenannte Toolbox entwickelt. Die Box dient dazu, gewonnenes Wissen aus Beratungseinsätzen zu speichern und allen Berater:innen zur Verfügung zu stellen. Um das zu ermöglichen, haben wir die Anwendung als moderne, Container-basierte Webanwendung umgesetzt. Die Toolbox wird in Docker-Container auf der Amazon Web Services (AWS) gehostet. Durch die Nutzung der Cloud können die gempex Mitarbeiter die Anwendung ortsunabhängig und mobil nutzen und so direkt beim Kunden arbeiten. Die Box verfügt über ein eigenes User-Management-System und ist damit vom restlichen System des Unternehmens unabhängig. Durch die Architektur in verschiedenen Containern und die Möglichkeit verschiedenen Technologien zu nutzen, konnte die Anwendung schnell implementiert werden, ohne Abstriche in puncto Sicherheit zu machen. Außerdem führt die Modularität dazu, dass implementierte Container, wie z.B. das User-Management-System, auch für weitere Projekte bei gempex wiederverwendet werden können.


Mehr zu diesem Projekt erfahren sie hier.


Wissensmanagement mit Webanwendung


Fazit

Microservices ermöglichen einmal eine schnellere und agilere Entwicklung von komplexen Anwendungen. Am meisten profitiert aber das Deployment und der Betrieb von dieser Form der Softwarearchitektur. Mit der flexiblen, modularen Microservice-Architektur können neue Features, Verbesserungen und Bug-Fixes deutlich schneller und häufiger durchgeführt werden, ohne dass das gesamte System darunter leidet. Um den Text mit unserem Vergleich mit Lego abzuschließen: Die bunten Steine haben sich aufgrund ihrer variablen Einsatzweise gegenüber anderen Spielzeugen durchgesetzt. Wir sind überzeugt, dass auch de Microservices das gleiche Potenzial haben.