Bereitstellen Ihrer App und Integrieren mit anderen Azure-Diensten
Nachdem Sie verschiedene Optionen für das Hosten von Apps in Azure kennengelernt haben, können Sie erkunden, wie Sie Apps für Azure Database for MySQL – Flexibler Server in diesen Diensten bereitstellen. In dieser Lektion erkunden Sie zwei der am häufigsten verwendeten Dienste, Azure App Service und AKS, überprüfen Optionen zum Automatisieren von CI/CD-Aufgaben mit Azure DevOps und GitHub und erfahren, wie Sie künstliche Intelligenz in diese Anwendungen integrieren, indem Sie in Azure KI-Suche und Azure OpenAI integriert werden.
Azure App Service und Azure Database for MySQL – Flexible Server
Um Ihre App in Azure App Service bereitzustellen und in Azure Database for MySQL – Flexibles Server zu integrieren, berücksichtigen Sie die folgenden Optionen:
- Verwenden Sie Web-App und Datenbank aus dem Azure Marketplace, um eine Web App sowie einen flexiblen MySQL-Server zu erstellen, der in einem virtuellen Netzwerk (VNet) isoliert ist. Die Verbindungsinformationen des flexiblen Servers werden über eine Verbindungszeichenfolge automatisch den Konfigurationseinstellungen der App Service-App hinzugefügt.
- Erstellen Sie eine Instanz von Azure Database for MySQL – Flexible Server und eine App Service-App einzeln, und fügen Sie in den Anwendungseinstellungen der App Service-App unter Konfigurationseinstellungen die Verbindungsinformationen des flexiblen MySQL-Servers hinzu.
Nach dem Einrichten Ihrer App Service-App und des flexiblen MySQL-Servers können Sie Ihren App-Code mithilfe verschiedener, von Azure App Service unterstützter Methoden in Azure bereitstellen, Diese Methoden umfassen zum Beispiel die Bereitstellung aus einem ZIP-Paket, aus lokalen Git-Repositorys, aus Azure Container Registry, aus GitHub Actions oder Azure Pipelines. Jede Option bietet Flexibilität basierend auf Ihren entwicklungsbezogenen und operativen Workflows.
In der nächsten Lerneinheit erstellen Sie eine Beispiel-App in PHP und stellen sie in Azure App Service bereit und führen dabei jeden Schritt des Bereitstellungsprozesses aus. Außerdem verwenden Sie die leistungsstarken Plattformfeatures von Azure, um die Leistung und Skalierbarkeit Ihrer App zu optimieren.
Azure Kubernetes Service (AKS) + MySQL – Flexibler Server
Durch die Integration von AKS in Azure Database for MySQL – Flexibler Server wird eine leistungsstarke Plattform für die Bereitstellung containerisierter Apps geschaffen, die die Datenbankverwaltung optimieren sowie die Skalierbarkeit und Resilienz von Apps verbessern kann. Berücksichtigen Sie die folgenden Informationen, um Ihre Apps mit einem flexiblen MySQL-Server im Back-End effektiv in AKS bereitzustellen und zu verwalten.
Das folgende Diagramm veranschaulicht drei gängige Methoden zum Integrieren von MySQL mit Ihren AKS-App:
- Verwenden von Azure Database for MySQL – Flexibler Server, was den operativen Aufwand für die Verwaltung des MySQL-Servers reduziert und so die Produktivität der Entwickler verbessert.
- Verwenden von MySQL on Azure VM, einem Infrastructure-as-a-Service-Angebot, bei dem Sie die Verantwortung für die Verwaltung und Wartung des MySQL-Servers übernehmen
- Ausführen von MySQL auf Kubernetes, was Automatisierungsvorteile bietet, gleichzeitig jedoch auch Entwicklungsaufwand erfordert, um Stabilität, Hochverfügbarkeit, Datenpersistenz und Compliance sicherzustellen. Darüber hinaus ist die Wahrscheinlichkeit aufgrund der Vergänglichkeit von Kubernetes-Pods höher, dass Failover und Neustarts auftreten, was sich auf die Anwendungsverfügbarkeit und Geschäftskontinuität auswirkt.
Verwenden Sie den folgenden fünfstufigen Prozess, um eine App in AKS bereitzustellen, die mit Azure Database for MySQL – Flexible Server integriert ist:
Erstellen Sie eine Instanz von Azure Database for MySQL – Flexibler Server über das Azure-Portal, die Azure CLI, eine ARM-/Bicep-Vorlage oder mit anderen Azure-Tools. Neben der Auswahl der richtigen Compute-, Speicher-, Sicherungs- und Hochverfügbarkeitsoptionen ist es auch wichtig, die geeignete Netzwerkoption zu verwenden, während der flexible MySQL-Server erstellt wird.
Wichtig: Es empfiehlt sich, Ihren Server mit privatem Zugriff zu erstellen, wodurch der Zugriff auf Ihren Server über eine VNet-Integration gesichert wird, es sei denn, Ihr Szenario umfasst nur kleine Projekte oder Demos.
Bereiten Sie Ihre App vor, indem Sie die folgenden Änderungen an Ihrem App-Code vornehmen:
- Damit die Anwendung den flexiblen MySQL-Server verwendet, fügen Sie der entsprechenden Konfigurationsdatei oder App-Eigenschaftendatei Code hinzu, der die Hostserver-URL, den Datenbanknamen, den Benutzernamen und das Kennwort angibt, die aus den Umgebungsvariablen gelesen werden (wie in der Kubernetes-Manifestdatei definiert und daraus übergeben).
- Erstellen Sie ein Dockerfile,um das Docker-Image der App zu erstellen.
Erstellen Sie eine Instanz von Azure Container Registry, und pushen Sie die App als Docker-Image an die Registrierung.
Erstellen Sie einen AKS-Cluster, und fügen Sie das Azure-Containerregistrierungskonto dem Cluster an.
Stellen Sie die App im Cluster bereit, und testen Sie die Bereitstellung. Um die App im AKS-Cluster bereitzustellen, müssen Sie zuerst eine Kubernetes-Manifestdatei erstellen, die den gewünschten Zustand des Clusters definiert, z. B. welche Containerimages ausgeführt werden sollen.
In der Kubernetes-Manifestdatei vom Typ YAML müssen folgende wichtige Dinge definiert werden:
- The container image name: replace it with your own in the format [registryname].azurecr.io/[image-name]:[tag]
- Environment variables for MySQL flexible server host URL, database name, admin username and password.
- A service resource to access the app in the cluster. For example, a service of the type "LoadBalancer" will create an external load balancer providing an externally accessible IP address to the app.
After the YAML file is ready, deploy it with either `kubectl apply` or within the Kubernetes resource view in the Azure portal.
Automatisieren von CI/CD-Datenbanktasks mit Azure DevOps, GitHub und Azure Service Operator
Das manuelle Bereitstellen von Apps kann ineffizient und fehleranfällig sein sowie häufige Tests und Anpassungen erfordern. Automatisierung durch Continuous Integration (CI) und Continuous Delivery/Deployment (CD) wird dringend empfohlen, um diesen Prozess zu optimieren. CI/CD ermöglicht es Entwicklungsteams, kleinere Updates und Features regelmäßig und zuverlässig zu veröffentlichen, wodurch das Risiko und der Aufwand im Vergleich zu größeren, weniger häufigen Updates erheblich reduziert werden.
Zur Automatisierung der Bereitstellung von Apps und Azure Database for MySQL – Flexibler Server sollten Sie die folgenden CI/CD-Tools verwenden:
Azure Pipelines
Azure Pipelines, ein Dienst von Azure DevOps, bietet stabile CI/CD-Funktionen, die automatisierte Codebereitstellungen in verschiedenen Zielen ermöglichen, einschließlich Azure-PaaS-Dienste, VMs und Containerregistrierungen. Diese Plattform unterstützt auch Bereitstellungen in verschiedenen Umgebungen, z. B. auf anderen Cloudplattformen oder in lokalen Systemen.
Speziell bei Datenbankbereitstellungen können Sie mit Azure Pipelines Updates für Azure Database for MySQL – Flexible Server automatisieren, indem Sie Tasks in die Pipeline integrieren, die Azure CLI-Befehle ausführt. Diese Tasks können Updates direkt aus SQL-Dateien anwenden oder SQL-Inlineskripts ausführen, wodurch sichergestellt wird, dass Datenbankschemas und Daten nach jedem erfolgreichen Build auf dem neuesten Stand sind.
GitHub-Aktionen
GitHub Actions ermöglicht die Automatisierung von Workflows als Reaktion auf Repositoryereignisse, z. B. Pushanforderungen, Pull Requests oder die Erstellung von Issues. Diese Integration ermöglicht eine nahtlose CI/CD-Pipeline innerhalb des GitHub-Ökosystems, die alle Prozesse von Build- und Testworkflows für neue Pull Requests bis hin zu Bereitstellungsworkflows bei der Releaseerstellung abdeckt.
Für Datenbanken können Sie GitHub Actions so konfigurieren, dass sie eine direkte Verbindung mit Azure Database for MySQL – Flexible Server herstellen, um Datenbanken bereitzustellen oder zu aktualisieren, wenn Änderungen gemergt oder gepusht werden. Dadurch wird eine kontinuierliche Synchronisierung zwischen App-Updates und Änderungen des Datenbankschemas sichergestellt.
Azure Service Operator
Azure Service Operator integriert die Azure-Ressourcenverwaltung mit der Kubernetes-Umgebung, sodass Sie Azure-Ressourcen wie Azure Database for MySQL – Flexible Server direkt über Kubernetes-Tools verwalten können. Mit diesem Operator können Infrastrukturupdates in Kubernetes-Bereitstellungsworkflows integriert werden, wodurch ein einheitlicher Ansatz zum Verwalten von Apps und deren abhängigen Azure-Diensten ermöglicht wird.
Weitere Tools
Abgesehen von diesen Tools können Sie andere Technologien verwenden, um CI/CD-Workflows zu verbessern:
- App Service-Bereitstellungsslots: Nützlich für das Staging neuer Releases, bevor sie live gehen, sodass finale Überprüfungen und Hotswapping in die Produktion mit minimaler Downtime möglich sind
- App Service Deployment Center: Optimiert CI/CD-Setups mit Azure App Services durch eine Integration mit Quellcodeverwaltung und Builddiensten
- Jenkins: Ein Open-Source-Automatisierungsserver, der das Erstellen, Bereitstellen und Automatisieren beliebiger Projekte unterstützt. Jenkins kann besonders effektiv in komplexen Umgebungen sein, die benutzerdefinierte Skripts und umfangreiche Integration erfordern.
Durch die Nutzung dieser Tools können Sie sicherstellen, dass sowohl Ihre App als auch ihre zugrunde liegende Datenbankinfrastruktur immer an den neuesten Codeänderungen ausgerichtet sind, was Downtime minimiert und die Bereitstellung neuer Features und Fixes beschleunigt.
Hinzufügen von Intelligenz durch Integration in Azure KI-Suche und Azure OpenAI
Die einfachste Möglichkeit, die Intelligenz von MySQL-Anwendungen zu verbessern, besteht darin, die umfangreichen Funktionen der semantischen Suche und der generativen KI einzuschließen, indem sie eine Lösung mithilfe der RAG-Architektur (Retrieval Augmented Generation) mit der Azure KI-Suche und Azure OpenAI-Diensten erstellen. RAG ist eine Architektur, die die Funktionen für das Verständnis und die Generierung natürlicher Sprachen von LLMs wie ChatGPT erweitert, indem ein Informationsabrufsystem wie Azure KI-Suche hinzugefügt wird, das mit Ihren in Datenquellen wie Azure Database for MySQL gespeicherten Daten funktioniert.
Ein Beispiel-RAG-Muster für eine MySQL KI-Lösung sieht wie folgt aus:
- Azure KI-Suche ruft Inhalte aus einer Back-End-Datenquelle wie der Azure Database for MySQL-Datenbank mithilfe eines Indexers ab, der regelmäßig ausgeführt wird.
- Die Daten werden durch einen integrierten Aufruf des Texteinbettungsmodells von Azure OpenAI vektorisiert.
- Azure KI-Suche speichert diese vektorisierten Daten dann in einem Vektorsuchindex.
- Wenn ein Benutzer eine Clientchatanwendung verwendet, wird die Abfrage an einen Azure OpenAI-Chatversollständigungsdienst gesendet.
- Azure KI-Suche wird jetzt als Datenquelle verwendet, um die relevanteste Antwort mithilfe der Vektorsuche oder hybriden Suche (Vektor + semantische Suche) zu finden.
- Der Azure OpenAI-Chatvervollständigungsdienst verwendet dann diese Suchergebnisse, um eine benutzerdefinierte Antwort zurück an die Benutzerabfrage zu generieren.
Wenn Sie Anwendungen ausführen, z. B. Content Management Systems (CMS), E-Commerce-Anwendungen oder Spielewebsites, mit Daten, die in Azure Database for MySQL gehostet werden, können Sie Ihre Benutzererfahrung verbessern, indem Sie generative KI-Such- und Chatanwendungen mithilfe von LLMs erstellen, die in Azure OpenAI verfügbar sind, sowie Vektorspeicher und Indizierung, die von Azure KI-Suche bereitgestellt werden.