Overall Satisfaction with Heroku
- Heroku's deployment process is very painless.
- Heroku does a great job of making system/infrastructure upgrades painless and transparent.
- Heroku's CLI toolset is well built and puts all of your app's info, settings, add-ons, logs, etc, right at your fingertips.
- Heroku does not offer a very wide range of dyno sizes - it would be nice to be more flexible about how much RAM or CPU each dyno consumes.
- While Heroku is well engineered for deploying certain common types of applications, it can be tricky to deploy more esoteric or uncommon configurations (like Rails + Node.js at the same time).
- Heroku is more expensive than handrolling your infrastructure on AWS, for instance, but the ease of deployment and the ability to get up and running without any hassle or real thought about "how does this work" makes it absolutely great when you can afford that luxury.
- Heroku's uptime has been pretty stellar but occasionally they experience outages (although still maintaining 4/5 9s of uptime), but when they go down there's not much to do but wait.
Heroku is really, really good for Ruby on Rails applications. Heroku is not very good for applications that require many different languages for various micro-services, or the types of apps where you might have a very tiny service that does not require much RAM or CPU, but which you need to spin up hundreds of such instances.
Heroku would probably be good for a slightly technical client if you were going to turn over the keys after a consulting gig - it is very well documented and there are many resources out there for dealing with specific issues, it is way better than trying to support your client on something like DreamHost or GoDaddy.
Perhaps Heroku's greatest strength is in providing a hosting platform that stays out of the way while you build out your business logic and grow your startup from the beginning. It allows your engineers to focus on the problem, not the infrastructure.