Scale up a frappe app on AWS without dockerization

Hi Community!

I’ve built a Frappe application that I want to scale on AWS. However, I’m not very familiar with Docker, Docker Compose, or the Kubernetes (K8s) ecosystem and currently lack the time and resources to learn them.

Could you please let me know if the following architecture would work well for scaling and performance on AWS?

  1. Application: Installed on 2+ EC2 instances
  2. Database: MariaDB hosted on 1 RDS instance
  3. Caching: Redis hosted on 1 ElastiCache instance
  4. Load Balancing: Using an Application Load Balancer

Here are some specific questions I have:

  1. Scheduler: Should the scheduler be enabled on just one EC2 instance and disabled on the others? My understanding is that scheduled job types are stored in the RDS and jobs in Redis (ElastiCache) are shared across EC2 instances. Is this correct, and does it mean there’s no need to disable the scheduler on other EC2 instances?

  2. CI/CD Pipeline: What’s the best approach for upgrading the application? Should I build a new image for each codebase change and then use an Auto Scaling Group (ASG) to rebuild new instances based on the new image ?

  3. Resources and Documentation: Do you have any recommendations, documentation, or experiences to share regarding this approach or a better way to implement such a setup?

Thanks in advance for your help!