« Previous | Main | Next »

Under the bonnet of BBC iPlayer v3

Post categories:

Marina Kalkanis Marina Kalkanis | 15:00 UK time, Monday, 28 June 2010

Do you want to know what TV and radio programmes your friends are enjoying? Want to track what you've played on iPlayer and keep that history wherever you are? These are just some of the cool new features that we've added to our latest release of iPlayer that's now in public beta. By integrating the site with BBC iD and other BBC services, we've put the emphasis firmly on personalisation.


So how have we done it?

To start with we've split iPlayer into a front end application written in PHP and a bunch of back end services. Our PHP layer is designed to be infinitely horizontally scalable. We don't maintain state or persist data through the PHP layer. This allows us to easily scale out the iPlayer application onto new servers and into new data centres as our traffic grows.

On the backend we use a combination of Java and Perl. The programme data publishing services have evolved from those we used for iPlayer v2. This is a Perl web service engine we call Dynamite, written using DBIx::Class and Catalyst. It provides a large range of endpoints allowing application developers to pick the feed best suited for their device. We return XML or JSON, structured as iPlayer Object Notation (ION). ION is used not just by PC iPlayer, but across the BBC on any website needing up to date programme metadata. ION and its underlying data structures rely on a constantly evolving and reactive caching strategy.

The social networking services are developed to the OpenSocial 0.8.1 RESTful API specification and built on the Shindig code-base.

The new programme play and favourites tracking service which we call FUSE is a Java web service using Spring and Hibernate. We chose to stick with mySQL for the user activity database because this data is shared between FUSE and Dynamite.

Search and recommendations are also split out as separate services. This allows us to continually refine and improve these with minimal or no impact on service clients. It also allows us to use the features we've developed for iPlayer across other areas of bbc.co.uk.

Finally there is the issue of scaling and performance. We aim to serve all the iPlayer pages even in our peak traffic periods in under two seconds with the majority of requests served in under one second. Our site needs to be available 24 hours a day, 365 days a year. We minimise downtime by ensuring our site can remain up and active even when we lose 50% of our capacity. We implement safety modes in the service that switch off low priority activity when the service comes under load. Non-essential activities are handled asynchronously by message queues. Using Memcached we cache serialised objects and collections ready for quick reads.

We have only just started on the journey of personalising iPlayer and have lots of cool features coming along. Look out for personalised features appearing on the other iPlayer platforms including tablets, TVs, smart Phones and gaming consoles.

Marina Kalkanis is Senior Technical Architect, BBC iPlayer.

Read other recent posts on BBC iPlayer:


  • Comment number 1.

    Been using the new iPlayer for a few weeks now. Have you made any assumptions around what kind of impact the recommendations will have? In my own usage, the recommendations act as a discincentive to explore what's on. Whereas I used to encounter lots of other shows on route to a programme, the recommendations make many of these journeys unnecessary. This is partly because the recommendation engine is good at picking up exactly what I would have watched anyway. So I wondered, what impact do you think the recommendations will have, is there a difference between heavy and light users and how can you measure this - when you can't align previous viewing to the new BBC ID.

  • Comment number 2.

    Any chance of making it work with interlaced content or >25p or is it never going to support those? Is picture quality low down on the list?

  • Comment number 3.

    There was supposed to be a option to personalise by selection within a 'programme' for social networking. I suggested that certain programmes eg sequences of classical music should have this inserted by pre production to identify were a work started or a movement started. Sequences are two to three ours (and one even longer on R3.

    More generally should there be a search within feature.

  • Comment number 4.

    Nice. You're using lots of Free Software and open-source software to deliver iPlayer, while blocking access to it by Free Software clients. For shame.

  • Comment number 5.

    Any chance of visiting the Help messageboards and answering some of the problems raised there. It irritates me that someone doesn't respond in a timely manner to questions. Additionally where are the acknowledgement of e-mail problem programme submissions.

    There really should, especially with the seven day window, be a much more coherent and responsive attitude to the messageboard and email contacts.

    There ideally should be responses within three hours during business hours and before midday for overnight submissions.


More from this blog...

BBC © 2014 The BBC is not responsible for the content of external sites. Read more.

This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.