Container Apps vs AKS vs App Service: which Azure compute should run your app?
Azure has a shelf of places to run your code, and the classic beginner mistake is reaching for the most powerful one. The real question is not "what can run this?" but "how much platform can my team actually operate?"
You have a containerized app and a create dialog with too many options: App Service, Container Apps, AKS, Container Instances, Functions. They can all run your workload, which is exactly why the choice paralyzes people. The trick is to stop comparing raw capability and start asking a management question — how much of the underlying platform do I want to be responsible for? Answer that and the shelf sorts itself.
App Service: managed hosting for web apps
Microsoft's framing is direct: App Service "provides fully managed hosting for web applications including websites and web APIs," and it is "optimized for web applications." You deploy code or a container, and you get slots, scaling, and built-in TLS without touching a VM or a cluster. If what you are shipping is a web app or an HTTP API, the docs say the quiet part plainly: "When building web apps, Azure App Service is an ideal option." Do not overthink it.
Container Apps: serverless containers, no Kubernetes to run
Azure Container Apps lets you "build serverless microservices and jobs based on containers." Under the hood it is powered by Kubernetes and open-source pieces like Dapr and KEDA, so you get Kubernetes-style capabilities — service discovery, traffic splitting, revisions, event-driven scale, and importantly scale to zero — but as a fully managed experience. The defining line is what it deliberately withholds: "Azure Container Apps doesn't provide direct access to the underlying Kubernetes APIs." That is not a limitation, it is the whole product. You get the good parts of Kubernetes without a cluster to operate, which is why Microsoft notes many teams "prefer to start building container microservices with Azure Container Apps."
AKS: full Kubernetes, and the operations that come with it
Azure Kubernetes Service "provides a fully managed Kubernetes platform" with "direct access to the Kubernetes API" and can "run any Kubernetes workload." This is the powerful option — and the demanding one. The docs draw the boundary cleanly: "If you require access to the Kubernetes APIs and control plane, you should use Azure Kubernetes Service." AKS comes in two flavours — Standard, where the cluster lives in your subscription and you own its configuration and operations, and Automatic, where Azure preconfigures more of the operational surface. Either way, you are choosing to operate Kubernetes, which is a real, ongoing job.
| Option | Best for | You manage | Kubernetes API? |
|---|---|---|---|
| App Service | Web apps and HTTP APIs | Just your app | No |
| Container Apps | Serverless container microservices & jobs | Just your containers | No (managed) |
| AKS | Any Kubernetes workload, full control | The cluster + your app | Yes |
| Functions | Event-driven functions (FaaS) | Just your functions | No |
| Container Instances | A single low-level container, on demand | Low-level building block | No |
Do not pick the platform with the most power. Pick the least platform that does the job — and that your team can run at 2am.
Azure Functions is serverless Functions-as-a-Service — the ideal option for event-triggered, ephemeral functions. Container Instances (ACI) is a single pod of containers on demand, a low-level building block with no built-in scaling, load balancing, or certificates. You reach for ACI when you want an un-opinionated primitive, not an application platform.
How to actually choose
- Shipping a web app or API? App Service. It is built for exactly that.
- Containerized microservices, and you do not want to run Kubernetes? Container Apps. Managed, scales to zero, Kubernetes-style features without the cluster.
- You genuinely need the Kubernetes API — custom operators, a specific ecosystem tool, full control? AKS, and staff the operations that come with it.
- Event-driven glue? Functions. A raw container primitive? Container Instances.
The strongest interview answer here is not "AKS, because it is the most powerful." It is "Container Apps, because the workload never needed the full Kubernetes surface and the team could not staff cluster operations." Choosing the smallest platform that fits is not settling — it is the judgment that keeps you out of an on-call rotation you did not need to sign up for.