Victus Spiritus

home

One line installs, One button deploys

28 Mar 2011

Without exaggeration single button deploys and one line installs have changed my dev life. Read on to find out why. I'll note a few of the configuration management tools I use on OS X and why I chose them towards the end of the post.

preface

Ever since I made the decision and effort to bring ideas to life through web apps, fortune has smiled upon my enthusiasm and placed generous allies along my way. It was only last year that I accepted that I'm on a life long journey, with no promise of a payoff beyond the satisfaction of the struggle. A sunk startup is a humbling and grounding experience, and I suggest everyone go through it exactly once ;).

When I was clueless how to begin development and irresistibly drawn to build my first web app, a good friend and partner materialized out of crossing real time updates, and showed me that I need to get my hands dirty. When I wanted to better understand distributed social networks, I was introduced to open social protocols which transcend corporate silos. When I wanted to leverage and learn from social coding, I was pointed to git and github. For endless questions about development tool installation and configuration I rely on personal blogs, web docs, and the community at StackOverflow. The personal productivity boons that have minimized my dev iteration time and kept me sane in a world of endless options, are one button deploys, and one line installation scripts.

One button deploys

There's nothing that compares to Heroku's ease of use and deployment ruby projects. From the homepage:

Create Heroku apps instantly:

$ sudo gem install heroku $ heroku create sushi Created http://sushi.heroku.com/ git@heroku.com:sushi.git

Full deployment is simply a git push:

$ git push heroku master -----> Heroku receiving push -----> Rails app detected -----> Launching..... done http://sushi.heroku.com deployed

Everything apps need and more, all manageable by API:

$ heroku sharing:add fugu@sushi.com $ heroku domains:add sushi.com $ heroku rake db:migrate $ heroku db:push $ heroku addons:add memcache

Deploying static pages to github is a simple one line deploy with github pages. Note to self, setup a landing page for victusfate.github.com.

EngineYard comes close for easy deploys with Ruby stacks and more flexibility after setting them up, but has a minimum monthly subscription (it cost us $70 a month). I've heard that Rackspace, Amazon, and several other hosts have developer friendly environments. I have a homework/side project to kick up a jruby/rails app on aws to see how it goes. 

I have hands on experience deploying to the Google App Engine, which is fine for python or Java but slightly less friendly to JVM language stacks like JRuby or Scala due to a slow JVM warm up time. I'd really like to see one button/line deploys commoditized with a Freemium model and low to zero infrastructure switching costs.

One line install scripts

I have synchronized dev environments on my iMac desktop and Macbook Air. Dropbox and git keeps my code in synch, but I manually maintain development tools on both systems. The following utilities make my job much simpler. If you're developing on Linux you may use apt-get, debian packages, or yum. Since I primarily develop on OS X I rely on homebrew as a general package tool, but have specific favorites for different languages/frameworks.

If you have your own favorite configuration time saving hacks I'd love to hear about them in the comments.