Vom Monolithen zu Microservices

Bestehende Systeme erfolgreich in eine Microservices-Architektur umgestalten

Detalles Bibliográficos
Otros Autores: Newman, Sam, author (author), Demmig, Thomas (-)
Formato: Libro electrónico
Idioma:Inglés
Publicado: dpunkt 2020.
Edición:1st edition
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009630800906719
Tabla de Contenidos:
  • Intro
  • Inhalt
  • Vorwort
  • Kapitel 1: Gerade genug Microservices
  • Was sind Microservices?
  • Unabhängige Deploybarkeit
  • Modellierung rund um eine Businessdomäne
  • Die eigenen Daten besitzen
  • Welche Vorteile können Microservices haben?
  • Welche Probleme werden entstehen?
  • Benutzeroberflächen
  • Technologie
  • Größe
  • Und Ownership
  • Der Monolith
  • Der Ein-Prozess-Monolith
  • Der verteilte Monolith
  • Black-Box-Systeme von Fremdherstellern
  • Herausforderungen von Monolithen
  • Vorteile von Monolithen
  • Zu Kopplung und Kohäsion
  • Kohäsion
  • Kopplung
  • Gerade genug Domain-Driven Design
  • Aggregat
  • Kontextgrenzen
  • Aggregate und Kontextgrenzen auf Microservices abbilden
  • Weitere Quellen
  • Zusammenfassung
  • Kapitel 2: Eine Migration planen
  • Das Ziel verstehen
  • Drei zentrale Fragen
  • Warum wollen Sie Microservices einsetzen?
  • Teamautonomie verbessern
  • Time-to-Market verringern
  • Kostengünstig auf Last reagieren
  • Robustheit verbessern
  • Die Anzahl der Entwickler erhöhen
  • Neue Technologien einsetzen
  • Wann können Microservices eine schlechte Idee sein?
  • Unklare Domäne
  • Start-ups
  • Beim Kunden installierte und verwaltete Software
  • Keinen guten Grund haben!
  • Abwägungen
  • Die Menschen mitnehmen
  • Organisationen verändern
  • Gefühl für die Dringlichkeit vermitteln
  • Führungskoalition schaffen
  • Vision und Strategie entwickeln
  • Veränderungsvision kommunizieren
  • Mitarbeitern umfangreiche Unterstützung ermöglichen
  • Kurzfristige Erfolge erzielen
  • Nutzen konsolidieren und weitere Veränderungen anstoßen
  • Neue Ansätze in der Unternehmenskultur verankern
  • Die Wichtigkeit der inkrementellen Migration
  • Nur die Produktivumgebung zählt
  • Veränderungskosten
  • Reversible und irreversible Entscheidungen
  • Bessere Orte zum Experimentieren
  • Wo fangen wir also an?
  • Domain-Driven Design.
  • Wie weit müssen Sie gehen?
  • Event Storming
  • Ein Domänenmodell zum Priorisieren einsetzen
  • Ein kombiniertes Modell
  • Teams reorganisieren
  • Sich verändernde Strukturen
  • Es gibt nicht die eine Lösung für alle
  • Eine Änderung vornehmen
  • Veränderte Fähigkeiten
  • Woher wissen Sie, ob die Transformation funktioniert?
  • Regelmäßige Checkpoints
  • Quantitative Messgrößen
  • Qualitative Messwerte
  • Vermeiden Sie den Sunk-Cost-Effekt
  • Seien Sie offen für neue Ansätze
  • Zusammenfassung
  • Kapitel 3: Den Monolithen aufteilen
  • Ändern wir den Monolithen, oder lassen wir es bleiben?
  • Ausschneiden, einfügen oder reimplementieren?
  • Den Monolithen refaktorieren
  • Migrations-Patterns
  • Pattern: Strangler Fig Application
  • Wie es funktioniert
  • Wo wir es einsetzen
  • Beispiel: HTTP Reverse Proxy
  • Daten?
  • Proxy-Optionen
  • Protokolle wechseln
  • Beispiel: FTP
  • Beispiel: Message Interception
  • Andere Protokolle
  • Andere Beispiele für das Strangler Fig Pattern
  • Verhaltensänderung während der Migration
  • Pattern: UI Composition
  • Beispiel: Page Composition
  • Beispiel: Widget Composition
  • Beispiel: Micro Frontends
  • Wo wir es einsetzen
  • Pattern: Branch by Abstraction
  • Wie es funktioniert
  • Als Fallback-Mechanismus
  • Wo wir es einsetzen
  • Pattern: Parallel Run
  • Beispiel: Preisbildung von Kreditderivaten
  • Beispiel: Homegate-Angebote
  • Verifikationstechniken
  • Spione einsetzen
  • Scientist von GitHub
  • Dark Launching und Canary Releasing
  • Wo wir es einsetzen
  • Pattern: Decorating Collaborator
  • Beispiel: Loyalty-Programm
  • Wo wir es einsetzen
  • Pattern: Change Data Capture
  • Beispiel: Loyalty-Karten ausgeben
  • Change Data Capture implementieren
  • Wo wir es einsetzen
  • Zusammenfassung
  • Kapitel 4: Die Datenbank aufteilen
  • Pattern: Shared Database
  • Hilfreiche Patterns
  • Wo wir es einsetzen.
  • Aber es geht nicht!
  • Pattern: Database View
  • Die Datenbank als öffentlicher Vertrag
  • Präsentations-Views
  • Grenzen
  • Ownership
  • Wo wir es einsetzen
  • Pattern: Database Wrapping Service
  • Wo wir es einsetzen
  • Pattern: Database-as-a-Service Interface
  • Eine Mapping Engine implementieren
  • Vergleich mit Views
  • Wo wir es einsetzen
  • Ownership transferieren
  • Pattern: Aggregate Exposing Monolith
  • Pattern: Change Data Ownership
  • Datensynchronisation
  • Pattern: Synchronize Data in Application
  • Schritt 1: Daten Bulk-synchronisieren
  • Schritt 2: Synchrones Schreiben, aus dem alten Schema lesen
  • Schritt 3: Synchrones Schreiben, aus dem neuen Schema lesen
  • Wo dieses Pattern genutzt werden kann
  • Wo wir es verwenden
  • Pattern: Tracer Write
  • Datensynchronisierung
  • Beispiel: Bestellungen bei Square
  • Wo wir es verwenden
  • Die Datenbank aufteilen
  • Physische versus logische Datenbanktrennung
  • Zuerst die Datenbank oder zuerst den Code aufteilen?
  • Zuerst die Datenbank aufteilen
  • Zuerst den Code aufteilen
  • Datenbank und Code gleichzeitig aufteilen
  • Was sollte ich also als Erstes aufteilen?
  • Beispiele zur Schemaaufteilung
  • Pattern: Split Table
  • Wo wir es verwenden
  • Pattern: Move Foreign-Key Relationship to Code
  • Den Join ersetzen
  • Datenkonsistenz
  • Wo wir es verwenden
  • Beispiel: Gemeinsam genutzte statische Daten
  • Transaktionen
  • ACID-Transaktionen
  • Weiterhin ACID, aber ohne Atomarität?
  • Zwei-Phasen-Commit
  • Verteilte Transaktionen: Sagen Sie einfach Nein!
  • Sagas
  • Fehlersituationen in Sagas
  • Sagas implementieren
  • Saga versus verteilte Transaktionen
  • Zusammenfassung
  • Kapitel 5: Wachsende Probleme
  • Mehr Services - mehr Schmerzen
  • Ownership im großen Maßstab
  • Wie kann sich dieses Problem zeigen?
  • Wann kann sich das Problem zeigen?
  • Mögliche Lösungen
  • Disruptive Änderungen.
  • Wie kann sich dieses Problem zeigen?
  • Wann kann sich das Problem zeigen?
  • Mögliche Lösungen
  • Reporting
  • Wann kann sich dieses Problem zeigen?
  • Mögliche Lösungen
  • Monitoring und Troubleshooting
  • Wann kann sich dieses Problem zeigen?
  • Wie kann sich das Problem zeigen?
  • Mögliche Lösungen
  • Lokale Entwicklung
  • Wie kann sich dieses Problem zeigen?
  • Wann kann sich das Problem zeigen?
  • Mögliche Lösungen
  • Zu viele Dinge laufen lassen
  • Wie kann sich dieses Problem zeigen?
  • Wann kann sich das Problem zeigen?
  • Mögliche Lösungen
  • End-to-End-Tests
  • Wie kann sich dieses Problem zeigen?
  • Wann kann sich das Problem zeigen?
  • Mögliche Lösungen
  • Globale versus lokale Optimierung
  • Wie kann sich dieses Problem zeigen?
  • Wann kann sich das Problem zeigen?
  • Mögliche Lösungen
  • Robustheit und Resilienz
  • Wie kann sich dieses Problem zeigen?
  • Wann kann sich das Problem zeigen?
  • Mögliche Lösungen
  • Verwaiste Services
  • Wie kann sich dieses Problem zeigen?
  • Wann kann sich das Problem zeigen?
  • Mögliche Lösungen
  • Zusammenfassung
  • Abschließende Worte
  • Anhang A: Literatur
  • Anhang B: Pattern-Index
  • Index.