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 :
- Un service
checkout
qui utilise la fonctionnalité de proxy HTTP de Dapr sur une boucle pour appeler une requête sur le serviceorder-processor
. - Un service
order-processor
qui reçoit la requête du servicecheckout
.
Prérequis
- Installer Azure Developer CLI
- Installer et initialiser Dapr
- Docker Desktop
- Installer Git
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
Clonez l’exemple d’application Dapr sur votre ordinateur local.
git clone https://github.com/Azure-Samples/svc-invoke-dapr-nodejs.git
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
.
À partir du répertoire racine de l’exemple, remplacez les répertoires par
order-processor
.cd order-processor
Installez les dépendances.
npm install
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
Dans une nouvelle fenêtre de terminal, à partir du répertoire racine de l’exemple, accédez au service
checkout
appelant.cd checkout
Installez les dépendances.
npm install
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 serviceorder-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 }
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
Exécutez
azd init
pour initialiser le projet.azd init
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. 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 commentazd up
:- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
./infra
à l’aide deazd 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èleazd
- 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
- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
Confirmer la réussite du déploiement
Dans le portail Azure, vérifiez que le service checkout
passe des commandes au service order-processor
.
Copiez le nom de l’application conteneur
checkout
à partir de la sortie du terminal.Connectez-vous au portail Azure et recherchez la ressource d’application conteneur par nom.
Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.
Vérifiez que le conteneur
checkout
journalisera la même sortie que dans le terminal précédemment.Faites de même pour le service
order-processor
.
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
Clonez l’exemple d’application Dapr sur votre ordinateur local.
git clone https://github.com/Azure-Samples/svc-invoke-dapr-python.git
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
.
À partir du répertoire racine de l’exemple, remplacez les répertoires par
order-processor
.cd order-processor
Installez les dépendances.
pip3 install -r requirements.txt
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
Dans une nouvelle fenêtre de terminal, à partir du répertoire racine de l’exemple, accédez au service
checkout
appelant.cd checkout
Installez les dépendances.
pip3 install -r requirements.txt
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 serviceorder-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 }
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-python
Approvisionner et déployer à l’aide d’Azure Developer CLI
Exécutez
azd init
pour initialiser le projet.azd init
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. 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 commentazd up
:- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
./infra
à l’aide deazd 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èleazd
- 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
- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
Confirmer la réussite du déploiement
Dans le portail Azure, vérifiez que le service checkout
passe des commandes au service order-processor
.
Copiez le nom de l’application conteneur
checkout
à partir de la sortie du terminal.Connectez-vous au portail Azure et recherchez la ressource d’application conteneur par nom.
Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.
Vérifiez que le conteneur
checkout
journalisera la même sortie que dans le terminal précédemment.Faites de même pour le service
order-processor
.
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
Clonez l’exemple d’application Dapr sur votre ordinateur local.
git clone https://github.com/Azure-Samples/svc-invoke-dapr-csharp.git
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.
À partir du répertoire racine de l’exemple, remplacez les répertoires par
order-processor
.cd order-processor
Installez les dépendances.
dotnet build
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
Dans une nouvelle fenêtre de terminal, à partir du répertoire racine de l’exemple, accédez au service
checkout
appelant.cd checkout
Installez les dépendances.
dotnet build
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 serviceorder-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 }
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
Exécutez
azd init
pour initialiser le projet.azd init
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. 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 commentazd up
:- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
./infra
à l’aide deazd 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èleazd
- 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
- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
Confirmer la réussite du déploiement
Dans le portail Azure, vérifiez que le service checkout
passe des commandes au service order-processor
.
Copiez le nom de l’application conteneur
checkout
à partir de la sortie du terminal.Connectez-vous au portail Azure et recherchez la ressource d’application conteneur par nom.
Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.
Vérifiez que le conteneur
checkout
journalisera la même sortie que dans le terminal précédemment.Faites de même pour le service
order-processor
.
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
- En savoir plus sur le déploiement d’applications Dapr sur Azure Container Apps.
- Activer l’authentification par jeton pour les requêtes Dapr.
- En savoir plus sur Azure Developer CLI et comment rendre vos applications compatibles avec
azd
.