In April 2013, Shippable launched a Jenkins based CI using virtual machines (VMs). Our plan was simple - take the open source Jenkins, host it in the cloud, and start making money. After all, why would developers spend the time, effort, and money to set it up and maintain it when we were doing it for them for a few dollars a month?
By May, we had realized that VMs just didn’t scale. Our cost structure meant that we would need to charge way too much for something we were trying to commoditize. Also, this approach didn’t solve the basic issue of Jenkins setup and administration being super complicated for most developers.
We decided to write a CI platform ourselves! Containers were the best possible alternative to VMs (as we talked about yesterday). Same features and much less overhead? Shippable was in! We rebuilt everything from scratch, but this time using LXCs. It took three long months of focused engineering effort and in August 2013 , Shippable launched an LXC-based CI.
A few months earlier, in a galaxy not so far away, Docker had been open-sourced. Docker took LXCs and added some key improvements on top that were interesting to us -
Portable deployment - Docker allows bundling an application with all its dependencies into one object which can be transferred to any docker-enabled machine, and executed there with the guarantee that the execution environment exposed to the application will be the same. Used correctly, this eliminates the oft repeated problem of - “It works on my machine”.
Git-like versioning - Versions of a container can be tracked, which comes with benefits like diff between versions, rolling back, traceability into who assembled the container, etc.
Application centric - Docker is optimized for the deployment of applications, as opposed to machines.
Docker - Shippable felt - was an idea whose time has come. We knew we just had to support dockerized containers. And in Oct 2013, that is just what we did! Full support for continuous integration with Docker.
As we celebrated Shippable’s first year in December 2013 (and partied), we had our epiphany -
“It’s not enough to just run builds and tests on docker at the backend. We need to enable E2E scenarios that leverage docker’s strengths. This is going to revolutionize the way software is developed! And Shippable itself needed to be built on docker to demonstrate how a docker based development workflow helps us ship quality code much faster.”
The Shippable team sailed full steam ahead …..with the result that we are launching a fully docker-ized version of Shippable this weekend - we not only support docker … we are built using docker too! More on that in a couple of days...
The coming months promise to be exciting times for us. We finally have a base platform we are completely confident about. Now it’s a matter of building on it - and we will do exactly that in the Techstars spirit of do more faster.