Déployer votre application et l’intégrer à d’autres services Azure

Effectué

Maintenant que vous connaissez différentes options d’hébergement d’applications sur Azure, vous souhaitez savoir comment déployer des applications Azure Database pour MySQL – Serveur flexible sur ces services. Dans cette leçon, vous explorez deux des services les plus utilisés, Azure App Service et AKS, passez en revue les options d’automatisation des tâches CI/CD à l’aide d’Azure DevOps et de GitHub, et découvrez comment injecter de l’intelligence artificielle dans ces applications en intégrant Recherche Azure AI et Azure OpenAI.

Azure App Service + Azure Database pour MySQL - Serveur flexible

Pour déployer votre application sur Azure App Service et l’intégrer à Azure Database pour MySQL – Serveur flexible, considérez les options suivantes :

  • Utilisez application web + base de données à partir de la Place de marché Azure pour créer une application web et un serveur flexible MySQL isolé dans un réseau virtuel (VNet). Les informations de connexion du serveur flexible sont automatiquement ajoutées aux paramètres de configuration de l’application App Service en utilisant une chaîne de connexion.
  • Créez un serveur flexible Azure Database pour MySQL et une application App Service individuellement, puis ajoutez les informations de connexion du serveur flexible MySQL dans Paramètres d’application sous Paramètres de configuration dans l’application App Service.

Après avoir configuré votre application App Service et votre serveur flexible MySQL, vous pouvez déployer votre code d’application sur Azure au moyen de différentes méthodes de déploiement prises en charge par Azure App Service. Ces méthodes incluent le déploiement à partir d’un package ZIP, de dépôts Git locaux, d’Azure Container Registry, de GitHub Actions ou d’Azure Pipelines, chaque option offrant une flexibilité en fonction de vos workflows opérationnels et de développement.

Dans l’unité suivante, vous générez un échantillon d’application PHP et le déployez sur Azure App Service, en passant par chaque étape impliquée dans le processus de déploiement et utilisez les puissantes fonctionnalités de plateforme Azure pour optimiser les performances et la scalabilité de votre application.

Azure Kubernetes Service (AKS) + MySQL - Serveur flexible

L’intégration d’AKS à Azure Database pour MySQL – Serveur flexible crée une plateforme puissante pour le déploiement d’applications conteneurisées grâce à laquelle vous pouvez simplifier la gestion des bases de données et améliorer la scalabilité et la résilience des applications. Pour déployer et gérer efficacement vos applications sur AKS avec un serveur flexible MySQL principal, tenez compte des informations suivantes.

Le diagramme suivant illustre trois façons courantes d’intégrer MySQL à votre application AKS :

Diagramme montrant les trois options pour utiliser une base de données MySQL dans une application AKS.

  • Utilisez Azure Database pour MySQL – Serveur flexible, qui réduit le traitement opérationnel de la gestion du serveur MySQL, améliorant ainsi la productivité des développeurs.
  • Utilisez MySQL sur une machine virtuelle Azure, une offre d’infrastructure as a service, ce qui nécessite que vous assumiez la responsabilité de la gestion et de la maintenance du serveur MySQL.
  • Exécutez MySQL sur Kubernetes, qui offre des avantages d’automatisation, mais nécessite des efforts de développement pour garantir la stabilité, la haute disponibilité, la persistance des données et la conformité. Par ailleurs, compte tenu de la nature temporaire des pods Kubernetes, la probabilité de basculements et de redémarrages est plus élevée, ce qui peut avoir un impact sur la disponibilité des applications et la continuité de l’activité.

Pour déployer une application qui s’intègre à Azure Database pour MySQL - Serveur flexible sur AKS, utilisez le processus en cinq étapes suivant :

  1. Créez une instance d’Azure Database pour MySQL – Serveur flexible en utilisant le Portail Azure, l’interface de ligne de commande Azure, un modèle ARM/Bicep ou d’autres outils Azure. En plus de choisir les options de calcul, de stockage, de sauvegarde et de haute disponibilité appropriées, vous devez choisir l’option réseau qui convient pendant la création du serveur flexible MySQL.

    Important : À moins que votre scénario implique uniquement de petits projets ou des démos, nous vous recommandons vivement de créer votre serveur avec un accès privé, ce qui permet de sécuriser l’accès à votre serveur via l’intégration VNet.

  2. Préparez votre application en apportant les modifications suivantes au code de votre application :

    • Pour que l’application utilise le serveur flexible MySQL, modifiez le fichier de configuration ou le fichier de propriétés d’application correspondant pour ajouter du code indiquant l’URL du serveur hôte, le nom de la base de données, le nom d’utilisateur et le mot de passe, lesquels sont lus dans les variables d’environnement (comme défini et transmis dans le fichier manifeste Kubernetes).
    • Créez un Dockerfile pour générer l’image Docker de l’application.
  3. Créez un registre de conteneurs Azure et poussez l’application dans le registre sous forme d’image Docker.

  4. Créez un cluster AKS et attachez le compte de registre de conteneurs Azure au cluster.

  5. Déployez l’application sur le cluster, puis testez le déploiement. Pour déployer l’application sur le cluster AKS, vous devez d’abord créer un fichier manifeste Kubernetes qui définit un état souhaité pour le cluster, comme les images conteneur à exécuter.

Dans le fichier manifeste YAML Kubernetes, les éléments clés à définir sont les suivants :

- 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.

Automatiser les tâches d’intégration continue et de livraison continue de base de données avec Azure DevOps, GitHub et l’opérateur de service Azure

Le déploiement manuel d’applications peut être inefficace et sujet à des erreurs, nécessitant des tests et des ajustements fréquents. Pour simplifier ce processus, l’automatisation par le biais de l’intégration continue (CI) et de la livraison/déploiement continu (CD) est vivement recommandée. L’intégration continue et la livraison continue permettent aux équipes de développement de publier régulièrement et de manière fiable des mises à jour et des fonctionnalités de moindre envergure, ce qui réduit considérablement le risque et l’effort impliqués par rapport aux mises à jour plus volumineuses et moins fréquentes.

Pour automatiser le déploiement d’applications et d’Azure Database pour MySQL – Serveur flexible, songez à utiliser les outils CI/CD suivants.

Azure Pipelines

Azure Pipelines, qui fait partie d’Azure DevOps, fournit de solides fonctionnalités d’intégration continue et de livraison continue, ce qui facilite les déploiements de code automatisés vers différentes cibles, notamment les services PaaS Azure, les machines virtuelles et les registres de conteneurs. Cette plateforme prend également en charge les déploiements dans différents environnements, tels que d’autres plateformes cloud ou systèmes locaux.

Vous pouvez utiliser Azure Pipelines pour automatiser les mises à jour vers Azure Database pour MySQL - Serveur flexible en incorporant des tâches dans le pipeline qui exécutent des commandes dans l’interface de ligne de commande Azure, plus particulièrement pour les déploiements de base de données. Ces tâches peuvent appliquer des mises à jour directement à partir de fichiers SQL ou exécuter des scripts SQL inline, ce qui garantit des schémas de base de données et des données à jour après chaque build réussie.

Actions GitHub

GitHub Actions permet l’automatisation des flux de travail en réponse aux événements de dépôt, tels que l’envoi (push), les demandes de tirage (pull) ou la création d’un problème. Cette intégration permet un pipeline d’intégration continue et de livraison continue fluide au sein de l’écosystème GitHub. Tout ce qui se passe des flux de travail de build et de test pour les nouvelles demandes de tirage aux flux de travail de déploiement lors de la création de la version est ainsi géré.

Pour les bases de données, vous pouvez configurer GitHub Actions pour une connexion directe à Azure Database pour MySQL - Serveur flexible afin de déployer ou mettre à jour des bases de données chaque fois que les modifications sont fusionnées ou envoyées (push). Cela garantit la synchronisation continue entre les mises à jour de l’application et les modifications apportées au schéma de base de données.

Azure Service Operator

L’opérateur de service Azure intègre la gestion des ressources Azure dans l’environnement Kubernetes, ce qui vous permet de gérer des ressources Azure telles qu’Azure Database pour MySQL - Serveur flexible directement via des outils Kubernetes. Cet opérateur permet d’incorporer des mises à jour d’infrastructure dans des flux de travail de déploiement Kubernetes, permettant ainsi une approche unifiée de la gestion des applications et des services Azure qui en dépendent.

Autres outils

Au-delà de ces outils spécifiques, vous pouvez utiliser d’autres technologies pour améliorer les flux de travail d’intégration continue et de livraison continue :

  • Emplacements de déploiement App Service : utile pour la gestion intermédiaire de nouvelles versions avant qu’elles ne soient actives, ce qui permet des validations finales et un remplacement à chaud en production avec un temps d’arrêt minimal.
  • Centre de déploiement App Service : simplifie les configurations d’intégration continue et de livraison continue avec Azure App Services, en intégrant le contrôle de code source et les services de build.
  • Jenkins : un serveur d’automatisation open source qui prend en charge la création, le déploiement et l’automatisation de n’importe quel projet. Jenkins peut être particulièrement efficace dans des environnements complexes qui nécessitent un script personnalisé et une intégration approfondie.

En tirant parti de ces outils, vous pouvez vous assurer que votre application et son infrastructure de base de données sous-jacente sont toujours alignés sur les dernières modifications du code, ce qui réduit les temps d’arrêt et accélère la livraison de nouvelles fonctionnalités et correctifs.

Ajouter de l’intelligence en intégrant Recherche Azure AI et Azure OpenAI

La façon la plus simple d’améliorer l’intelligence des applications MySQL consiste à inclure les fonctionnalités enrichies de la recherche sémantique et de l’IA générative en créant une solution à l’aide de l’architecture de génération augmentée de récupération (RAG) avec les services Recherche Azure AI et Azure OpenAI. RAG est une architecture qui augmente les fonctionnalités de compréhension et de génération de langage naturel de LLM comme ChatGPT en ajoutant un système de récupération d’informations tel que Recherche Azure AI, qui fonctionne avec vos données stockées dans des sources de données telles qu’Azure Database pour MySQL.

Un exemple de modèle RAG pour une solution d’IA MySQL ressemble à ceci :

  1. Recherche Azure AI extrait du contenu à partir d’une source de données back-end comme la base de données Azure Database pour MySQL à l’aide d’un indexeur qui s’exécute régulièrement.
  2. Les données sont vectorisées par un appel intégré au modèle d’incorporation de texte d’Azure OpenAI.
  3. Recherche Azure AI conserve ensuite ces données vectorisées dans un index de recherche vectorielle.
  4. Lorsqu’un utilisateur utilise une application de conversation cliente, la requête est envoyée à un service d’achèvement de conversation Azure OpenAI.
  5. Recherche Azure AI est désormais utilisé comme source de données pour trouver la réponse la plus pertinente à l’aide de la recherche vectorielle ou hybride (recherche vectorielle + sémantique).
  6. Le service d’achèvement de conversation Azure OpenAI utilise ensuite ces résultats de recherche pour générer une réponse personnalisée à la requête utilisateur.

Si vous exécutez des applications, telles que des systèmes de gestion de contenu (CMS), des applications d’e-commerce ou des sites de jeux, avec des données hébergées dans Azure Database pour MySQL, vous pouvez améliorer votre expérience utilisateur en créant des applications de recherche et de conversation d’IA générative à l’aide de machines virtuelles disponibles dans Azure OpenAI et le stockage vectoriel et l’indexation fournis par Recherche Azure AI.