If you just need a single container in each region, and they are not running for a long time, then you are best of using ACI. It will be much quicker to deploy and likely cheaper and easier to manage. ACA is really more intended for longer running services, where you have multiple containers and need external ingress. Have you consider the Azure Load Testing service, which may do some of this for you?
ACA of ACI for outbound only services
Hello, I'm designing a load testing solution in my company which requires creating 5-10 dozen instances of connections sourced from various Azure data centers in North America. The solution will be containerized so that upon startup the container will run a script to hit our web app, download a few files, and log the results to a SQL server. Each instance should run for 45 seconds. Repeat doing this with say 100 simultaneous instances executing. I was thinking of using ACI and figuring out a way to get the dozens of containers started up and executing at the same time. But then I saw the ACA service and I'm not so sure now. For my use case I'm not looking at using containers to receive traffic from users. Instead it's all about having lots of connections outbound at the same time. Could anyone provide guidance as to whether ACA or ACI would be a better fit over the other? Thanks, Mike
1 additional answer
Sort by: Most helpful
-
Pinaki Ghatak 4,290 Reputation points Microsoft Employee
2024-02-19T18:57:26.8133333+00:00 Hello Mike Lee
Both Azure Container Instances (ACI) and Azure Container Apps (ACA) have their own strengths and are suited for different scenarios.
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 instances12. 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.
On the other hand, Azure Container Apps (ACA) 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. It supports Kubernetes-style apps and microservices with features like service discovery and traffic splitting. It enables event-driven application architectures by supporting scale based on traffic and pulling from event sources like queues, including scale to zero. Given your use case of having lots of connections outbound at the same time, you might want to consider the following:
- 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.
- 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.
In conclusion, both services have their own strengths and the choice between ACI and ACA would depend on the specific requirements of your use case. It’s always a good idea to experiment with both and see which one fits your needs better.
If this information provided here helps solve your issue, please tag this as answered, so it helps further community readers, who may have similar questions.