We are constantly seeking to improve not only our media services platform, but also the processes by which we innovate and evolve the enoding.com feature set. Historically we followed a more traditional release model. Gregg, our CEO (Chief Encoding Officer), kept a list of improvements, and they would be rolled out every 6 weeks or so in the form of a version release. Our development team would build out all the components of the release, test rigorously, and publish the new features when ready. This worked well for a long time, but certainly had it’s drawbacks. First, if a particular feature needed to be prioritized, it still had to wait to be a part of an upcoming release. In addition, it was harder to segment new features; meaning a new release was all or nothing, limiting to a subset of users, or a subset of features was not possible. Enter Continuous Integration (CI). CI is the practice of integrating updates to your codebase several times a day, coupled with aggressive unit testing, as a component of test driven development and an Agile Development model. The use of a build server ties it all together by running a unit test every time the codebase is updated and reporting the results to the development team. The overall Agile concept is to break everything down into small manageable tasks, allowing for closer controls on progress, bottlenecks, and overall quality.
As you might imagine, CI is a perfect fit for a cloud based media services company. Moving to an Agile Development model and leveraging CI has reaped many benefits for Encoding.com. First, we can release new features at any time without needing to wait for major release. Second, we have complete and granular control over each feature and who can access it. That means we can release a specific feature to a subset of users as well as pull back a specific feature when needed. This flexibility allows us greater control and a far more aggressive release schedule, which ultimately benefits you, the customer.