The new BBC mobile Homepage is a flexible ‘taster menu’ of the BBC's website. I’ve been leading the development of the new Homepage and in this post I explain some of the technical design decisions made during the initial phase of the project. Please note that some of the language in this post is intended for readers with an interest in software delivery.

The new homepage released last week is the first version of a product that will be continuously improving. Many advanced features are still being developed, such as user customisation; these will be progressively integrated into the application through a process known as Continuous Delivery.

Customisation in particular is one future feature that drove the technology decisions made early on in the project. The new Homepage will allow our audience to change the content shown to them based on their preferences and location. To achieve this we require a flexible product that can handle high load with a large number of variants of the page - a different variant for every user's preferred configuration.

A new platform

We chose to move away from the Forge platform (a web application development platform that is hosted on physical servers using a recommended set of technologies such as PHP and Java) to a cloud infrastructure. This allows us to respond to demand by adding servers and save costs in quiet times by removing servers.

This new platform also allows us to add features much more quickly. This is partly because our developers now control the deployment process rather than a centralised operations team. Instead of releasing production code every two weeks, we are now able to release many times a week. As our process improves we expect to be able to speed up our release cycle even further.

This continuous delivery program empowers developers to act in a 'DevOps' capacity - as well as building the application, we also take charge of deploying, maintaining and supporting the infrastructure, in and out of office hours.

A new language and framework

Another benefit of the new platform is that it makes it easier to use languages and frameworks that best suit the needs of the project. Rather than using PHP or Java (that was the requisite of the Forge platform), we have chosen a non-blocking framework, NodeJS with the Express framework . This allows us to serve more simultaneous requests, increasing the performance of the application. As a result, we can serve multiple variants of the page without needing to rely on HTTP caches such as Varnish; we cache each module on the page in Redis and construct the page using the cached fragments instead.

NodeJS was chosen from a list of candidates that included Scala and Clojure, as it performed well under load tests during a prototyping phase. Another benefit is that Javascript is well known to Web developers, and because both our server side and client side now utilise it there is less need to context switch when developing the product.

Taking a data driven approach

The Homepage is designed to surface content from all over the BBC – we do this in two ways. The large image-led promos at the top of the page are created by our editorial teams in a traditional CMS called iSite 2.