Scaling based on users

Said I have 3 sites and each of them has erpnext and custom apps. A, B and C.

All of them now in an ec2 instance eg. 4vcpu and 16gb ram.

Currently, B has massive users (1000-2000) due to events and so I want to give B more resource eg. +vcpu and +ram without touching A and C sites.

I think upgrade my ec2 instance to have more vcpu and ram is a way.

But, I would like to know are there horizontal scaling? eg. separate B from existing ec2 and put it in said 3 ec2 each with same power? We have a plan to have more users eg. 20k by 2 quarters later. And I think LB with 6-8 ec2? But I’m not that deep on python world.

Questions such as 6 ec2 each has it’s own workers (long and short) can work together and won’t do the same thing 6 times? I have an experience in another nodejs framework that sometimes same thing will be triggered 8 times if I have 8 worker instances. At last, I have to had only 1 large ec2 with workers and it won’t trigger same thing more than once. Does frappe framework or erpnext workers have to be in an ec2 or docker container?

I know maria can be separated. But how about app server and frontend (vue?) Can I have eg. 3 ec2/docker containers for app server and 5 ec2/docker containers for frontend to serve more users?

In short, can I horizontal scale each component of frappe framework / erpnext?

I have just noticed there is Press but wonder it can automate horizontal scaling or not.