In a linear graph from "Heroku" to "VPS do-it-yourself":
|------------------------------------------------------------|
Heroku Render Railway NorthFlank Fly DigitalOcean
That's how I would place them from easiest to hardest. Of course DigitalOcean is not a PaaS but bear with me.I use Render for https://www.gamedrop.gg/ and it works really well for me, very hands off.
We chose Render and have been happy with things just chugging along as they were on Heroku.
Their runtime seems to take up quite a bit more RAM, but the IAC is a great addition resulting in 100% consistent environments.
Now I avoid AWS as much as I can. Of course my employers tend to be on AWS so sadly I can’t completely avoid it, but I do my best and would never recommend it anymore.
It is a tool like any other and it is not as simple as DO's but its also a lot cheaper and more powerful once you learn the tooling. The logging on deployment is true but I think the majority/all issues I have seen with that is when the image is not configured correctly and cannot run when testing locally.
Github Action (Build Docker Image) > Push Image to AWS ECR for image storage > Kick off Deploy of ECS.
You can configure your ECS cluster using the console UI or something like Terraform. Once configured its set it and forget it.
Honestly not that much more complicated compared to Heroku.
Just wondering how do you "Kick off deploy of ECS" services? The solution I have currently is using:
aws ecs update-service --cluster={ CLUSTER_NAME } --service={ SERVICE_NAME } --no-cli-pager --force-new-deployment
aws ecs wait services-stable --cluster={ CLUSTER_NAME } --service={ SERVICE_NAME }
From my CI, but this doesn't feel like the best way to do it