Complete 10 posts tutorial where we will build a tasks management application following the microservices architecture pattern Live demo application, this application will consist of 3 microservices and each one has certain capabilities to show how Azure Container Apps and Dapr can simplify the building of a microservice application. Below is the architecture diagram of the application we are going to build in this tutorial: Use cases which we will cover during this tutorial are:
- Web App front-end application that accepts requests from users to manage their tasks.
- Backend Web API which contains the business logic of tasks management service and data storage.
- An event-driven backend processor which is responsible to send emails to tasks owners based on messages coming from Azure Service Bus Topic
- Continuously running background processor to flag overdue tasks running continuously based on Cron timer configuration
- Use Azure Container Registry to build and host container images and deploy images from ACR to Azure Container Apps
Dapr provides a set of APIs that simplify the authoring of microservice applications, once Dapr is enabled in Azure Container Apps, it exposes its APIs via a sidecar (a process that runs together with each Azure Container App), The Dapr APIs/Building blocks used in this tutorial are:
- Service to service invocation: Web front-end app microservice invokes the backend API microservice using Dapr sidecar
- State management: Backend API stores data on Azure Cosmos DB and some email logs on Azure Table Storage using Dapr state management building blocks
- Pub/Sub: Backend API publishes messages to Azure Service Bus when a task is saved and the backend processor consumes those messages and sends an email using SendGrid
- Bindings: The backend processor is triggered based on an incoming event such as a Cron job