By Sjoukje Zaal
Currently, there are a lot options you can choose from when developing container applications and host them on Azure. Microsoft has released a number of Azure container-based products that all have their own characteristics and are suitable in certain scenarios. Below, you see an overview of the different services and the scenarios and use cases for each service, compared to Azure Container Apps:
Azure Container Apps
As mentioned before, with Azure Container Apps you can deploy containerized apps without managing the complex infrastructure. It is powered by Kubernetes and open-source technologies like Dapr, KEDA, and envoy. It fully supports Kubernetes style applications and microservices with features like service discovery and traffic splitting. It also offers support for scaling based on traffic and pulling from event sources like queues, including scale to zero.
However, because it is a serverless platform, it doesn’t provide direct access to the underlying Kubernetes APIs. If access to the Kubernetes APIs and control plane is required, then you should consider using Azure Kubernetes Service. If this access is not required, then Azure Container Apps provide a fully managed experience based on industry best-practices.
Azure Container Instances
Azure Container Instances offers a single pod of Hyper-V isolated containers on demand. Compared to Azure Container Apps, this can be thought of as a lower level “building block”. ACI does not provide features such as scaling, load balancing, and certificates. For instance, to scale to three container instances, you create three distinct container instances. ACI is often used to interact with through other services, Azure Kubernetes can layer orchestration and scale on top of ACI through virtual nodes. If you don’t have scaling, load balancing, or certificate requirements for your applications, ACI can be a good solution.
Azure App Service
Azure App Service is optimized for web applications. It provides fully managed hosting for web applications including websites and web APIs. These applications can be deployed on Azure App Service using code or containers, and it integrates with other Azure services including Azure Container Apps or Azure Functions. This makes it most suitable for scenario’s where you only build web apps.
Azure Kubernetes Service
Azure Kubernetes Service (AKS) offers a fully managed Kubernetes option in Azure, which includes access to the Kubernetes API and control plane. The full cluster resides in your Azure subscription, which makes you responsible for managing the cluster configurations and operations. If you are looking for a fully managed version of Kubernetes in Azure, AKS is a good solution.
Azure Functions
Azure Functions is optimized for running event-driven applications using the functions programming model. It offers similar functionality with Azure Container Apps around scaling and integration with events but is mostly optimized for ephemeral functions. They can be deployed using code and containers, where the latter makes it portable to deploy them to other container-based platforms. They are most suitable in scenarios where you want to trigger the execution of your functions on events and bind to other data sources in Azure.
Azure Spring Cloud
When you are developing Spring Boot microservice applications, Azure Spring Cloud makes it easy to deploy them to Azure without any code changes. This is a fully managed service so developers can focus only on writing the code, instead of managing the environment. Azure Spring Cloud provides lifecycle management using CI/CD integration, configuration management, monitoring and diagnostics, service discovery, blue-green deployments, and more. In scenarios where your development team is predominantly Spring, this is a good solution.
Getting started
Want to get started with Azure Container Apps and experience it yourself? Here is a list of useful articles that can get you started:
- Azure Container Apps Preview environments: https://docs.microsoft.com/en-us/azure/container-apps/environment
- Microservices with Azure Containers Apps Preview: https://docs.microsoft.com/en-us/azure/container-apps/microservices
- Quickstart: Deploy your first container app: https://docs.microsoft.com/en-us/azure/container-apps/get-started
- Publish revisions with GitHub Actions in Azure Container Apps Preview: https://docs.microsoft.com/en-us/azure/container-apps/github-actions-cli?tabs=bash