Under the bonnet of ³ÉÈË¿ìÊÖ iPlayer v3
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 . By integrating the site with ³ÉÈË¿ìÊÖ iD and other ³ÉÈË¿ìÊÖ 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 ³ÉÈË¿ìÊÖ 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 0.8.1 and built on the 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, ³ÉÈË¿ìÊÖ iPlayer.
Read other recent posts on ³ÉÈË¿ìÊÖ iPlayer:
- Introducing coloured subtitles on ³ÉÈË¿ìÊÖ iPlayer
- ³ÉÈË¿ìÊÖ iPlayer on the iPad update: live streaming of World Cup
- ³ÉÈË¿ìÊÖ iPlayer press pack for May 2010
- Audience research and ³ÉÈË¿ìÊÖ iPlayer
- Your feedback on the iPlayer beta
- Going Social with the ³ÉÈË¿ìÊÖ iPlayer Beta
- Behind the scenes of ³ÉÈË¿ìÊÖ iPlayer
- ³ÉÈË¿ìÊÖ iPlayer on the iPad
- ³ÉÈË¿ìÊÖ iPlayer press pack for April 2010
- Introducing the all new ³ÉÈË¿ìÊÖ iPlayer (This time it's personal)
Comment number 1.
At 28th Jun 2010, Alex wrote: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 ³ÉÈË¿ìÊÖ ID.
Complain about this comment (Comment number 1)
Comment number 2.
At 29th Jun 2010, HD wrote: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?
Complain about this comment (Comment number 2)
Comment number 3.
At 29th Jun 2010, cping500 wrote: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.
Complain about this comment (Comment number 3)
Comment number 4.
At 29th Jun 2010, Paul Jakma wrote: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.
Complain about this comment (Comment number 4)
Comment number 5.
At 5th Jul 2010, KernowChris wrote: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.
Complain about this comment (Comment number 5)