Microservices Flashcards
Was sind Microservice Architekturen?
Architekturen, deren Subsysteme jeweils getrennt voneinander entwickel- deploy und betreibbare Einheiten darstellen, die über Schnittstellen (häufig RESTful) miteinander kommunizieren
Was sind die Vor- und Nachteile von Microservices?
Vorteile:
- Hohe Flexibilität und Veränderbarkeit von Software
- Verbesserung der time-to-market
- Schnellere Entwicklung in kleineren Einheiten
- Erhöhte Innovationsfähigkeit
- Flexibilität bzgl. der Technologieauswahl
- Eigene Ablaufumgebung
- Gute Skalierbarkeit
- Koexistenz versch. Implementierungen
Nachteile:
- Latenz
- Verbindungsprobleme/Ausfälle
- Bandbreiten
- Schwierige Fehlerbehandlung
- Komplexes Deployment
- Auflösung der Dependencies zur Laufzeit
Was sind die Eigenschaften eines MicroServices?
- Unabhängigkeit von anderen Einheiten
- einzelne Entwicklung
- Unabhängige Verarbeitung
- einzelne Änderbarkeit
- einzelne Skalierbarkeit
- einzelne Ersetzbarkeit
- Kommunikation mit anderen Microservices über ein Netzwerk
- dezentrales Management der Microservices
- automatisierte Infrastruktur
- Kurze Release-Zyklen
- hohe Kohäsion und lose Kopplung
Was sind die Herausforderungen in Hinblick auf Service Discovery?
Microservices müssen in der Lage sein, die Dienste anderer Services zu nutzen => Verbindungen müssen hergestellt werden
Lösungen:
- Client-Side Discovery: der Consumer fragt in einer Service-Registry nach der Adresse einer passenden Instanz des Services
- Server-Side-Discovery: der Consumer sendet die Anfrage an einen Router, der die Service-Registry nach einer passenden Instanz fragt und den Request weiterleitet
Was sind die Herausforderungen in Hinblick auf Dezentralisierung der Steuerung?
Bei einer dezentralen Steuerung ist es schwierig, den Überblick zu behalten.
Lösungen:
- einheitliche Regelungen zur Dokumentation und Publikation der Schnittstellen
- Technische Protokolle einheitlich festlegen
- Monitoring und Logging standardisieren
Was sind Herausforderungen in Hinblick auf UI-Integration?
Die einheitliche Integration in eine UI kann schwierig werden
Lösungen:
- Jeder Microservice bringt seine eigene UI mit, die im Browser über Links integriert wird
- Jeder Microservice stellt seine eigenen UI-Anteile zur Verfügung, die in einer übergeordneten Benutzeroberfläche zusammengeführt werden
WICHTIG: Keine Frontend-Monolithen entwerfen!
Was sind die Herausforderungen in Hinblick auf dezentralisierte Daten?
Daten werden nicht zentral gespeichert, sondern jeder Microservice speichert die für ihn relevanten Aspekte bestimmter Datenmodelle. das führt dazu, dass Daten asynchron ausgetauscht und upgedated werden
Lösung:
Ein Microservice published eine Datenänderung, die von anderen MS, für die die Änderung relevant ist, subscribed wird. Diese anderen MS können dann mit den neuen Daten arbeiten und diese in einem für sie sinnvollen Kontext speichern
Welche Möglichkeiten zur Aufteilung von Microservices gibt es?
Decompose by Business Capability: Services nach Business Anforderungen oder Geschäftsbereichen organisieren
Decompose by Subdomain: Microservices nach Domains entsprechend DDD organisieren => Bounded Contexts bieten eine Orientierungsmöglichkeit für die Aufteilung
Wie ist die Teamstruktur innerhalb von Microservices?
- cross-funktionale Teams, die ein Produkt von Anfang bis Ende betreuen
- you build it, you run it
- Kleine Teams (8 bis 12 Personen)
- ein Microservice sollte so groß bzw. klein sein, dass er innerhalb von 2 Wochen entwickelt, getestet und deployed werden kann