Implementieren von CI/CD für Azure SQL-Datenbank

Abgeschlossen

Sie wissen jetzt, wie Sie Azure SQL-Datenbank bereitstellen, konfigurieren und verwenden, um eine solide Basis für eine moderne Anwendung zu schaffen. Da sich Anwendungsanforderungen kontinuierlich ändern, müssen Sie zudem wissen, wie Sie Ihre Datenbank bei Bedarf aktualisieren. DevOps (Development Operations) beschreibt eine Reihe von Prinzipien und Vorgehensweisen, die Ihnen dabei helfen können.

Bei DevOps werden Menschen, Prozesse und Technologie zusammengeführt, um Kunden kontinuierlich einen Mehrwert zu bieten. Teams, deren Arbeitsweise auf der DevOps-Kultur basiert und die sich DevOps-Verfahren und -Tools zunutze machen, arbeiten äußerst produktiv: Sie entwickeln schneller noch bessere Produkte, um die Kundenzufriedenheit zu steigern.

Eine Datenbank ist einer der wichtigsten Teile einer Lösung. Daher ist die Möglichkeit, Ihre Datenbank mit Ihren DevOps-Methoden zu integrieren, ein wesentlicher Aspekt bei der modernen und flexiblen Anwendungsentwicklung.

Für das Einbinden Ihrer Datenbank in den DevOps-Prozess mit Azure SQL gibt es verschiedene Ansätze. Eine CI/CD-Pipeline (Continuous Integration und Continuous Delivery) ist das Fundament einer DevOps-Umgebung, und Azure SQL kann mit jedem gewünschten CI/CD-Tool vollständig integriert werden. Zwei der gängigsten und am häufigsten verwendeten Tools in Azure sind GitHub Actions und Azure DevOps.

Implementieren von CI/CD für Datenbanken

Wenn die Datenbank als Teil einer CI/CD-Pipeline implementiert wird, sollte die Struktur – und möglicherweise sogar ein Teil der Daten – vollständig automatisiert, reproduzierbar und deterministisch konfiguriert und bereitgestellt werden. Nach der Konfiguration können Sie den Bereitstellungs- oder Updateprozess jederzeit und beliebig oft ausführen und erhalten dabei stets konsistente Ergebnisse.

In dieser Lerneinheit erfahren Sie mehr über die drei wichtigsten Ansätze für die Implementierung einer CI/CD-Pipeline für Datenbanken:

  • Gewünschter Zustand
  • Code First-Migrationen
  • Benutzerdefinierte Skripts

Verwenden des Ansatzes „Gewünschter Zustand“ mit SqlPackage.exe

Bei einem Desired-State-Ansatz erstellen Sie eine Momentaufnahme der Struktur einer Referenzdatenbank mit dem gewünschten Zustand. Anschließend können Sie diese Momentaufnahme verwenden, um eine andere Zieldatenbank (in der Regel die Test- oder Produktionsdatenbank) mit dem gewünschten Zustand zu synchronisieren. Mit einem Tool wie SqlPackage.exe können Sie die Momentaufnahme in einer .dacpac-Datei speichern. Wenn die .dacpac-Datei auf die Zieldatenbank angewandt wird, werden die Unterschiede automatisch ermittelt. Anschließend wird das geeignete Skript generiert und angewandt, um das Zielschema mit dem Referenzschema zu synchronisieren.

Der Desired-State-Ansatz wird auch im Szenario zum rechtzeitigen Erreichen von Bussen verwendet. Er ist wahrscheinlich der einfachste der drei behandelten Ansätze.

Implementieren von Code First-Migrationen abhängig von der gewählten Sprache

Wenn Sie keine T-SQL-Skripts schreiben möchten, können Sie als weiteren möglichen Ansatz C#, Python oder Node sowie die in Ihrer Lösung definierten Entitäten (z. B. ein Bus, eine Route, oder ein Ort) die Datenbank und das Schema automatisch generieren lassen. In der Regel gibt es ein bestimmtes Tool, das in eine Plattform oder ein Framework integriert ist oder dafür verwendet wird. Diese Tools stellen sicher, dass, immer wenn Sie ein Feld oder eine Entität ändern oder hinzufügen, die neue Struktur in der Datenbank abgebildet wird. Verweise auf Tools für bestimmte Plattformen und Frameworks finden Sie am Ende dieses Moduls.

Verwenden manueller Skripts für Schritt-für-Schritt-Bereitstellungen

Bei dem Ansatz mit manueller Skripterstellung schreibt und verwaltet der Entwickler sorgfältig alle Skripts, die für das Erstellen und Ändern der Datenbank im Laufe der Zeit benötigt werden. Nachdem ein Skript in der Produktionsumgebung bereitgestellt wurde, wird es nicht mehr geändert. Stattdessen wird ein neues Skript erstellt. Jedes Skript enthält den erforderlichen Code, um die Datenbank weiterzuentwickeln und in das neue Schema zu ändern. In Fällen, in denen eine Datenbank von Grund auf neu bereitgestellt werden muss, müssen alle Skripts in der richtigen Reihenfolge ausgeführt werden, um sicherzustellen, dass die Datenbank richtig erstellt und weiterentwickelt wird. Nachdem ein Skript bereitgestellt wurde, können Sie Tools wie das Schema Compare-Hilfsprogramm in SQL Server Data Tools (SSDT) verwenden, um Datenbankdefinitionen zu vergleichen. Dadurch wird sichergestellt, dass das bereitgestellte Skript in nachfolgenden Ausführungen nicht erneut auf dieselbe Datenbank angewendet wird.

Auswählen eines Pipelinetools für die problemlose Implementierung von CI/CD

Wenn Sie herausgefunden haben, welcher Ansatz am besten dazu passt, wie Sie Ihre Datenbank aktualisieren, können Sie zwischen zwei gängigen Lösungen zum Implementieren dieses Ansatzes wählen: Azure DevOps und GitHub Actions.

Implementieren von CI/CD mit Azure DevOps

Azure DevOps ist eine Produktsuite, mit der sämtliche DevOps-Aspekte unterstützt werden (einschließlich einer CI/CD-Pipeline). Eine Pipeline besteht aus Tasks, mit denen die Schritte der Pipeline definiert werden. Ein Task kann praktisch alles sein – von der Ausführung einer ausführbaren Datei bis hin zum Erstellen einer .NET-Lösung. Ein bestimmter Task namens Azure SQL Database Deployment kann verwendet werden, um eine .dacpac-Datei bereitzustellen oder ein SQL-Skript auszuführen.

Implementieren von CI/CD mit GitHub Actions

Mit GitHub Actions können CI/CD-Pipelines definiert werden. Mit Aktionen können Sie die Schritte der Pipeline erstellen. Sie können mit Aktionen Prozesse fast jeden Typs ausführen. Mit der Aktion Azure SQL Deploy (Azure SQL-Bereitstellung) kann eine .dacpac-Datei bereitgestellt werden.

Zur Veranschaulichung werden in der nächsten Übung Azure SQL-Aktionen verwendet, um das Datenbankschema bereitzustellen und zu aktualisieren.

Wissensbeurteilung

1.

Welcher der folgenden Ansätze ist kein Ansatz für CI/CD in Azure SQL-Datenbank?

2.

Laut Definition werden mit DevOps drei Aspekte vereint. Welche der folgenden Optionen gehörte nicht dazu?