Microsserviços
Arquitetura
Backend
API
Escalabilidade
Mobile

Microservices in Anwendungen: Verteilte Architektur für Mobilgeräte

Microservices in Anwendungen: Verteilte Architektur für Mobilgeräte

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