Having worked for a couple years now on Rails applications deployed to cloud hosting services like EngineYard and Heroku, a certain set of “rules” have begun to emerge in the back of my head regarding this “new world” application development and deployment process. Things that run the gamut of application development, from dependency management to rapid deployment to source control.
Just as a more or less holistic picture of this “new world” was beginning to form in my head, Adam Wiggins of Heroku published a very nice, quick-read “web booklet” – The Twelve-Factor App. It’s not deep, but does a great job of circumscribing the set of concerns one should have in mind when building an app that is destined to be deployed in the cloud.
If you are relatively new to cloud-based deployment of web applications, it may not be obvious that deployment to a cloud-based server should affect your application in so many ways (thread management, stateless processes, absolute separation of configuration data from source code, etc.). Build, deploy and manage an app or two, and you’ll learn some of these lessons the hard way.
If you do open source development (like Ruby on Rails), learning the hard way has probably become a way of life. Do yourself a favor and remind yourself how nice it is when someone takes the time to put up a few guideposts to mark your way, to keep you on the trail and out of the weeds (or over the cliff’s edge). Check out this informative site. You can get through the content in fifteen minutes. Thirty if you take time to let the points sink in a bit. You’ll save yourself a lot more than that if you use these concepts when you build your next hosted application.