Construire une application évolutive sur Azure | Original, traduit par l'IA

Home 2023.07

Ce billet de blog a été rédigé avec l’assistance de ChatGPT-4o.


Table des matières

Introduction

Dans le monde de l’informatique en nuage, Microsoft Azure se distingue comme une plateforme robuste pour construire, déployer et gérer des applications. Dans notre projet récent, nous avons utilisé plusieurs services Azure, notamment Azure Subscription, Azure Kubernetes Service (AKS), Application Insights, Virtual Machines (VM), Event Hubs, API Management Services et SQL Databases pour créer une infrastructure d’applications évolutive et surveillée. Cet article de blog décrit notre approche, les outils utilisés, les bonnes pratiques et les étapes détaillées pour gérer les clusters, récupérer les journaux et interroger les journaux.

Commencer avec un abonnement Azure

Un abonnement Azure est votre porte d’entrée pour accéder aux services Azure. Il agit comme un conteneur qui contient toutes vos ressources, telles que les machines virtuelles, les bases de données et les clusters Kubernetes.

  1. Configurer un abonnement Azure :
    • Inscription : Si vous n’avez pas de compte Azure, commencez par vous inscrire sur le portail Azure.
    • Créer un abonnement : Accédez à la section “Abonnements” et créez un nouvel abonnement. Celui-ci sera votre conteneur de facturation et de gestion.
  2. Organisation des ressources :
    • Groupes de ressources : Organisez vos ressources en groupes de ressources en fonction de leur cycle de vie et des critères de gestion.
    • Balises : Utilisez des balises pour des métadonnées supplémentaires et une gestion et une facturation plus faciles des ressources.

Déployer des applications avec Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) est un service Kubernetes géré qui simplifie le déploiement, la gestion et la mise à l’échelle des applications conteneurisées.

Créer et gérer un cluster AKS

  1. Créer un cluster AKS dans le portail Azure :
    • Configuration : Dans le portail Azure, recherchez AKS et créez un nouveau cluster Kubernetes.
    • Configuration : Choisissez la taille de votre cluster, configurez les pools de nœuds et mettez en place le réseau.
    • Authentification : Utilisez Azure Active Directory (AAD) pour un contrôle d’accès sécurisé.
    • Surveillance : Activez la surveillance et la journalisation pendant le processus de configuration.
  2. Créer un cluster AKS avec Azure CLI :
    az aks create \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --node-count 3 \
      --enable-addons monitoring \
      --generate-ssh-keys
    
  3. Gérer votre cluster AKS :
    • Mettre à l’échelle le cluster :
      az aks scale \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-count 5
      
    • Mettre à niveau le cluster :
      az aks upgrade \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --kubernetes-version 1.21.2
      

Déployer des applications

  1. Utiliser des manifestes Kubernetes : Rédigez des fichiers YAML pour vos déploiements, services et autres objets Kubernetes.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: myapp
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: myapp
      template:
        metadata:
          labels:
            app: myapp
        spec:
          containers:
          - name: myapp
            image: myregistry.azurecr.io/myapp:latest
            ports:
            - containerPort: 80
    
  2. Déployer avec kubectl :
    kubectl apply -f myapp-deployment.yaml
    
  3. Graphiques Helm : Utilisez Helm pour gérer les applications Kubernetes et le contrôle de version.
    helm install myapp ./mychart
    

Récupérer des journaux des pods

  1. Se connecter à un pod et récupérer les journaux :
    kubectl logs <pod-name>
    
    • Pour diffuser les journaux :
      kubectl logs <pod-name> -f
      
  2. Utiliser un conteneur sidecar pour la journalisation :
    • Créez un conteneur sidecar de journalisation dans la spécification de votre pod pour envoyer les journaux à un service de journalisation centralisé.
    spec:
      containers:
      - name: myapp
        image: myregistry.azurecr.io/myapp:latest
        ...
      - name: log-shipper
        image: log-shipper:latest
        ...
    

Surveillance et diagnostics avec Azure Application Insights

Application Insights fournit des capacités de surveillance et de diagnostic puissantes pour vos applications.

  1. Configurer Application Insights :
    • Intégration : Ajoutez le SDK Application Insights à votre code d’application.
    • Clé d’instrumentation : Configurez votre application avec la clé d’instrumentation de votre ressource Application Insights.
  2. Suivre les performances :
    • Métriques : Surveillez les temps de réponse, les taux d’échec et les dépendances de l’application.
    • Flux de métriques en direct : Consultez les métriques de performance en temps réel pour des informations immédiates.
  3. Diagnostics et dépannage :
    • Carte d’application : Visualisez les dépendances et identifiez les goulots d’étranglement des performances.
    • Diagnostics des transactions : Utilisez le traçage distribué pour tracer les requêtes à travers les services.

Utiliser les machines virtuelles Azure (VM)

Les machines virtuelles Azure offrent la flexibilité d’exécuter des applications et des services personnalisés qui ne sont pas conteneurisés.

  1. Approvisionner des machines virtuelles :
    • Créer des VM : Dans le portail Azure, créez de nouvelles machines virtuelles et choisissez la taille et le système d’exploitation appropriés.
    • Configuration réseau : Configurez des réseaux virtuels, des sous-réseaux et des groupes de sécurité pour contrôler le trafic.
  2. Configurer les VM :
    • Installation de logiciels : Installez les logiciels et dépendances requis.
    • Sécurité : Appliquez régulièrement des correctifs et des mises à jour, configurez les pare-feu et utilisez les groupes de sécurité réseau (NSG).
  3. Gérer les VM :
    • Sauvegarde et restauration : Utilisez Azure Backup pour les sauvegardes de VM.
    • Surveillance : Surveillez les performances des VM à l’aide d’Azure Monitor.

Ingestion de données en temps réel avec Azure Event Hubs

Azure Event Hubs est une plateforme de streaming de données volumineuses et un service d’ingestion d’événements capable de recevoir et de traiter des millions d’événements par seconde.

  1. Configurer Event Hubs :
    • Créer un espace de noms Event Hub : Dans le portail Azure, créez un espace de noms Event Hub pour héberger vos Event Hubs.
    • Créer des Event Hubs : Dans l’espace de noms, créez un ou plusieurs Event Hubs pour capturer vos flux de données.
  2. Ingestion de données :
    • Producteurs : Configurez votre application ou vos services pour envoyer des événements à Event Hubs à l’aide des SDK disponibles pour plusieurs langages (par exemple, .NET, Java, Python).
    • Partitions : Utilisez des partitions pour mettre à l’échelle le traitement des événements, assurant un débit élevé et un parallélisme.
  3. Traitement des événements :
    • Consommateurs : Utilisez des groupes de consommateurs pour lire et traiter les événements. Azure propose plusieurs options pour le traitement, notamment Azure Stream Analytics, Azure Functions et le traitement personnalisé à l’aide du SDK Event Hubs.
  4. Surveillance d’Event Hubs :
    • Métriques : Surveillez le débit, la latence et les métriques de traitement des événements via le portail Azure.
    • Alertes : Configurez des alertes pour vous notifier de tout problème, tel qu’une latence élevée ou des messages perdus.

Gérer les API avec Azure API Management Services

Les services de gestion des API Azure permettent de créer des passerelles d’API cohérentes et modernes pour les services back-end existants.

  1. Configurer la gestion des API :
    • Créer un service de gestion des API : Dans le portail Azure, recherchez la gestion des API et créez un nouveau service.
    • Configurer les API : Définissez et importez des API à partir de spécifications OpenAPI, Azure Functions ou d’autres back-ends.
  2. Sécuriser les API :
    • Authentification et autorisation : Utilisez OAuth2, la validation JWT et d’autres mécanismes pour sécuriser vos API.
    • Limitation de débit et throttling : Mettez en œuvre des stratégies pour protéger vos API contre les abus.
  3. Surveillance et analyse :
    • Insights API : Suivez l’utilisation, surveillez les performances et analysez les journaux.
    • Portail développeur : Fournissez un portail pour que les développeurs découvrent et utilisent vos API.
  4. Gérer le cycle de vie :
    • Versioning et révisions : Gérez différentes versions et révisions de vos API de manière transparente.
    • Gestion des stratégies : Appliquez des stratégies pour la transformation, la validation et le routage des requêtes et des réponses.

Utiliser les bases de données SQL Azure

Azure SQL Database est une base de données relationnelle entièrement gérée avec une intelligence intégrée, une haute disponibilité et une évolutivité.

  1. Configurer Azure SQL Database :
    • Créer une base de données SQL : Dans le portail Azure, accédez aux bases de données SQL et créez une nouvelle base de données.
    • Configurer la base de données : Définissez la taille de la base de données, le niveau de performance et configurez les paramètres réseau.
  2. Se connecter à SQL Database :
    • Chaînes de connexion : Utilisez les chaînes de connexion fournies pour connecter votre application à la base de données SQL.
    • Règles de pare-feu : Configurez les règles de pare-feu pour autoriser l’accès depuis votre application ou votre machine locale.
  3. Gérer la base de données :
    • Sauvegarde et restauration : Utilisez les sauvegardes automatisées et la restauration à un instant donné pour protéger vos données.
    • Mise à l’échelle : Mettez à l’échelle la base de données vers le haut ou vers le bas en fonction de vos besoins de performance.
  4. Surveillance et optimisation des performances :
    • Insights sur les performances des requêtes : Surveillez et optimisez les performances des requêtes.
    • Optimisation automatique : Activez les fonctionnalités d’optimisation automatique pour améliorer les performances.

Interroger les journaux avec le langage de requête Kusto (KQL)

Le langage de requête Kusto (KQL) est utilisé pour interroger les journaux Azure Monitor, fournissant des informations puissantes sur vos données de journalisation.

  1. Requête KQL de base :
    // Récupérer des enregistrements à partir d'une table spécifique
    NomDeLaTableDeJournaux
    | where TimeGenerated > ago(1h)
    | project TimeGenerated, Level, Message
    
  2. Filtrer et agréger les données :
    NomDeLaTableDeJournaux
    | where TimeGenerated > ago(1h) and Level == "Error"
    | summarize Count=count() by bin(TimeGenerated, 5m)
    
  3. Joindre des tables :
    Table1
    | join kind=inner (Table2) on $left.UserId == $right.UserId
    | project Table1.TimeGenerated, Table1.Message, Table2.AdditionalInfo
    
  4. Créer des alertes basées sur des requêtes :
    • Dans le portail Azure, accédez à l’espace de travail Log Analytics.
    • Cliquez sur Logs et entrez votre requête KQL.
    • Cliquez sur New alert rule pour créer une alerte basée sur les résultats de la requête.

Configurer des alertes pour la surveillance proactive

Les alertes Azure vous aident à rester informé de l’état de santé et des performances de vos ressources.

  1. Créer des alertes :
    • Alertes métriques : Configurez des alertes basées sur des métriques telles que l’utilisation du CPU, l’utilisation de la mémoire et les temps de réponse.
    • Alertes de journal : Créez des alertes basées sur des requêtes de recherche de journaux à l’aide de KQL.
  2. Configurer les actions :
    • Groupes d’actions : Définissez des groupes d’actions pour spécifier qui est notifié et comment (email, SMS, webhook).
    • Intégration : Intégrez avec des outils ITSM comme ServiceNow pour une gestion automatisée des incidents.
  3. Répondre aux alertes :
    • Tableaux de bord : Configurez des tableaux de bord Azure pour fournir une vue centralisée des alertes.
    • Automatisation : Utilisez Azure Automation pour répondre automatiquement à certaines alertes.

Conclusion

En utilisant Azure Subscription, AKS, Application Insights, Virtual Machines, Event Hubs, API Management Services et SQL Databases, nous avons construit une infrastructure d’applications évolutive, robuste et surveillée. La suite complète d’outils d’Azure nous a permis de déployer, gérer et surveiller nos applications de manière efficace. Cette configuration n’a pas seulement amélioré les performances de nos applications, mais nous a également fourni les informations nécessaires pour maintenir et optimiser nos ressources de manière proactive.


Back Donate