As technology progresses then taking a few minutes to deploy your app can seem like a long time, but when you consider everything Heroku is doing during that time then its quite amazing
Heroku creates a new “server” each time you deploy, so that the currently live application can still handle reuests until the new version is ready. Rather than a whole bloated server, Heroku actually creates a new Linux container with a running OS. This Linux container usually takes a second or less to create with a running operating system.
If your app is compiled, then the build process is run so you have a deployment made from your standard production build.
Environment variables are set for the applications and any services (caching, logging, monitoring, etc) or datastores (postgres, redis, mongodb) are therefore automatically connected too.
All the relevant processes are run and scalled (can you scale your app to a certain level when you deploy)
This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License, including custom images & stylesheets. Permissions beyond the scope of this license may be available at @jr0cket