Migrationsstrategien im Vergleich

Seite 2: Migrationsszenarien

Inhaltsverzeichnis

Neben der Überlegung, welche Module des Altsystems sich durch Neuentwicklung, Kapselung oder Konversion migrieren lassen, stellt sich die Frage, welche Strategie für die Übergabe zu wählen ist. Grundsätzlich unterscheidet man zwischen inkrementeller und Big-Bang-Umstellung. Die Übergabestrategie legt – abhängig von der gewählten Umstellungsstrategie – die Form der Übergabe ("Cut-over") des migrierten Systems und damit zusammenhängend die Form der Ablösung des Legacy-Systems fest. Projektleiter müssen entscheiden, ob das migrierte System als Gesamtheit zu einem bestimmten Termin oder schrittweise in den operativen Einsatz zu übergeben ist (vgl. [2]).

Beim Big Bang Approach, der auch unter dem Namen "Cold Turkey" (sinngemäß etwa "harter Entzug") bekannt ist, handelt es sich um eine komplette Neuentwicklung des Altsystems mit modernen Entwicklungsmethoden, Architekturen, Tools und Datenbanken. Der Prozess läuft zudem auf neuen Hardwareplattformen. Entwicklung und Tests für das neue System finden parallel zum alten statt. Hat die Neuentwicklung alle Tests bestanden, deaktiviert das Operations-Team in einem finalen Schritt, dem "Big Bang", das Altsystem und das neue übernimmt die Arbeit.

Dieses Vorgehen birgt laut M. Brodie und M. Stonebraker [4] einige Schwierigkeiten. Zunächst muss ein besseres System versprochen werden, denn meistens reicht dem Management die vage Aussicht auf geringere Betriebskosten in der Zukunft nicht. Außerdem stehen die Geschäftsregeln niemals still, das heißt, Änderungen sind sowohl im Altsystem als auch im neuen System umzusetzen beziehungsweise anzupassen. Das kann fehleranfällig und kostenintensiv sein. Spezifikationen sind rar, oft ist der Code die einzige Dokumentation. Die Entwickler des alten Systems sind häufig nicht mehr verfügbar. Dadurch wird das Verständnis der Funktionsweisen von Code oder der Programmiertechniken erschwert. Meist existieren nicht dokumentierte Abhängigkeiten zu anderen Systemen. Ihre Anzahl wächst erfahrungsgemäß mit dem Alter der Applikationen.

Die Datenmenge ist eventuell zu groß, um sie in angemessener Zeit zu migrieren, da ein Dump oder der Export der Daten schon Tage oder Wochen dauern kann, was somit zu einer inakzeptablen Downtime der Produktionsumgebung führen würde, da in der Zeit weitere Änderungen an den Daten verhindert werden müssen.

Zu bedenken ist darüber hinaus, dass das Managen solch großer Projekte kompliziert ist, Verspätungen normalerweise nicht toleriert werden und große Projekte dazu tendieren, sich aufzublähen, also umfangreicher ausfallen als geplant. Führt man sich das alles vor Augen, kann die Angst vor Veränderung und der neuen Technik die Liebe zum alten System aufblühen lassen, was durch mangelnde Motivation ebenfalls die Migration erschwert. Langwierige Analysen verhindern den Projektbeginn zusätzlich, denn statt zu starten wird analysiert und analysiert.

Brodie und Stonebraker lehnen den Flash Cut, also den abrupten Umstieg, der dem Big Bang Approach zu Grunde liegt, grundsätzlich ab. Sie sagen, dass er ohne eine Downtime von Datenbank oder Applikation nicht möglich ist (vgl. [4]). Zu den Vorteilen dieser Variante zählen die geringen Entwicklungskosten und die Geschwindigkeit des Migrationsprozesses.

Die Chicken-Little-Alternative ist eine inkrementelle Migrationsstrategie mit elf Schritten. Je kleiner die Schritte, desto kleiner das Risiko. Sollte ein Schritt fehlschlagen, ist nur er zu wiederholen, nicht das ganze Projekt (vgl. [4]).

Gateways vermitteln fĂĽr die Dauer der Migration zwischen den Komponenten (Abb. 2).

Für eine derartige Strategie ist es notwendig, das Gesamtsystem in kleine Pakete unterteilen zu können, um im Anschluss eins nach dem anderen zu migrieren. Um Anfragen und Daten zwischen den betroffenen Komponenten des Alt- und Neusystems zu übersetzen und Komponenten von Änderungen an anderen Komponenten abzuschirmen, kommen temporär Gateways zum Einsatz (siehe Abb. 2). Außerdem ist es ihre Aufgabe, zwischen den betroffenen Komponenten zu koordinieren, um die Konsistenz bei Änderungen sicherzustellen. Tabelle 1 enthält einen Vergleich der Migrationsstrategien Cold Turkey und Chicken Little.

Tabelle 1: Migrationsstrategien im Vergleich
Cold Turkey Chicken Little
Risiko GroĂź Kontrollierbar
Fehleranfälligkeit Das ganze Projekt schlägt fehl. Nur einzelne Schritte schlagen fehl.
Ergebnisse sofort nach Fertigstellung sichtbar, eventuell aber nicht von langer Dauer Nutzen steigt stetig mit der Entwicklung des neuen Systems
Ausblick Nicht vorhersagbar bis zum Endergebnis Konservativ optimistisch

Beim Analysieren des Altsystems ist zwischen unstrukturierten, semistrukturierten (siehe Abb. 3) und gut strukturierten Systemen zu unterscheiden. Bei gut strukturierten Systemen sind Präsentation, Datenzugriff und Logik voneinander getrennt. Bei unstrukturierten ist das Gegenteil der Fall und alles passiert in einem Modul. Gut strukturierte Systeme sind gut für eine inkrementelle Migration geeignet. Bei allen anderen Zuständen sind meist umfangreiche Sanierungsarbeiten am Altsystem zu leisten. In semistrukturierten Systemen lässt sich die Präsentationsschicht noch separieren, jedoch sind die Anwendungs- und Datenschicht eng miteinander verbunden.

Oberflächlich lassen sich semistrukturierte Systeme zwar separieren, doch je tiefer man in sie eindringt, desto stärker werden die Verbindung zwischen den Schichten (Abb. 3).

Die in Tabelle 2 erläuterten elf Chicken-Little-Schritte sind bei der Migration eines jeden Inkrements anzuwenden. Entwickler können sie in einer beliebigen Reihenfolge durchführen und nicht benötigte weglassen. Chicken Little bedeutet im Endergebnis zwar eine komplette Neuentwicklung des Systems, allerdings mit geringeren Risiken als beim Big-Bang-Ansatz (vgl. [4]).

Tabelle 2: Chicken Little in elf Schritten
1. Inkrementelle Analyse des Altsystems
Anforderungen des Altsystems sind zu spezifizieren. Eventuell muss das Altsystem mit Reverse-Engineering-Techniken analysiert werden.

2. Inkrementelle Strukturierung des Altsystems

Bei semi- oder unstrukturierten Systemen sind Abhängigkeiten zwischen Modulen zu eliminieren und eindeutig definierte Schnittstellen zwischen Modulen und Datenbankservices zu erstellen.
3. Inkrementelles Design der Ziel-Interfaces
Spezifikation der Benutzerschnittstellen und Entscheidung darĂĽber, ob ein Gateway zu erstellen ist.
4. Inkrementelles Design der Zielanwendungen
Entwickler ĂĽbernehmen Funktion und Prozessfluss der Altanwendungen oder erstellen sie neu.
5. Inkrementelles Design der Zieldatenbank
Eventuell sind Tabellen in relationalen Schemas anders zu gestalten.
6. Inkrementelles Installieren der Zielumgebung
Anforderungen an die Zielumgebung werden identifiziert, installiert und getestet.

7. Inkrementelles Erstellen und Installieren von Gateways

Entsprechend der Anforderungen (Funktionen, Architektur und nicht funktionalen Anforderungen) ist ein Gateway zu entwickeln oder zu kaufen und zu installieren.
8. Inkrementelles Migrieren der Datenbank
Installation des Datenbankmanagementsystems (DBMS) und Implementierung des Schemas aus Schritt 5.
9. Inkrementelles Migrieren der Anwendungen Auswahl und Migration eines oder mehrerer Module
10. Inkrementelles Migrieren der Interfaces
Auswahl und Migration eines oder mehrerer Interfaces

11. Inkrementelles Umschalten auf die Zielumgebung

Das System lässt sich Modul für Modul, Oberfläche für Oberfläche umschalten (Cut-over).