Condividi tramite


Esercitazione: Comunicazione di microservizi con la chiamata al servizio Dapr

In questa esercitazione vengono creati ed eseguiti due microservizi che comunicano in modo sicuro usando mTLS automatico e usando tentativi predefiniti tramite l'API chiamata al servizio Dapr. Contenuto del modulo:

  • Eseguire l'applicazione in locale.
  • Distribuire l'applicazione in App contenitore di Azure tramite Azure Developer CLI con il Bicep fornito.

Il progetto di chiamata al servizio di esempio include:

  1. Un servizio checkout che usa il proxy HTTP in un ciclo per richiamare una richiesta nel servizio order-processor.
  2. Un servizio order-processor che riceve la richiesta dal servizio checkout.

Diagramma dei servizi di chiamata al servizio.

Prerequisiti

Eseguire le applicazioni Node.js in locale

Prima di distribuire l'applicazione in App Azure Container, iniziare eseguendo i servizi order-processor e checkout in locale con Dapr.

Preparare il progetto

  1. Clonare le applicazioni di esempio nel computer locale.

    git clone https://github.com/Azure-Samples/svc-invoke-dapr-nodejs.git
    
  2. Passare alla directory radice dell'esempio.

    cd svc-invoke-dapr-nodejs
    

Eseguire le applicazioni usando l'interfaccia della riga di comando di Dapr

Per iniziare, eseguire il servizio order-processor.

  1. Dalla directory radice dell'esempio modificare le directory in order-processor.

    cd order-processor
    
  2. Installa le dipendenze.

    npm install
    
  3. Eseguire il servizio order-processor.

    dapr run --app-port 5001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- npm start
    
  4. In una nuova finestra del terminale passare al servizio chiamante checkout dalla directory radice dell'esempio.

    cd checkout
    
  5. Installa le dipendenze.

    npm install
    
  6. Eseguire il servizio checkout.

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

    Output previsto

    In entrambi i terminali, il servizio checkout chiama gli ordini al servizio order-processor in un ciclo.

    Output 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}
    

    Output 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. Premere CMD/CTRL + C in entrambi i terminali per uscire dalla chiamata da servizio a servizio.

Distribuire il modello di applicazione usando Azure Developer CLI

Distribuire l'applicazione in App contenitore di Azure usando azd.

Preparare il progetto

In una nuova finestra del terminale, passare alla directory radice dell'esempio.

cd svc-invoke-dapr-nodejs

Effettuare il provisioning e la distribuzione usando l'interfaccia della riga di comando per sviluppatori di Azure

  1. Eseguire azd init per inizializzare il progetto.

    azd init
    
  2. Quando richiesto nel terminale, specificare i parametri seguenti.

    Parametro Descrizione
    Nome ambiente Prefisso per il gruppo di risorse creato per contenere tutte le risorse di Azure.
    Località di Azure Posizione di Azure per le risorse.
    Sottoscrizione di Azure Sottoscrizione di Azure per le risorse.
  3. Eseguire azd up per effettuare il provisioning dell'infrastruttura e distribuire l'applicazione in App contenitore di Azure in un singolo comando.

    azd up
    

    Questo processo può richiedere del tempo. Al termine del comando azd up, l'output dell'interfaccia della riga di comando visualizza due collegamenti al portale di Azure per monitorare lo stato di avanzamento della distribuzione. L'output illustra anche come azd up:

    • Crea e configura tutte le risorse di Azure necessarie tramite i file Bicep forniti nella directory ./infra usando azd provision. Dopo aver effettuato il provisioning da Azure Developer CLI, è possibile accedere a queste risorse tramite il portale di Azure. I file di cui è stato effettuato il provisioning delle risorse di Azure includono:
      • main.parameters.json
      • main.bicep
      • Una directory delle risorse app organizzata in base alle funzionalità
      • Libreria di riferimento core che contiene i moduli Bicep usati dal modello di azd
    • Distribuisce il codice usando azd deploy

    Output previsto

    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
    

Confermare la corretta distribuzione

Nel portale di Azure verificare che il servizio checkout passi gli ordini al servizio order-processor.

  1. Copiare il nome dell'app contenitore checkout dall'output del terminale.

  2. Accedere al portale di Azure e cercare la risorsa dell'app contenitore in base al nome.

  3. Nel dashboard dell'app contenitore selezionare Monitoraggio>Flusso di log.

    Screenshot del passaggio alla pagina Flusso di log nel portale di Azure.

  4. Verificare che il contenitore checkout registri lo stesso output del terminale in precedenza.

    Screenshot del flusso di log del contenitore del servizio di estrazione nel portale di Azure.

  5. Eseguire la stessa operazione per il servizio order-processor.

    Screenshot del flusso di log del contenitore del servizio di elaborazione degli ordini nel portale di Azure.

Che cosa è successo?

Al termine del comando azd up:

  • Azure Developer CLI ha effettuato il provisioning delle risorse di Azure a cui si fa riferimento nella directory ./infra del progetto di esempio alla sottoscrizione di Azure specificata. È ora possibile visualizzare le risorse di Azure tramite il portale di Azure.
  • L'app distribuita in App contenitore di Azure. Dal portale è possibile esplorare l'app completamente funzionale.

Eseguire le applicazioni Python in locale

Prima di distribuire l'applicazione in App Azure Container, iniziare eseguendo i servizi order-processor e checkout in locale con Dapr.

Preparare il progetto

  1. Clonare le applicazioni di esempio nel computer locale.

    git clone https://github.com/Azure-Samples/svc-invoke-dapr-python.git
    
  2. Passare alla directory radice dell'esempio.

    cd svc-invoke-dapr-python
    

Eseguire le applicazioni usando l'interfaccia della riga di comando di Dapr

Per iniziare, eseguire il servizio order-processor.

  1. Dalla directory radice dell'esempio modificare le directory in order-processor.

    cd order-processor
    
  2. Installa le dipendenze.

    pip3 install -r requirements.txt
    
  3. Eseguire il servizio order-processor.

    dapr run --app-port 8001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- python3 app.py
    
  4. In una nuova finestra del terminale passare al servizio chiamante checkout dalla directory radice dell'esempio.

    cd checkout
    
  5. Installa le dipendenze.

    pip3 install -r requirements.txt
    
  6. Eseguire il servizio checkout.

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

    Output previsto

    In entrambi i terminali, il servizio checkout chiama gli ordini al servizio order-processor in un ciclo.

    Output 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}
    

    Output 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. Premere CMD/CTRL + C in entrambi i terminali per uscire dalla chiamata da servizio a servizio

Distribuire il modello di applicazione usando Azure Developer CLI

Distribuire l'applicazione in App contenitore di Azure usando azd.

Preparare il progetto

  1. In una nuova finestra del terminale, passare alla directory radice dell'esempio.

    cd svc-invoke-dapr-python
    

Effettuare il provisioning e la distribuzione usando l'interfaccia della riga di comando per sviluppatori di Azure

  1. Eseguire azd init per inizializzare il progetto.

    azd init
    
  2. Quando richiesto nel terminale, specificare i parametri seguenti.

    Parametro Descrizione
    Nome ambiente Prefisso per il gruppo di risorse creato per contenere tutte le risorse di Azure.
    Località di Azure Posizione di Azure per le risorse.
    Sottoscrizione di Azure Sottoscrizione di Azure per le risorse.
  3. Eseguire azd up per effettuare il provisioning dell'infrastruttura e distribuire l'applicazione in App contenitore di Azure in un singolo comando.

    azd up
    

    Questo processo può richiedere del tempo. Al termine del comando azd up, l'output dell'interfaccia della riga di comando visualizza due collegamenti al portale di Azure per monitorare lo stato di avanzamento della distribuzione. L'output illustra anche come azd up:

    • Crea e configura tutte le risorse di Azure necessarie tramite i file Bicep forniti nella directory ./infra usando azd provision. Dopo aver effettuato il provisioning da Azure Developer CLI, è possibile accedere a queste risorse tramite il portale di Azure. I file di cui è stato effettuato il provisioning delle risorse di Azure includono:
      • main.parameters.json
      • main.bicep
      • Una directory delle risorse app organizzata in base alle funzionalità
      • Libreria di riferimento core che contiene i moduli Bicep usati dal modello di azd
    • Distribuisce il codice usando azd deploy

    Output previsto

    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
    

Confermare la corretta distribuzione

Nel portale di Azure verificare che il servizio checkout passi gli ordini al servizio order-processor.

  1. Copiare il nome dell'app contenitore checkout dall'output del terminale.

  2. Accedere al portale di Azure e cercare la risorsa dell'app contenitore in base al nome.

  3. Nel dashboard dell'app contenitore selezionare Monitoraggio>Flusso di log.

    Screenshot del passaggio alla pagina Flusso di log nel portale di Azure.

  4. Verificare che il contenitore checkout registri lo stesso output del terminale in precedenza.

    Screenshot del flusso di log del contenitore del servizio di estrazione nel portale di Azure.

  5. Eseguire la stessa operazione per il servizio order-processor.

    Screenshot del flusso di log del contenitore del servizio di elaborazione degli ordini nel portale di Azure.

Che cosa è successo?

Al termine del comando azd up:

  • Azure Developer CLI ha effettuato il provisioning delle risorse di Azure a cui si fa riferimento nella directory ./infra del progetto di esempio alla sottoscrizione di Azure specificata. È ora possibile visualizzare le risorse di Azure tramite il portale di Azure.
  • L'app distribuita in App contenitore di Azure. Dal portale è possibile esplorare l'app completamente funzionale.

Eseguire le applicazioni .NET in locale

Prima di distribuire l'applicazione in App Azure Container, iniziare eseguendo i servizi order-processor e checkout in locale con Dapr.

Preparare il progetto

  1. Clonare le applicazioni di esempio nel computer locale.

    git clone https://github.com/Azure-Samples/svc-invoke-dapr-csharp.git
    
  2. Passare alla directory radice dell'esempio.

    cd svc-invoke-dapr-csharp
    

Eseguire le applicazioni usando l'interfaccia della riga di comando di Dapr

Per iniziare, eseguire il servizio destinatario della chiamata order-processor.

  1. Dalla directory radice dell'esempio modificare le directory in order-processor.

    cd order-processor
    
  2. Installa le dipendenze.

    dotnet build
    
  3. Eseguire il servizio order-processor.

    dapr run --app-port 7001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- dotnet run
    
  4. In una nuova finestra del terminale passare al servizio chiamante checkout dalla directory radice dell'esempio.

    cd checkout
    
  5. Installa le dipendenze.

    dotnet build
    
  6. Eseguire il servizio checkout.

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

    Output previsto

    In entrambi i terminali, il servizio checkout chiama gli ordini al servizio order-processor in un ciclo.

    Output 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}
    

    Output 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. Premere CMD/CTRL + C in entrambi i terminali per uscire dalla chiamata da servizio a servizio.

Distribuire il modello di applicazione usando Azure Developer CLI

Distribuire l'applicazione in App contenitore di Azure usando azd.

Preparare il progetto

In una nuova finestra del terminale, passare alla directory radice dell'esempio.

cd svc-invoke-dapr-csharp

Effettuare il provisioning e la distribuzione usando l'interfaccia della riga di comando per sviluppatori di Azure

  1. Eseguire azd init per inizializzare il progetto.

    azd init
    
  2. Quando richiesto nel terminale, specificare i parametri seguenti.

    Parametro Descrizione
    Nome ambiente Prefisso per il gruppo di risorse creato per contenere tutte le risorse di Azure.
    Località di Azure Posizione di Azure per le risorse.
    Sottoscrizione di Azure Sottoscrizione di Azure per le risorse.
  3. Eseguire azd up per effettuare il provisioning dell'infrastruttura e distribuire l'applicazione in App contenitore di Azure in un singolo comando.

    azd up
    

    Questo processo può richiedere del tempo. Al termine del comando azd up, l'output dell'interfaccia della riga di comando visualizza due collegamenti al portale di Azure per monitorare lo stato di avanzamento della distribuzione. L'output illustra anche come azd up:

    • Crea e configura tutte le risorse di Azure necessarie tramite i file Bicep forniti nella directory ./infra usando azd provision. Dopo aver effettuato il provisioning da Azure Developer CLI, è possibile accedere a queste risorse tramite il portale di Azure. I file di cui è stato effettuato il provisioning delle risorse di Azure includono:
      • main.parameters.json
      • main.bicep
      • Una directory delle risorse app organizzata in base alle funzionalità
      • Libreria di riferimento core che contiene i moduli Bicep usati dal modello di azd
    • Distribuisce il codice usando azd deploy

    Output previsto

    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
    

Confermare la corretta distribuzione

Nel portale di Azure verificare che il servizio checkout passi gli ordini al servizio order-processor.

  1. Copiare il nome dell'app contenitore checkout dall'output del terminale.

  2. Accedere al portale di Azure e cercare la risorsa dell'app contenitore in base al nome.

  3. Nel dashboard dell'app contenitore selezionare Monitoraggio>Flusso di log.

    Screenshot del passaggio alla pagina Flusso di log nel portale di Azure.

  4. Verificare che il contenitore checkout registri lo stesso output del terminale in precedenza.

    Screenshot del flusso di log del contenitore del servizio di estrazione nel portale di Azure.

  5. Eseguire la stessa operazione per il servizio order-processor.

    Screenshot del flusso di log del contenitore del servizio di elaborazione degli ordini nel portale di Azure.

Che cosa è successo?

Al termine del comando azd up:

  • Azure Developer CLI ha effettuato il provisioning delle risorse di Azure a cui si fa riferimento nella directory ./infra del progetto di esempio alla sottoscrizione di Azure specificata. È ora possibile visualizzare le risorse di Azure tramite il portale di Azure.
  • L'app distribuita in App contenitore di Azure. Dal portale è possibile esplorare l'app completamente funzionale.

Pulire le risorse

Se non si intende continuare a usare questa applicazione, eliminare le risorse di Azure di cui è stato effettuato il provisioning con il comando seguente:

azd down

Passaggi successivi