AWS / Heroku are both free for small hobby projects (to start with).
If you want to start an app right away, without much customization of the architecture, then choose Heroku.
If you want to focus on the architecture and to be able to use different web servers, then choose AWS. AWS is more time-consuming based on what service/product you choose, but can be worth it. AWS also comes with many plugin services and products.
Heroku
- Platform as a Service (PAAS)
- Good documentation
- Has built-in tools and architecture.
- Limited control over architecture while designing app.
- Deployment is taken care of (through git commands only).
- Not time consuming.
AWS
- Infrastructure as a Service (IAAS)
- Versatile - has many products such as EC2, LAMBDA, EMR, etc.
- Can use a Dedicated instance for more control over the architecture, such as choosing the OS, software version, etc. There's more than one backend layers.
- Elastic Beanstalk is a feature similar to Heroku's PAAS.
- Can use the automated deployment, or roll your own.