Continuous delivery at FutureLearn
Developer Tom Ward discusses how we use continuous delivery to quickly get improvements to the FutureLearn platform into the hands of our users.
Just over two weeks ago FutureLearn went live offering its first 20 free online courses. For the developers though, this wasn’t a big release, just the latest of several hundred tiny releases since the first lines of code were written back in April. That’s because we’re using, continuous delivery to get work done by the delivery team into the hands of our users as quickly and reliably as possible.
So what is continuous delivery? To help explain this, I need to explain the problem we’re trying to solve.
In an active project like FutureLearn, there’s a whole delivery team of developers, designers, UX experts, project managers, product owners and others. They’re constantly working together to add features, fix bugs and generally improve the product. But once the code is written, the design enhanced, or even the copy changed, something needs to happen to make this work available to our users. We call this deployment. It can include altering databases, adding new services, updating code, publishing new graphics and much, much more.
The traditional approach to all this is release-based deployment, where all the work done over a number of weeks is bundled up and deployed together. There’s a technical problem with this – the bigger a deployment, the riskier it becomes. There’s also a lot of planning and preparation required for each release. For me though, the biggest disadvantage of this approach is the time taken for our work to get to our users. Once our work is complete, we want our users to benefit as quickly as possible, not weeks or even months later.
At FutureLearn we use continuous delivery, which means we try to deploy every piece of work to our users as soon as we possibly can. That means deploying small changes all the time. To support this we have to ensure that deployments are easy, automated and fast. We have to write (and run) automated tests to support each change we make which takes more effort, but we avoid long planning and preparation phases required before each release.
The benefits are plentiful, both to us as a delivery team, and to our users. Since we went live on the 18th of September we’ve made over 50 deployments, improving the experience for every learner. Things we’ve improved include letting learners turn off email notifications, decreasing page load times, and tweaking the copy in emails we send. These may be small changes, but they are all available now. We’ve hundreds more similar improvements planned over the coming weeks.
Just as importantly, these changes are often a direct response to requests from real users. If you send us feedback either through the feedback tab on the site, or by emailing email@example.com, we will use that information to improve the site. And with continuous delivery, we can deliver those improvements quickly.