Die Ausgangssituation

Cloud-Betrieb mit wachsender Komplexität

Unser Kunde, die Mercedes-Benz AG, betreibt mit dem XENTRY Portal ein Ökosystem für After Sales Prozesse, welches von autorisierten Werkstätten und Servicezentren genutzt wird, um Fahrzeuge effizient zu warten und zu reparieren. Es ist ein wichtiger Bestandteil des technischen Supports für den Kunden und trägt dazu bei, die Leistung, Sicherheit und Zuverlässigkeit der Fahrzeuge zu gewährleisten.

Das XENTRY Portal ist eine Cloud-native-Lösung, mehrheitlich bestehend aus einer großen Anzahl an Microservices auf Basis von Springboot – die mit Java oder Kotlin implementiert sind und die mit Kubernetes verwaltet werden. Datenbankseitig wird sowohl PostgreSQL als auch MongoDB verwendet. Grundlage des XENTRY Portals ist eine von uns entwickelte Plattform, die gemeinsame Standards für die Entwicklungsteams zur Verfügung stellt.

Ausgangspunkt für das Migrationsvorhaben war, dass es beim Betrieb der Anwendung in der Cloud zunehmend Schwierigkeiten gab – insbesondere bei der Stabilität der Managed Services sowie beim Support. Aus diesem Grund sollte die XENTRY-Plattform sowie alle darauf basierenden Anwendungen zu einem neuen Cloud-Provider migriert werden. Wichtige Randbedingungen dieser Migration waren ein unterbrechungsfreier Betrieb der bestehenden Systeme, so wenig Aufwand wie möglich für die Entwicklungsteams sowie eine Risikominimierung in der Form, dass bis zu einem definierten Punkt ein Zurückrollen der Migration möglich war.

„Die Migration zeigt, welchen Mehrwert eine starke, standardisierte Plattform bietet – sie war das Fundament dafür, dass über 40 Entwicklungsteams ohne Anpassungsaufwand weiterarbeiten konnten, während im Hintergrund eine hochkomplexe Cloud-Transition stattfand.“

Ruben Burr, Vice-President, Consulting Services

d

Das Vorgehen

Schrittweise Migration in die neue Cloud-Umgebung

Für die Migration der Plattform und der darauf basierenden knapp 40 Anwendungen wurde ein Lift-and-Shift-Ansatz gewählt, auch bekannt als Rehosting. Dabei wird die zugrundeliegende Technologie erhalten und sowohl die Anwendung als auch die Daten von einer Cloud-Umgebung auf eine andere übertragen. Ebenfalls blieb die Werkzeugkette bestehen, so dass es keine Umstellung für die mehr als 40 Entwicklungsteams gab.

Für die Migration der einzelnen Services wählten wir einen zweistufigen Ansatz: die Migration der Anwendungen wurde getrennt von der Datenmigration durchgeführt. Zunächst erfolgte die Migration der Anwendungen schrittweise in die neue Cloud-Umgebung, während die Datenhaltung temporär in der alten Cloud verblieb. Um den Übergang für die Nutzerinnen und Nutzer nahtlos zu gestalten, wurde der Traffic – bei unveränderter Domain – mittels einer Content Delivery Network Lösung je nach Status der Migration des Ziel-Services entweder zur alten oder zur neuen Cloud weitergeleitet. Die Services griffen in dieser ersten Migrationsphase auf die Datenbank beim alten Cloud-Provider zu.

Dies ermöglichte ein schnelles Rollback, falls festgestellt wurde, dass ein Service noch nicht stabil in der neuen Cloud lief. In der zweiten Migrationsphase wurden die Datenbanken zum neuen Cloud-Anbieter überführt. Hierbei kamen unterschiedliche Replikationsmethoden zum Einsatz, um die Datenbestände in beiden Clouds synchron zu halten und so einen nahezu unterbrechungsfreien Wechsel zur neuen Cloud zu gewährleisten.

Die Ergebnisse

Erfolgreiche Migration von Plattform und Anwendungen

Sowohl die XENTRY-Plattform als auch alle Anwendungen sind zum neuen Cloud-Provider migriert. Von großem Nutzen dabei war, dass die von uns entwickelte Plattform eine sichere und hochverfügbare Infrastruktur sowie einheitliche Vorgehensweisen für die Entwicklung und den Betrieb der Services bereitstellt.

Dazu gehören: 

  • Die Bereitstellung von Kubernetes mit Namespace as a Service, sodass jedes Entwicklungsteam seine Services isoliert von anderen Teams mithilfe von Rollen und Berechtigungen betreiben kann.
  • Ein Kubernetes Service Mesh für die Verlagerung von Funktionen aus der Anwendungs- in die Infrastrukturebene für standardisierte Lösungen unabhängig vom verwendeten Technologie-Stack.
  • Die einheitliche Behandlung von Monitoring, Logging und Tracing, sodass die Entwicklungsteams keine eigenen Lösungen bauen müssen und die Plattform als Ganzes optimal überwacht werden kann.
  • Sicherstellung der Resilienz der Anwendungen durch Einsatz wichtiger Resilience-Pattern – wie Timeouts, Retrys, Circuit Breaking und Fault Injection.
     

Um den Erfolg der Migration sicherzustellen, wurden flankierend Lasttests durchgeführt. Durch deren Einsatz konnte auch das Sizing der Cloud-Infrastruktur optimiert werden.

Ein Ingenieur oder Techniker steht in einer automatisierten Produktionsumgebung und überwacht auf einem Tablet Daten und Performance-Diagramme.