Benefits
- Configuration is not in code
- Easily deploy of crud apps
- Easy scaling
- Easily addons
- Enforces scalable architecture
Drawbacks
- App that rely on
webkit2png
- Limited by buildpacks
- Limited by addons. For example no image processing, machine learning
- Once you get outside of your typical web app you are limited
- Bad use case for Play! because it uses docker container
When to use Heroku
- JSON REST API with conventional datastore
- Custom marketing sites - Pyur Website
- It might be easier to provision and deploy a service through and addon
When NOT to use Heroku
- System Dependencies that are difficult to install
- Tools that are not optimized for common use (Image Processing, Scientific data processing, Neural Networks)
- Mult-language Applications
- Anything that requires GPU acceleration
- Specialized depoyment
Lessons from Heroku
- One database per app
- Non technical clients can setup billing and scale their apps
- Highly scalable because it limits dependencies and seperates responsibilities
- Scale out via the process model
- Bus Factors
- Simplify the depoyment process so anyone can do it
- Servers can be easily replicated
- Don't have the one off server