Ihre Software ist 10+ Jahre alt, kritisch für den Betrieb –
aber niemand traut sich ran?
Ich modernisiere Ihre Legacy-Software im laufenden Betrieb – kein Big-Bang, sondern kontrollierte Inkremente.
Dabei arbeite ich mich bewusst in alte Technologien, unvollständig dokumentierte Fachlogik und gewachsene Schnittstellen ein – auch wenn Hardware, Maschinen oder technische Anlagen Teil des Systems sind.
Wenn Sie 3 oder mehr Warnsignale erkennen, ist Modernisierung überfällig.
Je länger Sie warten, desto teurer und riskanter wird es.
"Jede Änderung ist riskant – niemand traut sich ran"
"Deployments sind stressig, dauern Stunden, passieren selten (1x/Quartal)"
"Wenn etwas schiefgeht, ist Debugging ein Ratespiel"
"Frameworks sind End-of-Life, Security-Patches nicht mehr verfügbar"
"System wird immer langsamer, aber niemand weiß warum"
"Wartung kostet mehr als Neuentwicklung"
"Niemand will an Legacy arbeiten – Team-Fluktuation steigt"
"Keiner versteht mehr die Gesamtarchitektur – Dokumentation fehlt"
Konzept: Neue Funktionalität in neuem System bauen, altes System parallel weiterlaufen lassen, Traffic schrittweise umleiten, altes System nach und nach abschalten.
Wann sinnvoll: System ist zu groß für Rewrite, Business-Logik ist komplex & undokumentiert, Risiko-Minimierung ist kritisch.
Beispiel:
Alt: Monolith (Java 8, JSF, PostgreSQL)
Neu: Neuer Service (Java 21, Spring Boot, REST)
→ Strangler-Proxy leitet Traffic um (Feature Flag) → Alte Funktionalität nach und nach migriert
Konzept: Monolith intern modularisieren (Bounded Contexts), klare Modul-Grenzen ziehen, API-Contracts zwischen Modulen definieren, später Module als Services auslagern (wenn nötig).
Wann sinnvoll: Microservices wären Overkill, Team ist zu klein für verteilte Systeme, Domänengrenzen sind unklar.
Beispiel:
Alt: 1 großer Monolith (alles in einer App)
Neu: Modular Monolith (Payroll, Reporting, IAM als separate Module)
→ Jedes Modul hat eigene API → Später: Reporting als separater Service (wenn Last steigt)
Konzept: Reporting oft Performance-Bottleneck. Read Model = separate Datenbank nur für Reporting. Event-driven: Hauptsystem sendet Events, Read Model baut optimierte Views. CQRS (Command Query Responsibility Segregation).
Wann sinnvoll: Reporting blockiert Hauptsystem, komplexe SQL-Queries sind langsam, Monatsabschluss dauert Stunden.
Beispiel:
Alt: Payroll-System + Reporting in einer DB (langsam)
Neu: Payroll sendet Events → Read Model (PostgreSQL mit optimierten Views) → Reporting greift auf Read Model zu (schnell, entkoppelt)
Konzept: Legacy-Systeme haben oft keine Observability. Ohne Logs/Metrics/Traces ist jede Änderung ein Blindflug. Zuerst: Observability einbauen (Logs, Metrics, Traces, Alerts). Dann: Modernisierung starten (mit klaren SLOs).
Wann sinnvoll: System hat keine Logs/Metrics, Performance-Probleme sind unklar, Fehlersuche ist Ratespiel.
Beispiel:
Alt: Keine Logs, keine Metrics, keine Traces
Neu: Logs (ELK Stack), Metrics (Prometheus), Traces (Jaeger), Alerts (PagerDuty)
→ SLOs definiert (z.B. "99,9% Uptime", "< 500ms Latency") → Jetzt kann modernisiert werden (mit klaren Zielen)
Ziel: Ist-Zustand transparent machen
Ziel: Soll-Zustand definieren & Weg dorthin
Ziel: Schrittweise Modernisierung
Ziel: Kontinuierliche Qualitätssicherung
Alt: 1x/Quartal
Neu: 1x/Woche oder häufiger
Alt: Sporadische Fehler
Neu: -80% Fehlerrate
Alt: Stunden/Tage
Neu: < 30 Minuten
Alt: Monatsabschluss 8+ Stunden
Neu: < 1 Stunde
Alt: Niemand traut sich ran
Neu: Team entwickelt eigenständig
Alt: Wartung frisst Budget
Neu: Budget für Innovation
Lassen Sie uns in einem ersten Gespräch klären, ob Legacy-Modernisierung
für Sie sinnvoll ist. Unverbindlich, 30 Minuten, kostenfrei.