Mobile-Menu

Definition Was sind Microservices?

Von Dipl.-Ing. (FH) Stefan Luber Lesedauer: 4 min

Anbieter zum Thema

Microservices sind kleine, unabhängige Dienste, die eine einzelne Aufgabe erfüllen. Mit ihnen lassen sich komplexe Anwendungen realisieren. In ihrer Gesamtheit stellen sie die für eine Anwendung benötigten Funktionen bereit. Jeder Service kann unabhängig entwickelt, bereitgestellt und skaliert werden. Microservice-basierte Anwendungen zeichnen sich durch ihre Agilität und Flexibilität aus. Als Infrastrukturkomponente für Microservices-Architekturen kommt häufig ein Service-Mesh zum Einsatz.

Die wichtigsten IT-Fachbegriffe verständlich erklärt.
Die wichtigsten IT-Fachbegriffe verständlich erklärt.
(Bild: © aga7ta - stock.adobe.com)

Mit Microservices lassen sich komplexe, modulare Anwendungen realisieren. Es handelt sich um kleine, unabhängige Dienste, die jeweils eine bestimmte Funktion oder einen Service für die Anwendung bereitstellen. Die Microservices werden über definierte Schnittstellen angesprochen und lassen sich voneinander unabhängig entwickeln, bereitstellen und skalieren. Auch das Starten, Stoppen oder Updaten einzelner Microservices ist ohne gegenseitige Beeinflussung möglich.

Microservices sind plattformunabhängig und laufen auf dedizierten und virtuellen Rechnern oder in privaten, öffentlichen und hybriden Cloud-Umgebungen. Für Cloud-native Applikationen, die die Vorteile des Cloud-Computings voll ausschöpfen, sind Microservices ein unverzichtbares Element. Sie kommen gemeinsam mit Technologien und Verfahren wie der Container-Virtualisierung und Container-Orchestrierung zum Einsatz.

Microservices werden über definierte Schnittstellen wie REST-APIs angesprochen. Sie kommunizieren sowohl mit externen Funktionskomponenten als auch mit anderen Microservices. Häufig wird ein so genanntes Service-Mesh als zusätzliche Infrastrukturkomponente für Microservices-Architekturen verwendet. Es besteht aus einer transparenten Ebene von Netzwerk-Proxy-Instanzen und sorgt für die Vereinfachung der Netzwerkkonfigurationen und einen zuverlässigen Informationsaustausch.

Die typischen Merkmale von Microservices sind kurz zusammengefasst folgende:

  • sie sind für die Erledigung einer bestimmten Aufgabe konzipiert
  • der Funktionsumfang eines Microservices ist begrenzt und überschaubar
  • Microservices sind voneinander unabhängig und einfach zu ersetzen
  • sie werden von kleinen agilen Teams entwickelt
  • für die Entwicklung können unterschiedliche Tools, Programmiersprachen und Frameworks zum Einsatz kommen
  • sie lassen sich auf unterschiedlichen cloudbasierten oder On-Premises-Umgebungen bereitstellen
  • Anpassungen und Veränderungen sind schnell und flexibel durchführbar
  • Microservices sind einfach zu skalieren
  • sie kommunizieren über definierte Schnittstellen und Protokolle
  • durch die Verwendung von Schnittstellen sind die Details der Implementierung nach außen verborgen

Die Unterschiede zu monolithischen Anwendungen

Die klassische Form einer Anwendung war lange Zeit die monolithische Anwendung. Während in einer Microservice-Architektur die einzelnen Services und Funktionen einer Anwendung von unabhängigen Komponenten bereitgestellt und erledigt werden, sind in einer monolithischen Anwendung alle Prozesse eng und untereinander abhängig in einer gemeinsamen Codebasis verknüpft. Im Programmcode sind alle benötigten Funktionen, Services und Prozesse abgebildet. Die monolithische Anwendung wird quasi als ein einziger großer Service ausgeführt.

Bei Veränderungen einzelner Teilfunktionen muss die komplette Codebasis als neue Programmversion bereitgestellt werden. Die Optimierung, Weiterentwicklung, Überarbeitung und Skalierung monolithischer Anwendungen ist deshalb komplex und mit großem Aufwand verbunden. Auch beim Testen oder bei der Fehlersuche ergeben sich im Vergleich zu Microservice-basierten Anwendungen Nachteile. Es muss immer die komplette Codebasis berücksichtigt werden. Fehler sind schwieriger einzugrenzen und zu isolieren. Eine einzige fehlerhafte Funktion im Programmcode kann die Anwendung abstürzen lassen oder komplett unbrauchbar machen.

Netzwerk- und Netzwerksbetriebsaspekte von Microservices

Microservice-basierte Anwendungen bestehen aus einer Vielzahl untereinander kommunizierender Dienste. Der Informationsaustausch findet zwar über definierte Schnittstellen und Protokolle statt, muss aber geregelt und überwacht werden. Auf der Netzwerkebene sind Funktionen notwendig wie die Diensteerkennung, die Authentifizierung der Anfragen, die Verschlüsselung des Datenverkehrs, Lastverteilung und Routing, die Durchsetzung von Security-Policies, die Bereitstellung von Redundanzen, eine automatische Reaktion bei Netzwerkfehlern, die Überwachung der Kommunikation sowie Logging und Reporting.

Da die Microservices auf verschiedenen Infrastrukturen On-Premises oder in privaten, öffentlichen und hybriden Cloud-Umgebungen betrieben werden können, ist die Bereitstellung entsprechender Netzwerkfunktionen eine nicht zu unterschätzende Herausforderung. Zudem bietet die Vielzahl an Schnittstellen und Kommunikationsports der Microservices eine große Angriffsfläche. Netzwerkbedingte lange Antwortzeiten einzelner Microservices oder Ausfälle der Service-Kommunikation sind zu vermeiden. Das Kommunikationsnetz für die Microservices muss stabil, performant, sicher und belastbar sein. Jeden Microservice netzwerktechnisch getrennt voneinander zu betrachten und auf Vernetzungs- und Kommunikationsebene mit eigenen Funktionen auszustatten hat sich als aufwendig, komplex und unpraktikabel erwiesen.

Zur Implementierung von Netzwerkfunktionen und zur zuverlässigen Steuerung der Informationsflüsse kommt häufig ein sogenanntes Service-Mesh zum Einsatz. Es fügt eine zusätzliche Infrastrukturebene für die Kommunikation der einzelnen Services ein und gestattet es den Entwicklern, sich bei der Programmierung eines Microservices auf die eigentliche Geschäftslogik zu konzentrieren. Das Service-Mesh managt, steuert und überwacht die Service-to-Service-Kommunikation, indem es Netzwerk- und Sicherheitsfunktionen abstrahiert und sie den Microservices in entkoppelter Form zur Verfügung stellt. Technisch ist das über die Verwendung sogenannter Sidecar Proxys realisiert. Sie werden jedem Microservice zur Seite gestellt und bilden ein Mesh-Netzwerk. In einem Service-Mesh wird die komplette Kommunikation über die Sidecar Proxys geführt. Die Proxys übernehmen Networking-Funktionalitäten wie Serviceerkennung, Load Balancing, Verschlüsselung, Authentifizierung, Monitoring und vieles mehr. Vorteile eines Service-Meshs sind eine stabile, transparente, sichere und einfach zu skalierende Service-to-Service-Kommunikation. Zu den bekanntesten Lösungen zur Realisierung eines Service-Meshs zählen die beiden Open-Source-basierten Entwicklungen Istio und Linkerd.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Netzwerktechnik, IP-Kommunikation und UCC

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

(ID:49201121)