Remember Heroku have to support millions of users on the free tier on a permanent basis, all of which costs very real cash money compared to your average freemium web business.
AWS only have a temporary free usage tier so collect money right up front even on the smallest projects.
For that reason, these relatively large step functions in pricing at the low end are reasonable from where I'm sitting.
Heroku is a great deal for people just starting out, somewhat at the expense of those who have already grown larger. His strategy seems sound-- use Heroku at the beginning, then if and when it gets unjustifiably expensive, switch to AWS.
The OP undervalues that bit in the TLDR: "stress-free deployment". For us, hiring or contracting a DevOps guy with 1/10th the chops of the heroku crew would cost 10x what we are paying them, and I don't think we'd have a better quality of life.
Heroku is only expensive if your time has no value.
Yes, maintenance (upgrades, security patches, scaling up instances...) if you're going DIY on AWS is also significant. The time needed for setup + maintenance varies greatly depending on the developer(s) as well as the exact project needs, but at a minimum, Heroku needs to be at least as expensive as AWS minimum costs + bare minimum setup costs before switching to AWS could be considered cost-effective.
No idea. Someone who has experienced that on Heroku should weigh in...
We're hosting static media on S3, but this project has no UGC and very limited amount of media assets, so you'd have to consider the AWS costs depending on your own needs.
When I first deployed to Heroku, I was serving media right from the web dyno, and it was working, but since the app is serving up the files (not Nginx serving them directly instead, or similar), I'd imagine that's not a great solution in terms of scalability.
AWS only have a temporary free usage tier so collect money right up front even on the smallest projects.
For that reason, these relatively large step functions in pricing at the low end are reasonable from where I'm sitting.