Microservices

Tipps für eine solide Softwarearchitektur

18.12.2023
Von 
Dr. Veikko Krypczyk ist begeisterter Entwickler und Fachautor. Als promovierter Wirtschaftsinformatiker ist er besonders an Fragen einer effizienten Nutzung von IT für Unternehmensprozesse interessiert.
Moderne Anwendungsarchitekturen bauen auf Microservices auf. Lesen Sie, welche Rolle die verschiedenen Schichten dabei spielen und worauf Sie bei der Entwicklung achten sollten.
Für ein harmonisches Zusammenspiel der verschiedenen Anwendungsschichten und Mikroservices braucht es eine solide Softwarearchitektur.
Für ein harmonisches Zusammenspiel der verschiedenen Anwendungsschichten und Mikroservices braucht es eine solide Softwarearchitektur.
Foto: nuchao - shutterstock.com

Microservice-Architekturen sind eine moderne und effektive Methode, Softwareanwendungen zu entwickeln und bereitzustellen. Im Gegensatz zu monolithischen Architekturen, bei denen die gesamte Anwendung als eine einzige, umfassende Einheit betrachtet wird, zerlegt die Microservice-Architektur eine Anwendung in kleine, eigenständige Dienste - sogenannte Microservices. Jeder Microservice steht für eine spezifische Geschäftsfunktion und lässt sich unabhängig entwickeln, bereitstellen und skalieren. Über eine Zwischenschicht, die Middleware, können die Microservices gekoppelt und an die bestehende Unternehmens-IT angebunden werden.

Die Vorteile einer Microservice-Architektur: Entwicklungsteams können sich auf die Entwicklung ihrer jeweiligen spezifischen Dienste konzentrieren. Diese Autonomie unterstützt zudem eine technologische Vielfalt, da für unterschiedliche Services verschiedene Technologien und Programmiersprachen verwendet werden können.

Warum braucht es überhaupt eine Softwarearchitektur?

Eine Softwarearchitektur gewährleistet eine klare Abgrenzung zwischen den verschiedenen Anwendungsebenen. Moderne Softwareapplikationen müssen eine ganze Reihe an Anforderungen erfüllen. Dabei geht es beispielsweise um Benutzerfreundlichkeit, den Einsatz von Cloud-Technologien, diverse Fähigkeiten zur Vernetzung und Integration sowie hohe Sicherheitsanforderungen. Eine gut funktionierende Softwarearchitektur trägt außerdem dazu bei, die Leistung der Anwendung zu optimieren, einschließlich schneller Antwortzeiten und einer auf Effizienz getrimmten Ressourcennutzung. Das sorgt für eine gute Benutzererfahrung.

Wenn Sie mehr über Microservice-Architekturen erfahren wollen, lesen Sie:

Darüber hinaus übernimmt die Softwarearchitektur wichtige Aufgaben aus den Bereichen Datenverschlüsselung, Authentifizierung sowie Autorisierung der User und schützt damit die Daten und Systeme vor einem unautorisierten Zugriff. Es ist daher wichtig, dass die Architektur selbst robust angelegt ist und eine hohe Verfügbarkeit des Systems unterstützt. Eine leicht wartbare Architektur erleichtert es zudem durch Funktionen für Protokollierung, Überwachung und Diagnosen, Fehler zu identifizieren und zu beheben. Zu guter Letzt sollten sich moderne Softwarearchitekturen nahtlos mit anderen Systemen und Plattformen integrieren lassen, um eine möglichst reibungslose Daten- und Informationsübertragung zu ermöglichen.

Welche Vorteile bieten Microservices?

Heutzutage bilden Microservices die Basis für eine Softwarearchitektur. Anstelle einer monolithischen und schwerfälligen Software wird die gesamte Funktionalität auf gut überschaubare Teilsysteme aufgeteilt. Diese Services sind in der Regel über das Internet und RESTful-APIs für die nutzenden Client-Systeme zugänglich. Zwei Gründe sind dafür maßgeblich:

  • Benutzerinnen und Benutzer von Anwendungssystemen möchten heutzutage die Software ihrer Wahl von jedem Ort aus, mit verschiedenen Gerätetypen und unabhängig von der verwendeten Systemumgebung einsetzen. Viele Aufgaben werden nicht mehr ausschließlich auf stationären PCs, sondern vermehrt auf mobilen Geräten erledigt. Die Vorstellung, dass eine Anwendung an ein spezifisches Betriebssystem gebunden ist oder die App nur für ein bestimmtes System verfügbar ist, erscheint kaum noch nachvollziehbar. Es gilt daher, diese Anforderungen durch moderne und dynamische Anwendungssysteme zu erfüllen. Ein Ansatz hierfür besteht in der Implementierung geräte- und plattformübergreifender Software auf der Clientseite sowie einer flexiblen Gesamtsystemarchitektur, welche die Funktionalität als lose miteinander verbundene Services auf der Serverseite bereitstellt.

  • Zu den technologischen Treibern für Microservices zählen Cloud-Plattformen. Die dort gebotene Skalierbarkeit erfordert ein hohes Maß an Flexibilität, was beispielsweise unterschiedliche Lasten der Softwaresysteme anbelangt. Die Integration von Künstlicher Intelligenz in Anwendungssysteme ermöglicht fortschrittliche Analysen, Prozessautomatisierung und personalisierte Benutzererlebnisse. Anwendungssysteme werden vermehrt mit IoT-Geräten integriert, um Daten aus der physischen Welt zu erfassen und zu verarbeiten, insbesondere in Bereichen wie Smart Home und Industrie 4.0. Die Verwendung von Containern und Orchestrierungstools wie Kubernetes, erleichtert die Bereitstellung, Skalierung und Verwaltung von Anwendungen. Aus Sicht der Softwarearchitektur führt die Aufteilung von Anwendungen in kleine, unabhängige Microservices zu einer verbesserten Skalierbarkeit, Wartbarkeit und unterstützt agile Prozesse während der Softwareentwicklung und -pflege.

Wie hängen Microservices und Schichtenarchitekturen zusammen?

Moderne Anwendungssysteme basieren auf Schichtenarchitekturen (n-Tier) und Mikroservices. Die n-Tier-Architektur stellt einen gestalterischen Ansatz für die Strukturierung von Softwareanwendungen dar, bei dem die verschiedenen Komponenten in Schichten, den sogenannten Tiers, organisiert sind. Jede Schicht erfüllt eine spezifische Aufgabe und arbeitet autonom von den anderen Schichten.

Varianten der Aufteilung der Schichten einer Anwendungsstruktur auf Client und Server.
Varianten der Aufteilung der Schichten einer Anwendungsstruktur auf Client und Server.
Foto: Veikko Krypczyk

Meist umfasst eine n-Tier-Architektur die Präsentations-, Anwendungs- und Datenbankschicht. Es gibt unterschiedliche Varianten, wie diese Schichten auf Client- und Serversysteme aufgeteilt werden können. Mögliche Varianten sind die verteilte Präsentation, die entfernte Präsentation, die verteilte Datenhaltung, die entfernte Datenhaltung und die verteilte Datenhaltung.

Die Aufgaben der einzelnen Schichten lassen sich wie folgt beschreiben:

  • Präsentationsschicht (Presentation Tier): Diese Schicht ist für die Benutzeroberfläche der Anwendung verantwortlich. Hier erfolgt die Darstellung von Daten für die User sowie die Entgegennahme von Benutzereingaben. Durch die Trennung des User Interface von der Anwendungslogik ermöglicht diese Schicht unabhängige Änderungen.

  • Anwendungsschicht (Application Tier): In dieser Schicht befindet sich die Anwendungslogik, die Daten verarbeitet und Geschäftsregeln ausführt. Die Anwendungslogik kann mit verschiedenen Benutzeroberflächen wiederverwendet werden, was wiederum Flexibilität und Effizienz fördert.

  • Datenbankschicht (Data Tier): Diese Schicht ist für die Speicherung, Abfrage und Verwaltung von Daten verantwortlich.