16

Microsoft announced Azure Container Apps, a new service for running serverless containers in the cloud. This appears to be similar to the Container Instances service, which is also for deploying fully-managed containers.

What are the key differences between these two services?

Yefet Ben Tili
  • 279
  • 1
  • 5

2 Answers2

10

That's a good question and I've asked the team about it because it wasn't clear to me either.

In summary: if you'll spin up multiple container (e.g. front end / backend / database), Azure Container Apps is a better choice as it comes with Dapr and it will auto retry the requests and add some telemetry data.

If you just need long running jobs or you don't need multiple containers to communicate with each other, you can go with Azure Container Instances.

Azure Container Instances

Azure Container Instances (ACI) provides a single pod of Hyper-V isolated containers on demand. It can be thought of as a lower-level "building block" option compared to Container Apps. Concepts like scale, load balancing, and certificates are not provided with ACI containers. For example, to scale to five container instances, you create five distinct container instances. Azure Container Apps provide many application-specific concepts on top of containers, including certificates, revisions, scale, and environments. Users often interact with Azure Container Instances through other services. For example, Azure Kubernetes Service can layer orchestration and scale on top of ACI through virtual nodes. If you need a less "opinionated" building block that doesn't align with the scenarios Azure Container Apps is optimizing for, Azure Container Instances is an ideal option.

Azure Container Apps

Azure Container Apps enables you to build serverless microservices based on containers. Distinctive features of Container Apps include:

Optimized for running general purpose containers, especially for applications that span many microservices deployed in containers. Powered by Kubernetes and open-source technologies like Dapr, KEDA, and envoy. Supports Kubernetes-style apps and microservices with features like service discovery and traffic splitting. Enables event-driven application architectures by supporting scale based on traffic and pulling from event sources like queues, including scale to zero. Support of long running processes and can run background tasks. Azure Container Apps doesn't provide direct access to the underlying Kubernetes APIs. If you require access to the Kubernetes APIs and control plane, you should use Azure Kubernetes Service. However, if you would like to build Kubernetes-style applications and don't require direct access to all the native Kubernetes APIs and cluster management, Container Apps provides a fully managed experience based on best-practices. For these reasons, many teams may prefer to start building container microservices with Azure Container Apps.

source: https://docs.microsoft.com/en-us/azure/container-apps/compare-options

Thiago Custodio
  • 216
  • 1
  • 3
  • Note that you can use ACA without using Dapr and that ACI can run single and multiple containers apps. – CSharpRocks Nov 11 '21 at 14:31
  • 1
    another thing: Azure Container Apps can also scale to 0 containers (thanks to KEDA). –  Nov 11 '21 at 14:38
4

In a nutshell, workloads on ACI are usually started and stopped by some kind of process or trigger and are usually short-lived while workloads on ACA are usually long-running processes like a Web app.

CSharpRocks
  • 306
  • 1
  • 4
  • What about AppService? isn't that also for constantly running processes? – Narayana May 30 '22 at 02:34
  • It is, but there are more things you can do in a container than they allow via AppService. This video discusses some scenarios: https://www.youtube.com/watch?v=Fe_AYBD5m0I – Dave Slinn Aug 15 '22 at 16:37