Best Practices für die Migration auf Azure und AWS:Zuerst die Datenbanken fit für die Cloud machen
30. April 2020Die anfängliche Hoffnung, durch den Wechsel ihrer IT in die Cloud kosteneffizienter arbeiten zu können, erfüllt sich für viele Unternehmen nicht. Eine Ursache dafür könnte darin bestehen, dass Datenbestände vorab nicht für die neue Cloud-Umgebung optimiert wurden. Wer SQL Server-Datenbanken aus Microsoft Azure oder Amazon Web Services (AWS) betreiben möchte, der sollte eine Migration erst nach intensiver Vorbereitung angehen.
Bei der Migration in die Cloud verhält es sich ähnlich wie bei einem Wohnungsumzug: Während man Regale ausräumt und seine Besitztümer in Augenschein nimmt, tauchen Gegenstände auf, von denen man sich gar nicht mehr bewusst war, dass man sie besitzt. Die Frage, die sich dabei unweigerlich aufdrängt, ist: Hat der gesamte Hausstand in der neuen Wohnung noch Relevanz? Oder ist der Zeitpunkt gekommen, einige Bestandteile auszusortieren?
Dieses Phänomen lässt sich ebenso auf die Migration von SQL Server-Datenbanken in die Cloud übertragen. Da in der neuen Umgebung andere Gesetzmäßigkeiten gelten als „On-Premises“, sollten einem reibungslosen Umzug entsprechende Aufräumarbeiten im Datenbestand vorausgehen. Dazu müssen Datenbank-Administratoren (DBAs) vor allem einen Überblick darüber gewinnen, auf welche Weise alle Datenbanken mit den verbundenen Anwendungen interagieren.
So können sie unnötiges Durcheinander in ihren Datensätzen bereinigen und falls nötig, Codes überarbeiten. Der Migration sollte daher ein zweistufiger Prozess vorangehen, der sich aus einer Evaluations- sowie Prüfungsphase zusammensetzt.
Evaluationsphase: Datenauswahl für die Migration
Zu hohe Kosten gehören zu den häufigsten Ursachen für das Scheitern von Cloud-Migrationen. Dies lässt sich in vielen Fällen darauf zurückführen, dass das neue Tarifmodell der Cloud nicht ausreichend berücksichtigt wurde. Ungenutzte Daten, deren Menge im On-Premises-Betrieb weitgehend unerheblich ist, können in der Cloud, wo der Tarif durch CPU, Storage und IOPs bestimmt wird, das Budget spürbar belasten.
Eine umfangreiche Bewertung vorab hingegen trägt dazu bei, dass die neue Umgebung möglichst effizient genutzt wird. Dafür empfiehlt es sich, sämtliche Bestandsdatensätze zu ermitteln und nacheinander drei Kategorien – Bereinigung, Archivierung, Migration – zuzuordnen.
- Bereinigung: Große Mengen an Junk-Daten oder Datensätze, die schlichtweg nicht mehr von Nutzen sind, eignen sich für die Bereinigung vor einer Cloud-Migration. In diese Kategorie fallen beispielsweise Daten, die in der Vergangenheit angefallen, jedoch von minderer Qualität sind und lediglich aus rechtlichen Gründen gespeichert werden mussten. Sofern der gesetzlich vorgeschriebene Zeitraum verstrichen ist, können diese nun gelöscht werden. Handelt es sich um personenbezogene Daten, sollte der Datenbestand auch unter Berücksichtigung der DSGVO betrachtet werden. Diese schreibt vor, dass Daten lediglich so lange gespeichert werden dürfen, wie es für die Verarbeitung nötig ist.
- Archivierung: Im Zuge ihrer Ermittlungen können DBAs auch auf den umgekehrten Fall stoßen: Es gibt einige Datensätze, die zwar veraltet sind, für gegenwärtige und künftige Trendanalysen jedoch eine geeignete Qualität aufweisen. Hier empfiehlt es sich, die Daten weiterhin lediglich schreibgeschützt zu nutzen. Ist beispielsweise die Migration in Microsoft Azure geplant, können diese einfach über eine SQL Stretch-Datenbank in eine vergleichsweise kostengünstigere Speicherebene verschoben werden. Die Daten stehen dort weiterhin schreibgeschützt zur Verfügung und können nach Bedarf für Business Intelligence-Operationen, zur Anwendung von KI- oder Machine Learning-Funktionen sowie für das Erstellen prädiktiver Analysen abgerufen werden.
- Migration: Nachdem die zu bereinigenden und archivierenden Daten identifiziert sind, hat sich die Menge der Daten, die sich für die Migration eignen, automatisch gebildet. Diese stammen zwar aus lokalen Produktionssystemen, doch dies bedeutet nicht, dass sie sich direkt in ein Cloud-basiertes Produktionssystem übertragen lassen. Um möglichen Beschwerden seitens der Nutzer, ihre Reports würden seit der Migration keinen Sinn mehr ergeben, vorzubeugen, müssen diese Daten im nächsten Schritt einer eingehenden Qualitätsprüfung unterzogen werden.
Prüfungsphase: Qualitätscheck für Datenbanken
Da während eines Migrationsprozesses an Anwendungen und Datenbanken keinerlei Änderungen vorgenommen werden sollten, gilt es, sämtliche Eigenschaften, die einer soliden Performanz entgegenstehen, zu eliminieren. Um für ein reibungsloses Zusammenspiel zwischen Anwendungs- und Datenbankebene sorgen zu können, sind zusätzliche Qualitätsprüfungen nötig. Dabei sollten folgende Punkte sichergestellt werden:
- Konsistente Namensstandards für Objekte wie Tabellen, Views, Trigger, Stored Procedures und User-Defined Functions (UDFs).
- Keine Verwendung übergroßer Spalten, zum Beispiel CHAR(500), sofern keiner der darin enthaltenen Werte 32 Zeichen übersteigt.
- GUIDs (Globally Unique Identifiers) werden nicht als Clustered-Indizes genutzt. Dies ist lediglich bei kleinen Tabellen, die nicht mehr erweitert werden, zulässig. Außerdem muss überprüft werden, ob GUIDs als Cluster-Primärschlüssel genutzt werden, da dies zahlreiche Performanz-Probleme verursachen kann.
- Es gibt keine Datentypen, die als MAX-Größe definiert sind, wie beispielsweise NVARCHAR(MAX).
- Es bestehen keine impliziten Konvertierungen, da diese schwerwiegende Codeprobleme nach sich ziehen können. Insbesondere, wenn Object Relational Mapping (ORM)-Tools genutzt werden, sind Konvertierungsprobleme wahrscheinlicher, da ORMs meist standardmäßig GUIDs als Cluster-Indizes einsetzen.
Weiterhin sollte die Codierung der Anfrage-Timeouts noch einmal unter die Lupe genommen werden. Treten bereits in der On-Premises-Umgebung bei bestimmten Abfragen Server-Zeitüberschreitungen auf, werden sich diese in der Cloud noch verstärken. Um dies zu verhindern, sollte der Code so überarbeitet werden, dass er in der Cloud gegenüber Anfrage-Timeouts belastbarer ist und die damit verbundenen Anfragen entsprechend optimiert werden.
Eine weitere notwendige, aber in Einzelfällen womöglich schmerzvolle Aufgabe, ist die Beurteilung und Überprüfung liebgewonnener Funktionen, wie zum Beispiel das Erstellen temporärer Tabellen. Während derartige Features gern genutzt werden, um die Logik der Codierung zu verbessern, wirken sich nur wenige von ihnen günstig auf die Performanz aus. Um in der Cloud keine bösen Überraschungen zu erleben, sollte man für die am häufigsten genutzten Datenbankfunktionen einen Test einplanen.
Zuverlässige Dokumentation erleichtert den Wechsel in die Cloud
Im Großen und Ganzen erfordert der Schritt in die Cloud nichts weniger als das Erstellen einer umfassenden Dokumentation auf Grundlage eines Datenkatalogs. Um nicht nach der Migration feststellen zu müssen, dass Anwendungen und Nutzern sprichwörtlich der Boden unter den Füßen weggezogen wurde, muss eine weitere Stufe ergänzt werden: Es muss zusätzlich verzeichnet werden, welche Anwendungen auf die im Katalog erfassten Daten zugreifen.
Dies erscheint DBAs zwar ähnlich unliebsam wie sich bei einem Wohnungsumzug mit längst vergessenen Dingen auseinandersetzen zu müssen, ist aber in dieser Situation ebenso unerlässlich. Um den Dokumentationsprozess zu vereinfachen, lohnt sich der Einsatz entsprechender Managementtools, die unter anderem automatisiert eine ausführliche Übersicht der Datenherkunft erstellen können. Auf diese Weise können geeignete Voraussetzungen für eine reibungslose Migration und eine effiziente Cloud-Nutzung geschaffen werden.
Kevin Kline ist Principal Program Manager bei SentryOne.