Lose gekoppelte Microservices, unabhängig voneinander entwickelt und betrieben, erlauben die rasche Umsetzung neuer Geschäftsanforderungen. Damit verbunden sind aber auch Herausforderungen: Wie können Daten zwischen verschiedenen Microservices synchronisiert werden? Wie kann man einzelne Services schrittweise aus einem bestehenden monolithischen System extrahieren?
Eine Lösung ist die Publikation von Change Events aus der Datenbank eines Microservice. Dies ermöglicht nicht nur die Replikation von Datenänderungen zu anderen Microservices, Analytics-Systemen o.Ä., sondern auch die Aktualisierung von Volltext-Indizes und Caches oder die Erstellung optimierter Lesedatenmodelle in CQRS-Architekturen.
Der Vortrag stellt das Konzept von Change Data Capture (CDC) und Debezium vor, eine auf Apache Kafka basierende Open-Source-CDC-Lösung. Mit Debezium können Änderungen in Datenbanken wie MySQL, PostgreSQL, MongoDB, Oracle und SQL Server erfasst und als Events in Beinahe-Echtzeit publiziert werden. Dabei ist die Korrektheit und Vollständigkeit der Daten auch dann sichergestellt, falls einmal etwas schiefgeht, etwa weil der Message-Broker vorübergehend ausfällt.
In einer Live-Demo werden wir einen CDC-Datenstrom für die Datenbank eines Microservice aufgesetzt, ohne dass Änderungen am Service selbst erforderlich sind. Anschließend werden wir zeigen, wie verschiedene Consumer die Change Events nutzen können, etwa um eine zweite Datenbank oder einen Suchindex in Elasticsearch zu aktualisieren.
Slides eines Talks from JavaLand 2019 (https://programm.javaland.eu/2019/#/scheduledEvent/569883)