Microservices unterteilen das System in kleine, unabhängige Dienste. Für mobile Apps bedeutet dies skalierbare und sich weiterentwickelnde APIs. Dieser Leitfaden stellt vor, wie man Microservices für Anwendungen implementiert und betreibt.
Was sind Microservices?
Definition
Architektur, bei der die Anwendung aus kleinen und unabhängigen Diensten besteht.
Funktionen
- Unabhängigkeit bei der Bereitstellung
- Alleiniger Verantwortlicher für die Domain
- Kommunikation über Netzwerk
- Kann unterschiedliche Technologien haben
Monolith-Unterschied
Monolith: alles zusammen. Microservices: getrennt nach Verantwortung.
Vorteile
Unabhängige Skalierbarkeit
Jeder Service skaliert je nach Bedarf.
Unabhängige Bereitstellung
Die Aktualisierung eines davon hat keine Auswirkungen auf andere.
Resilienz
Ein Scheitern bedeutet nicht, dass alles zunichte gemacht wird.
Mehrere Technologien
Verwenden Sie für jede Aufgabe das beste Werkzeug.
Unabhängige Teams
Klare Eigentumsverhältnisse, weniger Abhängigkeiten.
Nachteile
Operative Komplexität
Mehr Teile zu verwalten.
Netzwerklatenz
Die Kommunikation zwischen Diensten erhöht die Latenz.
Hartes Debuggen
Verfolgen Sie Probleme dienstübergreifend.
Datenkonsistenz
Verteilte Transaktionen sind komplex.
Overhead
Für kleine Systeme kann es zu viel sein.
Wann zu verwenden
Gut für
- Große Teams
- Komplexe Domänen
- Notwendigkeit einer unabhängigen Skala
- Häufige Entwicklungen
Vermeiden
- Kleine Teams
- MVP
- Einfache Domänen
Zersetzung
Nach Domäne
Begrenzte DDD-Kontexte.
Nach Funktionalität
Authentifizierung, Zahlungen, Katalog usw.
Nach Anwendungsfall
Unabhängige Benutzerflüsse.
API-Gateway
Funktion
Zentraler Einstiegspunkt für Kunden.
Verantwortlichkeiten
Routing, Authentifizierung, Ratenbegrenzung, Aggregation.
Werkzeuge
Kong, AWS API Gateway, Nginx.
BFF (Backend für Frontend)
Konzept
Spezifisches Gateway für den Clienttyp.
Nutzung
BFF für Mobilgeräte, eine weitere für das Web.
Vorteile
Optimiert für jeden Kunden.
Kommunikation
Synchron
REST, gRPC. Anfrage/Antwort.
Asynchron
Nachrichtenwarteschlangen. Veranstaltungen.
Kompromisse
Synchron ist einfach, asynchron ist belastbar.
Diensterkennung
Problem
Wie finden Dienste zueinander?
Lösungen
Konsul, Kubernetes DNS, AWS Cloud Map.
Beobachtbarkeit
Protokollierung
Zentralisierte Protokolle mit Korrelations-ID.
Nachverfolgung
Verteilte Nachverfolgung mit Jaeger, X-Ray.
Metriken
Nach Service und Aggregat.
Resilienz
Leistungsschalter
Rufen Sie den fehlgeschlagenen Dienst nicht mehr auf.
Wiederholen
Versuchen Sie es erneut mit Backoff.
Zeitüberschreitung
Warten Sie nicht ewig.
###Schott
Isolieren Sie Ressourcen.
Datenmanagement
Datenbank pro Dienst
Jeder Dienst mit seiner Bank.
Endgültige Konsistenz
Verteilte Transaktionen vermieden.
Ereignisse
Kommunizieren Sie Änderungen über Ereignisse.
Sagen
Lange Transaktionen über Clearing.
Bereitstellung
Container
Docker zur Kapselung von Diensten.
Orchestrierung
Kubernetes zur Verwaltung.
CI/CD
Pipeline pro Dienst.
Blaugrün/Kanarienvogel
Sichere Bereitstellungen.
Für Mobilgeräte
Optimierte API
Weniger Anrufe, aggregierte Daten.
Cache
CDN- und API-Caching.
###Offline
Ausfallsicherheit bei Netzwerkausfällen.
Versionierung
Versionierte APIs für Kompatibilität.
Testen
###Einheit
Für den Dienst.
Integration
Kommunikation zwischen Diensten.
###Vertrag
Verbraucher und Anbieter vereinbaren einen Vertrag.
End-to-End
Vollständige Abläufe durch Dienste.
Migration
Strangler-Muster
Ersetzt nach und nach monolith.
Fangen Sie klein an
Beginnen Sie mit einem Dienst.
###Extrahieren
Identifizieren Sie klar definierte Domänen.
Häufige Fehler
Vorzeitige Verteilung
Microservices, bevor Sie sie brauchen.
Nano-Dienstleistungen
Dienstleistungen zu klein.
Keine Beobachtbarkeit
Debuggen unmöglich.
Latenz ignorieren
Mehrere Netzwerkanrufe.
Fazit
Microservices bieten Skalierbarkeit und Flexibilität, sind jedoch komplex. Bewerten Sie, wenn es für Ihren Kontext erforderlich ist, investieren Sie in Beobachtbarkeit und gehen Sie diszipliniert vor. Konzentrieren Sie sich bei mobilen Apps auf optimierte APIs und Ausfallsicherheit.
##FAQs
1) Benötige ich Kubernetes für Microservices? Nicht unbedingt. Aber im großen Maßstab hilft es sehr.
2) Wie viele Dienste sind zu viele? Es gibt keine magische Zahl. Wenn das Team es nicht schafft, ist es zu viel.
3) Mobile sollte Microservices? direkt aufrufen Im Allgemeinen nicht. Verwenden Sie API Gateway oder BFF.
4) Sind Microservices immer besser? Nein. Ein gut gefertigter Monolith kann in vielen Fällen besser sein.
5) Wie fange ich mit Microservices an? Starten Sie modularer Monolith. Bei Bedarf extrahieren.
Lesen Sie auch
- Backend für Anwendungen: Architektur, Technologien und Best Practices
- Monolith vs. Microservices: Welche Architektur Sie wählen sollten
- Skalierbare Softwarearchitektur: So bauen Sie Systeme, die wachsen
- Skalierbare Softwarearchitektur – Best Practices für die Skalierung
- Skalierbare Softwarearchitektur – Best Practices für Startups
- Skalierbare Softwarearchitektur – Best Practices für kleine Teams
