You can develop, but can you develop for the cloud? Harness your development skills and learn how to create robust solutions for Microsoft Azure, aiming for your Microsoft Certified: Azure Developer Associate certification!
Azure Container Apps is a platform for building microservices architectures, where each independent part of an application runs in its own container. These microservices are grouped inside a secure Container Apps environment. The Distributed Application Runtime (Dapr) adds powerful features by running a sidecar alongside each container app. Dapr provides built-in tools for service discovery, state management, and asynchronous messaging using a publish/subscribe model, which helps services communicate reliably.
Secure communication is managed on two fronts: ingress and internal traffic. Secure ingress controls how external traffic reaches the application, using HTTPS and TLS termination. You can restrict access with IP rules and use custom domains. For communication between microservices inside the environment, internal ingress ensures that traffic never goes over the public internet. Security is further strengthened by using managed identities for authentication and integrating with Azure Key Vault for centralized secrets management, so credentials are not stored in code.
To fully isolate an application, you can deploy container apps inside a virtual network. Using private endpoints ensures all communication stays within Azure's private network backbone. You can add rules with Network Security Groups (NSGs) to control the flow of traffic between services, creating a secure, deny-by-default environment for your microservices.
Deployment starts by creating or selecting an Azure Container Apps environment, which is the secure boundary that will contain your apps. You choose a region and can enable features like zone redundancy for higher availability. The environment uses workload profiles to manage resources; the default Consumption + Dedicated profile helps minimize costs.
To deploy an application, you specify a container image. You can use a public image from Docker Hub or a private image from a registry like Azure Container Registry, which requires authentication. You then allocate CPU and memory resources for the container. Optionally, you can select a specific workload profile if your environment has been configured with custom profiles for different types of workloads, like high-performance front-ends or background tasks.
Scaling is a core feature. You can configure scaling rules based on metrics like HTTP traffic or CPU usage. Using workload profiles and custom scalers, the platform automatically adjusts the number of running container instances, or replicas, to match demand. This ensures your application remains responsive while controlling costs. After deployment, you can update the app by changing the image tag or registry settings through the Azure portal or CLI, and you can set environment variables to configure the app's behavior.
Revision management is how Azure Container Apps handles application updates. Every time you deploy a change, it creates a new, immutable revision. This allows for zero-downtime deployments and easy rollbacks to a previous version if something goes wrong. You can run multiple revisions simultaneously and use traffic splitting to gradually shift user traffic from an old version to a new one, enabling strategies like blue/green deployments.
Scaling is driven by KEDA, which stands for Kubernetes Event-driven Autoscaling. KEDA allows the app to scale based on various triggers. Common triggers include HTTP concurrency (the number of simultaneous web requests), CPU utilization, or events from services like Azure Service Bus. You define scaling rules that specify the minimum and maximum number of replicas. Setting the minimum to zero allows the app to scale down completely when idle, which optimizes cost.
Configuring these scaling rules involves setting thresholds for the chosen metrics. For example, a rule might state to add a new replica when the average CPU usage exceeds 70%. Authentication for scaling rules that need to access external services (like a message queue) can be handled securely using secrets or managed identities. Properly implementing these rules ensures your application performs well under load while remaining efficient and cost-effective.
A system architecture showing external traffic entering a Container Apps environment through an ingress controller, which splits requests between two active revisions using traffic weights, each revision backed by load-balanced replicas.
Prepare and test your skills

Prepare and test your skills

Dapr (Distributed Application Runtime) is a sidecar that runs alongside each container app in Azure Container Apps. It provides built-in tools for service discovery, state management, and asynchronous messaging using a publish/subscribe model, which helps microservices communicate reliably.
Secure ingress controls how external traffic reaches the application using HTTPS and TLS termination, with options for IP restrictions and custom domains. Internal ingress ensures traffic between microservices inside the Container Apps environment never goes over the public internet, securing internal communication.
KEDA (Kubernetes Event-driven Autoscaling) is the scaling engine that allows Azure Container Apps to scale based on various triggers including HTTP concurrency, CPU utilization, and events from services like Azure Service Bus. It lets you define minimum and maximum replica counts, with the option to scale to zero when idle.
Revisions are immutable snapshots created each time you deploy a change to a container app. They allow for zero-downtime deployments and easy rollbacks to previous versions. You can run multiple revisions simultaneously and use traffic splitting to gradually shift user traffic between versions, enabling blue/green deployment strategies.