Practical Azure Container Apps with Dapr
Tags: azure, containerapps, dotnet, tutorial
Published: 2022-09-26 09:20:24

> This post is originally posted at [medium.com](https://medium.com/@taiseer.joudeh/practical-azure-container-apps-with-dapr-f2d9b5ea1f82)

Azure Container Apps is a fully managed serverless container runtime for building and running cloud-native applications which focuses on the business logic of the apps rather than on cloud infrastructure management.

Azure Container Apps is built upon the foundation consisting of open-source technology with CNCF projects like Kubernetes Event-Driven Autoscaling ([KEDA](https://keda.sh/)), Distributed Application Runtime ([Dapr](https://dapr.io/)), and [Envoy](https://www.envoyproxy.io/) running on the Azure Kubernetes Service ([AKS](https://azure.microsoft.com/en-us/services/kubernetes-service/#overview)).

During the past month, I spent quite a time digging deeper and learning more about this serverless offering.

Theoretical learning is great, but nothing beats a practical example! So I've created a simple microservice application (Tasks Management App) which consists of three microservices and each one has certain capabilities to show how Azure Container Apps and Dapr can simplify the building of a microservices application.

#### Complete practical example on [my blog](https://bit.ly/ACATutorial). The [source code](https://github.com/tjoudeh/TasksTracker.ContainerApps) is available on GitHub.


The below architecture diagram shows the solution components and services I'm using in this practical example

![Azure Container Apps Architecture Diagram](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ud4uslw1cv7kdr0wys5u.jpg)

To help understand how I build the application from scratch, I have written various companion blog posts to describe the source code and walk you through the steps. 

The application use cases and Azure Container Apps features I will be covered are below:

- An overview of Azure Container Apps Components and Dapr and their core features and capabilities ([continue reading…](https://bitoftech.net/2022/08/25/tutorial-building-microservice-applications-azure-container-apps-dapr/))
- Getting started with Azure Container Apps, build and push container image to Azure Container Registry, then deploy your first Backend API microservice ([continue reading…](https://bitoftech.net/2022/08/25/deploy-microservice-application-azure-container-apps/))
- Communication between two microservices (without Dapr) and different options for ingress configurations ([continue reading…](https://bitoftech.net/2022/08/25/communication-microservices-azure-container-apps/))
- Introducing Dapr into the application and how it will help simplify complex microservices scenarios such as service discovery, service-to-service invocation, and calling services asynchronously ([continue reading…](https://bitoftech.net/2022/08/29/dapr-integration-with-azure-container-apps/))
- Enable local debugging for multiple microservices applications within VS Code and configure Dapr locally ([continue reading…](https://bitoftech.net/2022/08/29/dapr-integration-with-azure-container-apps/))
- Using Dapr State Management Building Block to store application data into Azure Cosmos DB with simple configurations and without adding CosmosDB SDK to the application ([continue reading…](https://bitoftech.net/2022/08/29/azure-container-apps-state-store-with-dapr-state-management-api/))
- Using Dapr Pub/Sub Building Block to enable Async communication between microservices while using Azure Service Bus as a service broker, and see how Dapr will simplify the process on the producer and consumer too ([continue reading…](https://bitoftech.net/2022/09/02/azure-container-apps-async-communication-with-dapr-pub-sub-api-part-6/))
- Handling external events from different systems and showing the connectivity and interoperability capabilities when introducing Dapr Bindings ([continue reading…](https://bitoftech.net/2022/09/05/azure-container-apps-with-dapr-bindings-building-block/))
- Introducing Cron binding to trigger application code periodically based on a configurable interval and store processing results Azure Blob Storage using Dapr State Management API ([continue reading…](https://bitoftech.net/2022/09/05/azure-container-apps-with-dapr-bindings-building-block/))
- Configure Monitoring and Observability for all applications in the Azure Container App Environment and implement distributed tracing between services and resources using Application Insights ([continue reading…](https://bitoftech.net/2022/09/09/azure-container-apps-monitoring-and-observability-with-application-insights-part-8/))
- Use GitHub actions to continuously build, push images to ACR and deploy new Azure Container Apps revisions with code changes ([continue reading…](https://bitoftech.net/2022/09/13/continuous-deployment-for-azure-container-apps-using-github-actions-part-9/))
- Creating the IaC scripts to recreate the entire ACA environment with the supporting resources (Azure Service Bus, Cosmos DB, Azure storage, etc…) using Bicep ([continue reading…](https://bitoftech.net/2022/09/16/use-bicep-to-deploy-dapr-microservices-apps-to-azure-container-apps-part-10/))
- Configuring Autoscaling for Azure Container Apps using KEDA based on Azure Service Bus Queue length ([continue reading…](https://bitoftech.net/2022/09/22/azure-container-apps-auto-scaling-with-keda-part-11/))
- _Integrating Health probes in Azure Container Apps (TBA)_

I will be adding more posts such as Authentication, services invocation using gRPC, file storage mounting, and using vNETs during the coming period, so stay tuned and thanks for reading.

Happy learning and coding!

**References:**

[Featured Image Credit](https://unsplash.com/photos/bukjsECgmeU?utm_source=unsplash&utm_medium=referral&utm_content=creditShareLink)