Here's what happens during the deployment of Heroku (current as of 10/20/2011 *) [1]:
- Heroku gets your git push
- The new release is compiled from the latest version of your application and saved
- [This happens about the same time]
- A dino grid signals the completion [2] of all running processes for your application.
- A dynamic grid signals the start of new processes for your application.
- A dino grid is signaled to streamline all processes in the standby mode of your application.
- HTTP Router Signals to Start Routing HTTP Traffic to Web Servers Launching New Version
The general conclusion is that to minimize any possible downtime, you should minimize the load time of your application.
Following a thorough migration method, you can click the new code and then perform the migration while the application is running. Rails example: http://pedro.herokuapp.com/past/2011/7/13/rails_migrations_with_no_downtime/
To minimize remote connections during a reboot, use a web server that responds appropriately to SIGTERM by starting a graceful shutdown (terminate existing connections, don't take new ones). Newer versions of thin will correctly handle SIGTERM.
- This issue is the subject of much discussion within the country and may change in the future.
- SIGTERM follows 10 years later SIGKILL if still working
source share