Überblick

Eine großangelegte Migration eines Legacy-C-Systems zu einer modernen Java/Spring-Plattform im deutschen Public-Sector-Kontext. Das System verarbeitet sicherheitskritische Operationen, was ein Big-Bang-Rewrite unmöglich machte. Stattdessen haben wir das Strangler-Fig-Pattern angewandt, um C-Komponenten inkrementell durch Java-Services zu ersetzen und dabei volle operative Kontinuität zu wahren.

Ansatz

  • Strangler-Fig-Pattern: Neue Funktionalität wird ausschließlich in Java/Spring gebaut. Bestehende C-Module werden progressiv hinter einer Facade-Schicht gewrapped und ersetzt, sobald ihre Interfaces stabil sind.
  • Dual-Stack-Betrieb: Sowohl C- als auch Java-Komponenten laufen während der Transition parallel, mit einer Routing-Schicht, die Traffic an die entsprechende Implementierung leitet.
  • Contract Testing: Umfassende Contract-Tests stellen Verhaltensgleichheit zwischen Legacy-C-Modulen und ihren Java-Ersetzungen vor dem Cutover sicher.
  • Zero-Downtime-Migration: Jedes Modul wird unabhängig migriert, mit Feature-Flags zur Traffic-Steuerung und Rollback-Möglichkeit zu jedem Zeitpunkt.

Herausforderungen

  • Verhaltensparität: Der Legacy-C-Code hatte undokumentierte Edge Cases, die sich über Jahre im Produktionsbetrieb eingeschliffen hatten. Diese zu extrahieren und in Test-Suites zu kodifizieren war ein erheblicher Aufwand.
  • Sicherheitsanforderungen: Der Public-Sector-Kontext erforderte strikte Vorgaben für Deployment-Pipelines, Netzwerkgrenzen und Change-Management-Prozesse.
  • Team-Upskilling: Unterstützung des Teams beim Übergang von C-Expertise zu Java/Spring-Kompetenz bei gleichzeitiger Aufrechterhaltung der Delivery-Velocity.

Ergebnis

Die Migration schreitet planmäßig voran, mit mehreren erfolgreich nach Java migrierten Modulen. Der Strangler-Fig-Ansatz hat sich als effektiv erwiesen, um Risiken zu managen und gleichzeitig Continuous Delivery aufrechtzuerhalten.