Heroku's architecture makes sense when you bill per process and primarily target a slow runtime like MRI. If you want low latency you want as little as possible between your HTTP endpoint and the actual processing. You don't need HAProxy, SSL termination daemons, and so on when the JVM has the grunt to do this itself, and you end up lower latency as a bonus. It is also to my mind a simpler system. All things being equal I would rather configure and monitor one system than a zillion.
Comments
Heroku's architecture makes sense when you bill per process and primarily target a slow runtime like MRI. If you want low latency you want as little as possible between your HTTP endpoint and the actual processing. You don't need HAProxy, SSL termination daemons, and so on when the JVM has the grunt to do this itself, and you end up lower latency as a bonus. It is also to my mind a simpler system. All things being equal I would rather configure and monitor one system than a zillion.