Suppose you needed to transfer 1TB of data (perhaps your home movie collection) from San Francisco to London. What would be the fastest route? Put the disk on British Airways flight 286 at SFO, or transfer it across the Internet using a 100 Mbps connection?
Surprisingly, the answer is the former not the latter. If you had a perfect 100 Mbps Internet connection and could fill it completely with data the transfer would take 22 hours 13 minutes. British Airways make the flight in under 10 hours.
The Bandwidth of a Boeing 747
While CI environments do take time to implement, and you will need to keep up on writing tests, we believe that over the long haul they’re akin to a snowflake falling on the top of the mountain – they’ll gain momentum over time.
So what does ours look like? Here’s our list of ingredients:
Our code works its way through this system and, eventually, winds up on our production servers. For our purposes, our process is distinctly broken up into two major steps: continuous integration (GitHub, Jenkins, Repoman, Ubuntu, and Fabric) and deployment/systems automation (Chef, Ubuntu, AWS, and Fabric). This post will only focus on our CI environment. So what’s the life cycle for code being committed as it works its way through our continuous integration?
This is how we’ve built Cameo thus far, and its an awesome setup. Commit > Push > Sit back (as long as you didn’t screw anything up)