InCrowd engineering has recently completed a move of our servers and process into the “cloud”.

We could have chosen to simply take our existing deployments and put them on Amazon servers, but we’ve instead taken the route of using a PaaS (Platform-as-a-Service) called Cloudbees. Like another well-known PaaS, Heroku, Cloudbees adds value to Amazon’s offerings by adding an API and website that enable you to provision servers and deploy at the click of a mouse. Also like Heroku, Cloudbees manages your application servers and databases for you. Unlike Heroku, and still pretty uniquely, Cloudbees provides a hosted Jenkins installation.

Jenkins, whose logo is a butler, is a bit of a Swiss Army Knife of software development. People use it for all kinds of things. At heart, though Jenkins is a system for executing jobs and reporting on the execution of those jobs. Specifically, we use it for building our JVM projects and deploying them to the appropriate cloud instances.

We’ve hooked Jenkins up to our source repository on GitHub so that when we push a change to the QA branch Jenkins pulls the new code and kicks off a build. If the build completes successfully Jenkins pushes the build to our QA test site. That push in turn triggers Jenkins to initiate some Selenium automated UI tests using the Sauce Labs plugin for Cloudbees. We can then read the results of those tests and view videos of the tests if necessary.

We use these UI tests as a kind of smoke test: if they fail it’s a good indication we have a bad build and should not proceed to full testing.

InCrowd’s move to the cloud has enabled us to make important improvements to our development, testing and deployment processes, which save us a lot of time and enable us to iterate much more quickly on the features and bugs we’re working on.