Introducing a New How Heroku Works
July 16, 2013 by Jon Mountjoy
Humans, in their quest for knowledge, have always wanted to know how things work.
We sit in our bedrooms, kitchens and garages pulling things apart with eager hands, examining the bits with a glimmer in our eye as our fingers turn them around and around, wondering what they do, how they do what they do–hoping that everything still works without that pretty residual part that no longer seems to fit.
How Heroku Works follows this well trodden path. It dissects the platform, laying its innards bare upon the table, letting us gather around and look at what's inside.
Look here, and see the muscular router pumping packets to and fro. Look there, and see the dyno manager in all its glory, effortlessly orchestrating the platform.
Look yonder and see the database's WAL-E continuously archiving data bits.
And there, behold the dynos: like mitochondria they are the powerhouse of the platform, running your applications.
This monument to progress provided a pioneering map of the Heroku platform. Etched with a surgeon's eye, its stylish and sleek lines drew praise from around the world, while its descriptive text provided some solace to those wanting to know more, wanting to understand how it worked.
But we were left wanting. How, really, is the foot bone connected to the leg bone? How, really, is my code transformed from a
git push into a slug into a release into something that executes, making use of config vars and third-party add-ons whilst unifying logging via logplex, all running on set of dynos, controlled by a [dyno manager](https://devcenter.heroku.com/articles/how-heroku-works#dyno-manager, hooked up to a router?
How Heroku Works is intended to answer these questions.
The article provides a high-level, accurate, technical overview of the Heroku platform.
Describing the platform required a certain balance. Too detailed, and you'll get lost in the mire of minutiae. Too broad, and you'll just have a caricature.
We hope you appreciate this struggle, and the resulting text - which is generous in its linking to other documents that provide deeper material.
It's difficult to describe an organism. Do you describe the body parts, and how they fit together (the static view, the deploy-time view), or do you describe the journey of blood and electricity (the dynamic view, the run-time view)?
How Heroku Works describes both–using words–in a story that takes you through a journey of the major components of the platform. A sequential reading is necessary (some components are intertwined with others), but in the end you should have a pretty solid understanding of both the run-time and deploy-time views.
You should be rewarded with a better understanding of how it all fits together - how you go from code to executing bits.
This description of the Heroku platform is radically different from its predecessor. Here are some of the design choices that went into its creation:
- Audience: we're assuming a much more technically savvy audience in this description. You're tinkerers, makers. You want to know how stuff works.
- Timing: this article is an optional read, but a really great read after deploying your first couple of apps.
- Language: while describing the platform we found a few terms that were a little too nebulous, so we changed them. The "Routing Mesh" is now simply called "routers". "Dyno Manifold" is now called a "Dyno manager". Both concisely describe the components, and don't require you to look up additional descriptions.
- Words: you will have to read - instead of gaze at awesome pictures. We'd love to iterate on this, and move it towards something that has a little more visual allure - but hope you instead enjoy an accuracy and detail difficult to depict in pretty pictures.
Please use the feedback box at the bottom of the article to send me any feedback.