Factors that could influence choosing between AKS and ACA
Azure Kubernetes Service (AKS) and Azure Container Apps (ACA) are two different services provided by Microsoft Azure for running containerized applications.
Azure Container Apps is a recently new service in Azure that provides a higher-level abstraction over containers, enabling developers to deploy multi-container applications without having to worry about the underlying Kubernetes infrastructure. Actually the underlying AKS is completely transparent to the ACA developers.
Then the question arises, when I should use what?
Let’s first go through some differences between the two technologies without focusing too much on the technicalities. If you are interested in a detailed comparison, check out this blog post. We are sure that over time more Kubernetes features, more metrics, more managed features will be surfaced to ACA. Therefore let’s look at the foundational differences.
AKS (Managed Kubernetes Service)
➕ you can leverage the full CNCF ecosystem especially the innovative tools and standards fostered by CNCF. (e.g. you cannot deploy on ACA software that require to create CRDs).
➕ you can easily move your solution from one cloud provider to the other (Azure, AWS, GCP).
➕ you get all the Kubernetes benefits and new features (e.g. eBPF, Gateway, etc..)
➕ community knowledge and number of tools. A big community means that there is a wide range of expertise and knowledge available to users. This includes access to best practices, troubleshooting tips, and new ideas for using the platform.
➖ steep learning curve. Kubernetes is a complex platform with many moving parts. It requires a deep understanding of containerization, networking, storage, and other related technologies.
➖ complex to operate (upgrades, infrastructure, fine tuning, …). Kubernetes can handle a large number of containers and services. However, this also means that it can be difficult to manage and monitor at scale.
ACA (Serverless Namespace-As-A-Service built on open source technologies)
➕ no operations cost, it’s a managed service so you don’t need to worry about configuring, maintaining, and scaling the infrastructure yourself.
➕small learning curve, it’s super easy to run containers. This can make it easier and faster to deploy your applications, which can reduce the time to market and improve agility.
➕ provides a great developer experience. I can fully focus on the app, not the infra.
➖ only some of the K8S features will be surfaced to developers. For example, at the time of writing, CronJobs are not supported.
➖ lock-in with Microsoft. Even if ACA is built on top of OpenSource tools like Kubernetes, DAPR, Envoy and KEDA, switching to an alternative vendor or solution comes with difficulties and cost.
➖ new features will come at the pace of Microsoft
➖ you have to stay stick to some bundle of CPU/Memory and the existing dedicated plans.
➖ good for simpler workloads that do not require the same level of scalability of AKS.
➖ how to properly operate if the number of container apps grow significantly?
Let’s recap it in an simple flowchart.

Conclusion
Overall, the choice between AKS and Azure Container Apps depends on the specific needs of your application, such as scalability, complexity, flexibility, cost, and integration limitation you might have at the certain point in time. If you have a complex workload that requires advanced features and high scalability, AKS may be the better choice. If you have a simpler workload that can be deployed quickly and easily, with a higher-level abstraction over the infrastructure, Azure Container Apps may be a better option.
Photo by Afif Ramdhasuma on Unsplash