Partage via


Tutoriel : Communication de microservices avec l’appel de service Dapr

Dans ce didacticiel, vous allez :

  • Créez et exécutez localement deux microservices qui communiquent en toute sécurité à l’aide de mTLS automatique et de manière fiable à l’aide de nouvelles tentatives intégrées via l’API d’appel du service Dapr.
  • Déployez l’application sur Azure Container Apps via Azure Developer CLI avec le Bicep fourni.

L’exemple de projet d’appel de service inclut les éléments suivants :

  1. Un service checkout qui utilise la fonctionnalité de proxy HTTP de Dapr sur une boucle pour appeler une requête sur le service order-processor.
  2. Un service order-processor qui reçoit la requête du service checkout.

Diagram of the Dapr service invocation services.

Prérequis

Exécuter les applications Node.js localement

Avant de déployer l’application sur Azure Container Apps, commencez par exécuter les services order-processor et checkout localement avec Dapr.

Préparer le projet

  1. Clonez l’exemple d’application Dapr sur votre ordinateur local.

    git clone https://github.com/Azure-Samples/svc-invoke-dapr-nodejs.git
    
  2. Naviguez dans le répertoire racine de l’exemple.

    cd svc-invoke-dapr-nodejs
    

Exécuter les applications Dapr à l’aide de l’interface CLI Dapr

Commencez par exécuter le service order-processor.

  1. À partir du répertoire racine de l’exemple, remplacez les répertoires par order-processor.

    cd order-processor
    
  2. Installez les dépendances.

    npm install
    
  3. Exécutez le service order-processor avec Dapr.

    dapr run --app-port 5001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- npm start
    
  4. Dans une nouvelle fenêtre de terminal, à partir du répertoire racine de l’exemple, accédez au service checkout appelant.

    cd checkout
    
  5. Installez les dépendances.

    npm install
    
  6. Exécutez le service checkout avec Dapr.

    dapr run  --app-id checkout --app-protocol http --dapr-http-port 3500 -- npm start
    

    Sortie attendue

    Dans les deux terminaux, le service checkout appelle des commandes au service order-processor dans une boucle.

    Sortie de checkout :

    == APP == Order passed: {"orderId":1}
    == APP == Order passed: {"orderId":2}
    == APP == Order passed: {"orderId":3}
    == APP == Order passed: {"orderId":4}
    == APP == Order passed: {"orderId":5}
    == APP == Order passed: {"orderId":6}
    == APP == Order passed: {"orderId":7}
    == APP == Order passed: {"orderId":8}
    == APP == Order passed: {"orderId":9}
    == APP == Order passed: {"orderId":10}
    == APP == Order passed: {"orderId":11}
    == APP == Order passed: {"orderId":12}
    == APP == Order passed: {"orderId":13}
    == APP == Order passed: {"orderId":14}
    == APP == Order passed: {"orderId":15}
    == APP == Order passed: {"orderId":16}
    == APP == Order passed: {"orderId":17}
    == APP == Order passed: {"orderId":18}
    == APP == Order passed: {"orderId":19}
    == APP == Order passed: {"orderId":20}
    

    Sortie de order-processor :

    == APP == Order received: { orderId: 1 }
    == APP == Order received: { orderId: 2 }
    == APP == Order received: { orderId: 3 }
    == APP == Order received: { orderId: 4 }
    == APP == Order received: { orderId: 5 }
    == APP == Order received: { orderId: 6 }
    == APP == Order received: { orderId: 7 }
    == APP == Order received: { orderId: 8 }
    == APP == Order received: { orderId: 9 }
    == APP == Order received: { orderId: 10 }
    == APP == Order received: { orderId: 11 }
    == APP == Order received: { orderId: 12 }
    == APP == Order received: { orderId: 13 }
    == APP == Order received: { orderId: 14 }
    == APP == Order received: { orderId: 15 }
    == APP == Order received: { orderId: 16 }
    == APP == Order received: { orderId: 17 }
    == APP == Order received: { orderId: 18 }
    == APP == Order received: { orderId: 19 }
    == APP == Order received: { orderId: 20 }
    
  7. Appuyez sur Cmd/Ctrl + C dans les deux terminaux pour quitter l’appel de service à service.

Déployer le modèle d’application Dapr à l’aide d’Azure Developer CLI

Déployez l’application Dapr sur Azure Container Apps à l’aide de azd.

Préparer le projet

Dans une nouvelle fenêtre de terminal, accédez au répertoire racine de l’exemple.

cd svc-invoke-dapr-nodejs

Approvisionner et déployer à l’aide d’Azure Developer CLI

  1. Exécutez azd init pour initialiser le projet.

    azd init
    
  2. Lorsque vous y êtes invité dans le terminal, fournissez les paramètres suivants.

    Paramètre Description
    Nom de l’environnement Préfixe du groupe de ressources créé pour contenir toutes les ressources Azure.
    Emplacement Azure L’emplacement Azure pour vos ressources.
    Abonnement Azure L’abonnement Azure pour vos ressources.
  3. Exécutez azd up pour approvisionner l’infrastructure et déployer l’application Dapr sur Azure Container Apps en une seule commande.

    azd up
    

    Ce processus peut prendre un certain temps. Une fois la commande azd up terminée, la sortie de l’interface CLI affiche deux liens du portail Azure pour surveiller la progression du déploiement. La sortie montre également comment azd up :

    • Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire ./infra à l’aide de azd provision. Une fois approvisionné par Azure Developer CLI, vous pouvez accéder à ces ressources via le portail Azure. Les fichiers qui approvisionnent les ressources Azure sont les suivants :
      • main.parameters.json
      • main.bicep
      • Un répertoire de ressources app organisé par fonctionnalité
      • Une bibliothèque de référence core qui contient les modules Bicep utilisés par le modèle azd
    • Déploie le code à l’aide de azd deploy

    Sortie attendue

    Initializing a new project (azd init)
    
    Provisioning Azure resources (azd provision)
    Provisioning Azure resources can take some time
    
      You can view detailed progress in the Azure Portal:
      https://portal.azure.com
    
      (✓) Done: Resource group: resource-group-name
      (✓) Done: Log Analytics workspace: log-analytics-name
      (✓) Done: Application Insights: app-insights-name
      (✓) Done: Portal dashboard: dashboard-name
      (✓) Done: Container Apps Environment: container-apps-env-name
      (✓) Done: Container App: ca-checkout-name
      (✓) Done: Container App: ca-order-processor-name
    
    
    Deploying services (azd deploy)
    
      (✓) Done: Deploying service api
      - Endpoint: https://ca-order-processor-name.eastus.azurecontainerapps.io/
      (✓) Done: Deploying service worker
    
    SUCCESS: Your Azure app has been deployed!
    You can view the resources created under the resource group resource-group-name in Azure Portal:
    https://portal.azure.com/#@/resource/subscriptions/<your-azure-subscription>/resourceGroups/resource-group-name/overview
    

Confirmer la réussite du déploiement

Dans le portail Azure, vérifiez que le service checkout passe des commandes au service order-processor.

  1. Copiez le nom de l’application conteneur checkout à partir de la sortie du terminal.

  2. Connectez-vous au portail Azure et recherchez la ressource d’application conteneur par nom.

  3. Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.

    Screenshot of navigating to the Log stream page in the Azure portal.

  4. Vérifiez que le conteneur checkout journalisera la même sortie que dans le terminal précédemment.

    Screenshot of the checkout service container's log stream in the Azure portal.

  5. Faites de même pour le service order-processor.

    Screenshot of the order processor service container's log stream in the Azure portal.

Que s’est-il passé ?

Une fois la commande azd up terminée :

  • Azure Developer CLI a approvisionné les ressources Azure référencées dans le répertoire ./infra de l’exemple de projet sur l’abonnement Azure que vous avez spécifié. Vous pouvez maintenant afficher ces ressources Azure via le portail Azure.
  • L’application déployée sur Azure Container Apps. À partir du portail, vous pouvez parcourir l’application entièrement fonctionnelle.

Exécuter les applications Python localement

Avant de déployer l’application sur Azure Container Apps, commencez par exécuter les services order-processor et checkout localement avec Dapr.

Préparer le projet

  1. Clonez l’exemple d’application Dapr sur votre ordinateur local.

    git clone https://github.com/Azure-Samples/svc-invoke-dapr-python.git
    
  2. Naviguez dans le répertoire racine de l’exemple.

    cd svc-invoke-dapr-python
    

Exécuter les applications Dapr à l’aide de l’interface CLI Dapr

Commencez par exécuter le service order-processor.

  1. À partir du répertoire racine de l’exemple, remplacez les répertoires par order-processor.

    cd order-processor
    
  2. Installez les dépendances.

    pip3 install -r requirements.txt
    
  3. Exécutez le service order-processor avec Dapr.

    dapr run --app-port 8001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- python3 app.py
    
  4. Dans une nouvelle fenêtre de terminal, à partir du répertoire racine de l’exemple, accédez au service checkout appelant.

    cd checkout
    
  5. Installez les dépendances.

    pip3 install -r requirements.txt
    
  6. Exécutez le service checkout avec Dapr.

    dapr run  --app-id checkout --app-protocol http --dapr-http-port 3500 -- python3 app.py
    

    Sortie attendue

    Dans les deux terminaux, le service checkout appelle des commandes au service order-processor dans une boucle.

    Sortie de checkout :

    == APP == Order passed: {"orderId":1}
    == APP == Order passed: {"orderId":2}
    == APP == Order passed: {"orderId":3}
    == APP == Order passed: {"orderId":4}
    == APP == Order passed: {"orderId":5}
    == APP == Order passed: {"orderId":6}
    == APP == Order passed: {"orderId":7}
    == APP == Order passed: {"orderId":8}
    == APP == Order passed: {"orderId":9}
    == APP == Order passed: {"orderId":10}
    == APP == Order passed: {"orderId":11}
    == APP == Order passed: {"orderId":12}
    == APP == Order passed: {"orderId":13}
    == APP == Order passed: {"orderId":14}
    == APP == Order passed: {"orderId":15}
    == APP == Order passed: {"orderId":16}
    == APP == Order passed: {"orderId":17}
    == APP == Order passed: {"orderId":18}
    == APP == Order passed: {"orderId":19}
    == APP == Order passed: {"orderId":20}
    

    Sortie de order-processor :

    == APP == Order received: { orderId: 1 }
    == APP == Order received: { orderId: 2 }
    == APP == Order received: { orderId: 3 }
    == APP == Order received: { orderId: 4 }
    == APP == Order received: { orderId: 5 }
    == APP == Order received: { orderId: 6 }
    == APP == Order received: { orderId: 7 }
    == APP == Order received: { orderId: 8 }
    == APP == Order received: { orderId: 9 }
    == APP == Order received: { orderId: 10 }
    == APP == Order received: { orderId: 11 }
    == APP == Order received: { orderId: 12 }
    == APP == Order received: { orderId: 13 }
    == APP == Order received: { orderId: 14 }
    == APP == Order received: { orderId: 15 }
    == APP == Order received: { orderId: 16 }
    == APP == Order received: { orderId: 17 }
    == APP == Order received: { orderId: 18 }
    == APP == Order received: { orderId: 19 }
    == APP == Order received: { orderId: 20 }
    
  7. Appuyez sur Cmd/Ctrl + C dans les deux terminaux pour quitter l’appel de service à service

Déployer le modèle d’application Dapr à l’aide d’Azure Developer CLI

Déployez l’application Dapr sur Azure Container Apps à l’aide de azd.

Préparer le projet

  1. Dans une nouvelle fenêtre de terminal, accédez au répertoire racine de l’exemple.

    cd svc-invoke-dapr-python
    

Approvisionner et déployer à l’aide d’Azure Developer CLI

  1. Exécutez azd init pour initialiser le projet.

    azd init
    
  2. Lorsque vous y êtes invité dans le terminal, fournissez les paramètres suivants.

    Paramètre Description
    Nom de l’environnement Préfixe du groupe de ressources créé pour contenir toutes les ressources Azure.
    Emplacement Azure L’emplacement Azure pour vos ressources.
    Abonnement Azure L’abonnement Azure pour vos ressources.
  3. Exécutez azd up pour approvisionner l’infrastructure et déployer l’application Dapr sur Azure Container Apps en une seule commande.

    azd up
    

    Ce processus peut prendre un certain temps. Une fois la commande azd up terminée, la sortie de l’interface CLI affiche deux liens du portail Azure pour surveiller la progression du déploiement. La sortie montre également comment azd up :

    • Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire ./infra à l’aide de azd provision. Une fois approvisionné par Azure Developer CLI, vous pouvez accéder à ces ressources via le portail Azure. Les fichiers qui approvisionnent les ressources Azure sont les suivants :
      • main.parameters.json
      • main.bicep
      • Un répertoire de ressources app organisé par fonctionnalité
      • Une bibliothèque de référence core qui contient les modules Bicep utilisés par le modèle azd
    • Déploie le code à l’aide de azd deploy

    Sortie attendue

    Initializing a new project (azd init)
    
    Provisioning Azure resources (azd provision)
    Provisioning Azure resources can take some time
    
      You can view detailed progress in the Azure Portal:
      https://portal.azure.com
    
      (✓) Done: Resource group: resource-group-name
      (✓) Done: Log Analytics workspace: log-analytics-name
      (✓) Done: Application Insights: app-insights-name
      (✓) Done: Portal dashboard: dashboard-name
      (✓) Done: Container Apps Environment: container-apps-env-name
      (✓) Done: Container App: ca-checkout-name
      (✓) Done: Container App: ca-order-processor-name
    
    
    Deploying services (azd deploy)
    
      (✓) Done: Deploying service api
      - Endpoint: https://ca-order-processor-name.eastus.azurecontainerapps.io/
      (✓) Done: Deploying service worker
    
    SUCCESS: Your Azure app has been deployed!
    You can view the resources created under the resource group resource-group-name in Azure Portal:
    https://portal.azure.com/#@/resource/subscriptions/<your-azure-subscription>/resourceGroups/resource-group-name/overview
    

Confirmer la réussite du déploiement

Dans le portail Azure, vérifiez que le service checkout passe des commandes au service order-processor.

  1. Copiez le nom de l’application conteneur checkout à partir de la sortie du terminal.

  2. Connectez-vous au portail Azure et recherchez la ressource d’application conteneur par nom.

  3. Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.

    Screenshot of navigating to the Log stream page in the Azure portal.

  4. Vérifiez que le conteneur checkout journalisera la même sortie que dans le terminal précédemment.

    Screenshot of the checkout service container's log stream in the Azure portal.

  5. Faites de même pour le service order-processor.

    Screenshot of the order processor service container's log stream in the Azure portal.

Que s’est-il passé ?

Une fois la commande azd up terminée :

  • Azure Developer CLI a approvisionné les ressources Azure référencées dans le répertoire ./infra de l’exemple de projet sur l’abonnement Azure que vous avez spécifié. Vous pouvez maintenant afficher ces ressources Azure via le portail Azure.
  • L’application déployée sur Azure Container Apps. À partir du portail, vous pouvez parcourir l’application entièrement fonctionnelle.

Exécuter les applications .NET localement

Avant de déployer l’application sur Azure Container Apps, commencez par exécuter les services order-processor et checkout localement avec Dapr.

Préparer le projet

  1. Clonez l’exemple d’application Dapr sur votre ordinateur local.

    git clone https://github.com/Azure-Samples/svc-invoke-dapr-csharp.git
    
  2. Naviguez dans le répertoire racine de l’exemple.

    cd svc-invoke-dapr-csharp
    

Exécuter les applications Dapr à l’aide de l’interface CLI Dapr

Commencez par exécuter le service order-processor appelé avec Dapr.

  1. À partir du répertoire racine de l’exemple, remplacez les répertoires par order-processor.

    cd order-processor
    
  2. Installez les dépendances.

    dotnet build
    
  3. Exécutez le service order-processor avec Dapr.

    dapr run --app-port 7001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- dotnet run
    
  4. Dans une nouvelle fenêtre de terminal, à partir du répertoire racine de l’exemple, accédez au service checkout appelant.

    cd checkout
    
  5. Installez les dépendances.

    dotnet build
    
  6. Exécutez le service checkout avec Dapr.

    dapr run  --app-id checkout --app-protocol http --dapr-http-port 3500 -- dotnet run
    

    Sortie attendue

    Dans les deux terminaux, le service checkout appelle des commandes au service order-processor dans une boucle.

    Sortie de checkout :

    == APP == Order passed: {"orderId":1}
    == APP == Order passed: {"orderId":2}
    == APP == Order passed: {"orderId":3}
    == APP == Order passed: {"orderId":4}
    == APP == Order passed: {"orderId":5}
    == APP == Order passed: {"orderId":6}
    == APP == Order passed: {"orderId":7}
    == APP == Order passed: {"orderId":8}
    == APP == Order passed: {"orderId":9}
    == APP == Order passed: {"orderId":10}
    == APP == Order passed: {"orderId":11}
    == APP == Order passed: {"orderId":12}
    == APP == Order passed: {"orderId":13}
    == APP == Order passed: {"orderId":14}
    == APP == Order passed: {"orderId":15}
    == APP == Order passed: {"orderId":16}
    == APP == Order passed: {"orderId":17}
    == APP == Order passed: {"orderId":18}
    == APP == Order passed: {"orderId":19}
    == APP == Order passed: {"orderId":20}
    

    Sortie de order-processor :

    == APP == Order received: { orderId: 1 }
    == APP == Order received: { orderId: 2 }
    == APP == Order received: { orderId: 3 }
    == APP == Order received: { orderId: 4 }
    == APP == Order received: { orderId: 5 }
    == APP == Order received: { orderId: 6 }
    == APP == Order received: { orderId: 7 }
    == APP == Order received: { orderId: 8 }
    == APP == Order received: { orderId: 9 }
    == APP == Order received: { orderId: 10 }
    == APP == Order received: { orderId: 11 }
    == APP == Order received: { orderId: 12 }
    == APP == Order received: { orderId: 13 }
    == APP == Order received: { orderId: 14 }
    == APP == Order received: { orderId: 15 }
    == APP == Order received: { orderId: 16 }
    == APP == Order received: { orderId: 17 }
    == APP == Order received: { orderId: 18 }
    == APP == Order received: { orderId: 19 }
    == APP == Order received: { orderId: 20 }
    
  7. Appuyez sur Cmd/Ctrl + C dans les deux terminaux pour quitter l’appel de service à service.

Déployer le modèle d’application Dapr à l’aide d’Azure Developer CLI

Déployez l’application Dapr sur Azure Container Apps à l’aide de azd.

Préparer le projet

Dans une nouvelle fenêtre de terminal, accédez au répertoire racine de l’exemple.

cd svc-invoke-dapr-csharp

Approvisionner et déployer à l’aide d’Azure Developer CLI

  1. Exécutez azd init pour initialiser le projet.

    azd init
    
  2. Lorsque vous y êtes invité dans le terminal, fournissez les paramètres suivants.

    Paramètre Description
    Nom de l’environnement Préfixe du groupe de ressources créé pour contenir toutes les ressources Azure.
    Emplacement Azure L’emplacement Azure pour vos ressources.
    Abonnement Azure L’abonnement Azure pour vos ressources.
  3. Exécutez azd up pour approvisionner l’infrastructure et déployer l’application Dapr sur Azure Container Apps en une seule commande.

    azd up
    

    Ce processus peut prendre un certain temps. Une fois la commande azd up terminée, la sortie de l’interface CLI affiche deux liens du portail Azure pour surveiller la progression du déploiement. La sortie montre également comment azd up :

    • Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire ./infra à l’aide de azd provision. Une fois approvisionné par Azure Developer CLI, vous pouvez accéder à ces ressources via le portail Azure. Les fichiers qui approvisionnent les ressources Azure sont les suivants :
      • main.parameters.json
      • main.bicep
      • Un répertoire de ressources app organisé par fonctionnalité
      • Une bibliothèque de référence core qui contient les modules Bicep utilisés par le modèle azd
    • Déploie le code à l’aide de azd deploy

    Sortie attendue

    Initializing a new project (azd init)
    
    Provisioning Azure resources (azd provision)
    Provisioning Azure resources can take some time
    
      You can view detailed progress in the Azure Portal:
      https://portal.azure.com
    
      (✓) Done: Resource group: resource-group-name
      (✓) Done: Log Analytics workspace: log-analytics-name
      (✓) Done: Application Insights: app-insights-name
      (✓) Done: Portal dashboard: dashboard-name
      (✓) Done: Container Apps Environment: container-apps-env-name
      (✓) Done: Container App: ca-checkout-name
      (✓) Done: Container App: ca-order-processor-name
    
    
    Deploying services (azd deploy)
    
      (✓) Done: Deploying service api
      - Endpoint: https://ca-order-processor-name.eastus.azurecontainerapps.io/
      (✓) Done: Deploying service worker
    
    SUCCESS: Your Azure app has been deployed!
    You can view the resources created under the resource group resource-group-name in Azure Portal:
    https://portal.azure.com/#@/resource/subscriptions/<your-azure-subscription>/resourceGroups/resource-group-name/overview
    

Confirmer la réussite du déploiement

Dans le portail Azure, vérifiez que le service checkout passe des commandes au service order-processor.

  1. Copiez le nom de l’application conteneur checkout à partir de la sortie du terminal.

  2. Connectez-vous au portail Azure et recherchez la ressource d’application conteneur par nom.

  3. Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.

    Screenshot of navigating to the Log stream page in the Azure portal.

  4. Vérifiez que le conteneur checkout journalisera la même sortie que dans le terminal précédemment.

    Screenshot of the checkout service container's log stream in the Azure portal.

  5. Faites de même pour le service order-processor.

    Screenshot of the order processor service container's log stream in the Azure portal.

Que s’est-il passé ?

Une fois la commande azd up terminée :

  • Azure Developer CLI a approvisionné les ressources Azure référencées dans le répertoire ./infra de l’exemple de projet sur l’abonnement Azure que vous avez spécifié. Vous pouvez maintenant afficher ces ressources Azure via le portail Azure.
  • L’application déployée sur Azure Container Apps. À partir du portail, vous pouvez parcourir l’application entièrement fonctionnelle.

Nettoyer les ressources

Si vous ne souhaitez pas continuer à utiliser cette application, supprimez les ressources Azure que vous avez approvisionnées avec la commande suivante :

azd down

Étapes suivantes