Die monolithische Anwendung wird zunächst analysiert, wobei Grenzen zwischen Services, Modulabhängigkeiten und Datenverantwortlichkeiten festgelegt werden. Zusätzlich erstellen wir eine Migrationsroadmap, empfohlene Reihenfolge der Monolith-Zerlegung und den geschätzten Aufwand für jeden Migrationsschritt. Diese Etappe ist unerlässlich, bevor die eigentliche Migration beginnt.
Wir entwickeln Microservices-Architekturen sowohl für neue Anwendungen als auch für bestehende monolithische Systeme, die zu Microservices migriert werden. Dazu gehören Domänenanalyse und Definition von Bounded Contexts, klare Abgrenzung der Microservices, Design der synchronen und asynchronen Kommunikation zwischen Services, API-Verträge, Zuordnung der Datenverantwortung pro Service sowie die Infrastruktur-Topologie. Das Ergebnis ist eine vollständig dokumentierte Architektur mit Deployment-Diagrammen, Interaktionsdiagrammen der Services und einem Entscheidungsprotokoll zu Technologien und Architekturentscheidungen. Dieses Architekturdesign kann auch unabhängig von einer Migration durchgeführt werden.
Wir wenden Prinzipien des Domain-Driven Design an, um das bestehende monolithische System zu analysieren und Bounded Contexts zu definieren. Auf dieser Grundlage werden klare Service-Grenzen festgelegt. Jeder Service verwaltet seine eigenen Daten und bietet eine eigene API-Schnittstelle. Die Reihenfolge der Zerlegung richtet sich nach der Kopplung der Module und nicht nach ihrer Sichtbarkeit. Zuerst werden die am wenigsten gekoppelten Module migriert.
Bei Anwendungen, die nicht abgeschaltet werden können, kommt der Strangler-Fig-Ansatz zum Einsatz. Dabei entstehen neue Microservices parallel zum bestehenden Monolithen, während die Anfragen schrittweise auf die neuen Services umgeleitet werden. Ein Big-Bang-Ansatz ist nicht erforderlich, und jeder Service kann im Produktivbetrieb getestet werden, bevor der nächste Schritt erfolgt.
Gemeinsam genutzte monolithische Datenbanken werden auf einzelne Services aufgeteilt. Dazu gehören Schema-Zerlegung, Datenmigration, Implementierung von Eventual-Consistency-Patterns sowie Synchronisationsmechanismen für die Übergangsphase, in der noch gemeinsame Datenbanken genutzt werden.
Die Services werden durch eine API-Gateway-Schicht ergänzt, und Kommunikationsprotokolle werden definiert. Für synchrone Kommunikation verwendet man REST oder gRPC. Für asynchrone Kommunikation wird Event-Streaming genutzt, beispielsweise mit Technologien wie Kafka oder Azure Service Bus.
Die Microservices werden mit Docker containerisiert. Für die Orchestrierung stehen verschiedene Optionen zur Verfügung, darunter Kubernetes sowie Amazon EKS, Azure AKS und Google GKE.
Für alle Microservices wird eine CI/CD-Pipeline eingerichtet. In der monolithischen Architektur erfolgt das Deployment gemeinsam, während Microservices eine unabhängige Bereitstellung ermöglichen. CI/CD-Pipelines sorgen für reibungslose Updates ohne gemeinsames Deployment.
Für alle Microservices wird Observability und Monitoring eingerichtet, um das Verhalten der Services sowie mögliche Fehler oder Störungen zu kontrollieren. Zum Einsatz kommen OpenTelemetry, Prometheus, Grafana und der ELK Stack.
Nach der vollständigen Extraktion aller Services wird der Monolith außer Betrieb genommen, die gemeinsame Infrastruktur abgeschaltet und der gesamte Prozess dokumentiert. Dieser Schritt erfolgt erst, wenn alle Services stabil in der Produktionsumgebung funktionieren.
Wir übernehmen Wartung und Support für Anwendungen auf Basis einer Microservices-Architektur nach der Migration oder nach der Erstentwicklung. Dazu gehören Performance-Monitoring und Incident-Management, Aktualisierung von Abhängigkeiten und Sicherheitskomponenten, Optimierung der Infrastrukturkosten, Konfigurationsanpassungen für Skalierung, Fehlerbehebung mit Root-Cause-Analyse sowie die Entwicklung neuer Services innerhalb der bestehenden Architektur.
Branche: Finanzsoftware
Beschreibung: Chudovo hat die Migration einer bestehenden Kreditplattform für KMU übernommen, die ursprünglich auf dem .NET Framework entwickelt wurde, und auf die aktuelle Version .NET auf Azure umgestellt. Parallel wurde die Umstellung auf eine Microservices-Architektur gestartet. Zusätzlich wurde der Datenlayer neu gestaltet, sodass jeder Service eine klare Datenverantwortung bekommt. Die Anwendung ermöglicht automatisierte Bonitätsprüfungen und die Auszahlung von Krediten innerhalb von 24 Stunden nach Antragstellung.
Branche: Videosicherheit/Business Services
Beschreibung: Chudovo hat für ein deutsches Unternehmen ein webbasiertes Video-Management-System entwickelt, das ein bestehendes Desktop-Produkt ersetzt. Die Anwendung wurde von Grund auf als Microservices-Architektur mit den neuesten .NET-Versionen auf Azure umgesetzt.
Branche: Finanz-/Unternehmenssoftware
Das Projekt umfasste die Weiterentwicklung einer bestehenden, auf Microservices basierenden Business-Management-Plattform und die Implementierung eines neuen Backend-Dienstes zur Zeiterfassung der Mitarbeiter. Der neue Dienst wurde mit .NET und MongoDB unter Verwendung von Clean Architecture und Azure Service Bus entwickelt. Die Integration der Zeiterfassungssysteme gelang ohne Unterbrechung der bestehenden Dienste.