Let's say there's a VM on AWS that is being used to host multiple instances of the same web app.

The web app has a React front end and an ASP.NET Core backend, and the VM runs IIS.

Each instance of the app has its own subdomain:


app1.domain.com
app2.domain.com
....
app24.domain.com

Each app must have its own instance, but each can have different loads - some may be heavier than others. There is no load balancing.

This isn't ideal and there is memory and resource pressure on the VM, so the thought was to create multiple VM's and divvy up the apps among the VMs based on load. For example, if one app normally has a heavier load, it would be grouped with apps that have a lighter load.

This seems "brute force" to me. What would be another good way to structure this on AWS? Would it be using Elastic Beanstalk? Could they all be set up in Elastic Beanstalk and it would take care of adjusting the number of VM's required to handle variable loads?

2 Replies 2

Beanstalk offers the highest abstraction and requires the least operational overhead for you but I'd be tempted to consider a containerization route with ECS and ALB. You can scale individual services independently and run multiple containers per EC2 instance or with ECS Fargate as a serverless option.

If the backend relies on Windows-only features (COM/Crystal Reports/Windows auth), I willl tailor this to Windows (EB/ECS-Windows). Otherwise I would proceed with ECS Fargate + ALB host rules + S3/CloudFront - that’ll give you per-app autoscaling, isolation, and lower ops without the VM Tetris.

Your Reply

By clicking “Post Your Reply”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.