Difference between Azure Container Instances and Azure Container Apps
Solution 1:
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
Solution 2:
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.