Yes, all components except postgres are stateless in the sense that the state of your flows, flow runs, projects and everything else is stored and maintained in the database so that e.g. upgrading to a new version requires only database migration - all other components can be recreated. However, I’m not sure if simply having 3 Apollo containers instead of one can be immediately used to scale the service. I would suggest to start by scaling vertically, i.e. assigning more vCPU and RAM to your Fargate components when needed before trying to scale horizontally and introducing load balancing.
Based on what I saw in the community, the main challenges in maintaining Server are:
1. Ensuring that your
database storage scales because depending on the amount of flow runs, logs etc. the database can fill up pretty quickly. And again, the DB is the main stateful component
2. Managing upgrades - because e.g. when you use 0.15.10 on Server, you can’t run flows using a higher version 0.15.11 because then your flow runs may use some API endpoints that don’t exist in your Server version. Upgrading Server requires a DB migration, which can be challenging.
If you want to avoid that, Prefect Cloud has 20,000 free task runs every month, which is a lot to get started and you don’t need to worry about scale, DB administration and managing upgrades, and there are some features and performance optimizations that are only possible in Cloud.