Tools and Methods for Multiple Weekly Deployments

Building an advanced bidding and reporting platform doesn’t just happen overnight. Our development team is constantly working on updating and improving the platform to give our users the best possible experience.

You’re unlikely to notice, but Koddi releases updates to the application two to four times each week. Everything from small bug fixes to entire new features are being worked on simultaneously. Keeping up with our rigorous release schedule can seem like a daunting task, but in this post we will outline how we are able to rapidly grow the application while keeping everyone sane.

Git and Github

Version control is critical whenever you have a large team working on the same code base. At Koddi, we utilize Git to make it easy for everyone to work on their feature without worrying about touching someone elses enhancement. Each developer creates a branch off of the main code base, adds their feature, and then merges that feature back into the main code base once completed.  Git manages any conflicts or errors caused by multiple developers working on the same file.

 github-octocatFor remote storage of our code base Koddi uses GitHub.  In addition to keeping the application code off site and secure, GitHub has features that help us streamline our workflow. Issues, bug fixes, and enhancements request are all managed through our GitHub repository. Each new feature is assigned a number and is tracked throughout the development process. Other members of the development team are able to watch and comment on the feature as the idea is implemented and is also serves as a great documentation for the feature as it grows. For an in-depth  view of how we use GitHub, check out this  blog post. 

Testing and Building

With so many changes happening all at once ensuring that application is stable and working as expected is nearly impossible to do manually. At Koddi all testing is automated and each test is checked on every code change. At the time of this post over 2000 tests are ran and roughly 5000 scenarios a checked to ensure the application will behave as expected. Once all features are completed, reviewed, and tested, a new release of the application is generated and sent to our staging environment for the QA team to review.

Deploying

Koddi employs multiple servers in order to keep the application running smoothly. Trying to  deploy to all the servers manually is prone to errors and servers being missed. We use Fabric to help automate this task. With our Fabric implementation we can push a new version of Koddi to all of our servers with two commands:

$> fab deploy_web:{version number}
$> fab deploy_queue:{version number}

Fabric also allows us to run common administrative tasks on all the servers, which helps us maintain a common server configuration.

Developing and maintaining a large scale application is no easy task. The tools and programs discussed above help our development team by taking some of the burden off their shoulders and letting them focus on growing Koddi.

Categories
Technology