Microservices

Microservices ist eine Architektur wo du deine Software in viele kleine, unabhängige Services aufteilst - jeder macht eine spezifische Aufgabe.

Statt einer großen monolithischen Anwendung hast du viele kleine Programme die zusammenarbeiten.

Grundprinzip

Definition

Ein Microservice ist ein kleiner, autonomer Service der eine spezifische Business-Funktion erfüllt und unabhängig deployed werden kann.

Eigenschaften:

Vergleich zu Monolithen

Aspekt Monolith Microservices
Größe Eine große Anwendung Viele kleine Services
Deployment Alles zusammen Einzeln pro Service
Skalierung Gesamte App Nur benötigte Services
Technologie Eine für alles Verschiedene möglich
Komplexität Einfach zu starten Komplex zu orchestrieren

Architektur-Beispiel

E-Commerce-System

Statt einer App hast du:

  • User-Service - Verwaltung von Nutzerdaten
  • Product-Service - Produktkatalog
  • Order-Service - Bestellungen
  • Payment-Service - Zahlungsabwicklung
  • Shipping-Service - Versand

Jeder kann unabhängig entwickelt, getestet und deployed werden.

Vorteile

Vorteile

  • Skalierbarkeit - Nur stark genutzte Services skalieren
  • Unabhängige Entwicklung - Teams arbeiten parallel
  • Technologie-Freiheit - Bestes Tool für jeden Service
  • Fehler-Isolierung - Ein Service-Ausfall stoppt nicht alles
  • Schnellere Releases - Services können einzeln aktualisiert werden

Beispiel Skalierung:

Wenn zu Weihnachten viele bestellen, skalierst du nur Order-Service und Payment-Service - nicht das komplette System!

Nachteile

Nachteile

  • Komplexe Kommunikation - Services müssen miteinander sprechen
  • Verteiltes System - Schwerer zu debuggen
  • Mehr Infrastruktur - Braucht Docker, Kubernetes, etc.
  • Datenkonsistenz - Schwieriger wenn jeder Service eigene Datenbank hat
  • Mehr Deployment-Aufwand - Viele Services = viel zu deployen

Service-Kommunikation

Synchrone Kommunikation

Service ruft anderen Service direkt auf - wartet auf Antwort.

REST API:

User-Service → GET /products → Product-Service
Product-Service → Response mit Produkten → User-Service

Vorteile:

Nachteile:

Asynchrone Kommunikation

Service sendet Nachricht - wartet nicht auf Antwort.

Message Queue (z.B. RabbitMQ, Kafka):

Order-Service → "Bestellung erstellt" → Message Queue
Payment-Service liest Nachricht → Verarbeitet Zahlung
Shipping-Service liest Nachricht → Bereitet Versand vor

Vorteile:

Nachteile:

Service Discovery

Service Discovery

Wie finden Services einander in einem dynamischen System?

Problem:

Services starten/stoppen dynamisch - IP-Adressen ändern sich.

Lösung:

API Gateway

Einstiegspunkt für alle Client-Anfragen - verteilt Requests an richtige Services.

Funktionen:

Client → API Gateway → User-Service
                    → Product-Service
                    → Order-Service

Deployment

Container-Technologie

Microservices laufen meist in Docker-Containern, orchestriert durch Kubernetes.

Docker:

Kubernetes:

Datenverwaltung

Database per Service Pattern

Eigene Datenbank pro Service

Jeder Microservice hat seine eigene Datenbank - kein Service greift direkt auf Daten anderer Services zu.

Vorteile:

Herausforderungen:

Testen von Microservices

Test-Pyramide für Microservices:

  1. Unit Tests - Teste einzelne Funktionen
  2. Integrationstests - Teste Service mit seiner Datenbank
  3. Contract Tests - Teste API-Verträge zwischen Services
  4. End-to-End Tests - Teste gesamten Workflow
Testing-Herausforderung

End-to-End-Tests sind aufwändig wenn alle Services laufen müssen - nutze Service Mocks wo möglich!

Monitoring und Observability

Bei verteilten Systemen ist Monitoring kritisch!

Was monitoren:

Tools:

Wann Microservices nutzen?

Gut geeignet für:

  • Große, komplexe Anwendungen
  • Viele Teams arbeiten parallel
  • Verschiedene Skalierungsanforderungen
  • Langfristige Projekte
  • Wenn schnelle Releases wichtig sind

Nicht geeignet für:

  • Kleine Projekte mit 1-2 Entwicklern
  • Projekte wo einfache Architektur ausreicht
  • Wenn du keine Container/Orchestrierung-Expertise hast
  • Startup-MVPs (Minimum Viable Products)

Prüfungsrelevanz AP2

Für AP2 wichtig

  • Vorteile/Nachteile kennen
  • Unterschied zu Monolith erklären können
  • Kommunikationsmuster (synchron/asynchron)
  • Wann einsetzen, wann nicht
  • Service Discovery und API Gateway Konzepte

Verwandte Konzepte

Zusammenfassung

Kern-Aussage

Microservices teilen große Anwendungen in viele kleine, unabhängige Services auf - jeder Service macht eine spezifische Aufgabe und kann unabhängig entwickelt, deployed und skaliert werden.

Trade-off:

Mehr Flexibilität und Skalierbarkeit, aber auch mehr Komplexität in Kommunikation und Deployment.