BBC’s New Infrastructure: Java and PHP

Like most organizations the BBC has its own technical ecosystem, the BBC’s is pretty much restricted to Perl and static files. The good news is that they are planning to build a new infrastructure for bbc.co.uk and roll out a new Identity platform on it. This was announced on May during the XTech 2008 presentation that took place in Dublin, where BBC’s plans to reinvigorate its technical platform were revealed.

Why is the BBC doing this?

  • Gradual evolution of the web.
  • Antiquated web platform.
  • Inflexible / proprietary architecture.
  • Single Sign-On (SSO) was unable to adapt.

Architectural principles

  1. Each project must have a clear customer and deliver a real benefit.
  2. Don’t Repeat Yourself (DRY). Life is too short to spend your time re-inventing things.
  3. Be as simple as possible. Just do what we need to do now.
  4. Be as open as possible. Assume that all services can be accessed from outside the BBC, by default.
  5. Start simple, then iterate. Build the smallest thing you could possibly need, deploy it, then build applications on top of it. Think building blocks, not monoliths.
  6. Don’t optimise prematurely. The service might not grow the way we think it will.
  7. Build to scale. Think stateless, think content delivery networks, think database resilience.
  8. Test often. So you know when you need to optimise. So you can maintain your code. So you can maintain your platform.
  9. Evolve. Teams, systems, support structures. The platform. These principles!
  10. Let it die. Be prepared to turn your system off, or change it unrecognisably.

Architecture

Benefits of using the Zend Framework

  • Zend Framework’s extensive unit tests, required for all contributed code, mean that exact situations can be recreated and problems diagnosed and pinpointed.
  • The high-quality implementation of the MVC web application architecture provides a foundation for all Zend Framework applications.
  • Internationalization (i18n) and Localization (l10n).
  • Session management.
  • Ajax support.
  • Security.
  • Documentation.
  • Zend Framework tools (Wiki, Issue Tracker, VCS, Mailing List, etc).
  • A vast community of talented developers.

XTech 2008 in Dublin

Presentation from XTech 2008 in Dublin, about the BBC’s plans to reinvigorate its technical platform and to create new user management service.

References

About these ads

23 thoughts on “BBC’s New Infrastructure: Java and PHP

  1. Since you mention that PHP is used for the “presentation layer” and the backend is in Java, many of the benefits you mention of the Zend framework will actually be done in Java:
    1. Authentication
    2. Security
    3. Web services
    4. Database services
    5. i18n, l10n
    6. Unit testing
    etc, etc

  2. the “tech refresh” has been on the cards for a while – should definitely help improve things overall ; just wary of internal tech politics and continued new development on the legacy platform. there are a number of “legacy oriented techies” there with significant clout to make this “tech refresh” a bit of a pain

  3. Pingback: Knowtu

  4. Hi Federico, thanks for taking an interest in our work!

    To be specific we aren’t using any database or authentication features from Zend Framework, the idea is that all database access happens from the data services tier (mostly in Java, as you point out).

    Also we will be doing most of our Ajax support using an in-house Javascript library called “Glow”, but we are very interested to see the announcements re Zend Framework and Dojo Toolkit, and are following those developments closely.

    As for the “legacy oriented techies”, we figure that if we make the new platform easy enough and powerful enough, they’ll *want* to move! And we’re lucky to have management well and truly behind this project, so we should be okay :-)

    Once again, thanks for taking an interest!

    Brendan Quinn
    BBC

  5. Hi Brendan,

    Yes, what I meant is that ZF’s MVC architecture provides ajax support, for example, the AjaxContext helper that facilitates returning responses to XmlHttpRequests. Keep in mind that thanks to Zend Framework’s use-at-will architecture you can use any JS library (jQuery, Prototype, Dojo and/or Glow). I’m using ZF with jQuery for example.

    Thanks for the update :)

  6. Pingback: Zend Framework in Action

  7. Nice article. I’m a real java and Spring addict, but when it comes to creating webpages, i dislike JavaServerFaces. I also have some php solutions running, and I’ve discussed several times using php for the frontend in favor of jsf.

    However, to convince co-workers and management, this article is a major step forward! So, here’s my question: is there more in-depth information, code examples, performance measurements, server-setup(loadbalancing, tomcat? j2ee appserver?) , integration testing, etc.. available about the SpringMVC-php implementation at BBC?

  8. Pingback: ZF-Blog.de

  9. Pingback: Yenileyenler

  10. Pingback: Making the change « I am mikek’s Blog

  11. Pingback: Top Posts 2008

  12. Benefits of using the Zend Framework

    Zend Framework’s extensive unit tests

    The PHP community appears to have a very naive notion of what constitutes a mature testing environment.
    If you look at the discussions that has been going on in the Django and Rails communities you’ll a rich dialogue on Test Driven Development, Behaviour Driven Development, regression testing, integration testing, mocking and stubbing, brittleness of tests, fuzzers, exposing code complexity etc

    The high-quality implementation of the MVC web application architecture provides a foundation for all Zend Framework applications.

    A dubious claim IMHO. Zend is certainly feature-rich but that does not necessarily equate with being ‘high-quality’. The code I’ve been exposed too shows fails to show a proper separation of concerns, numerous anti-patterns all stemming from the decision not to encourage or enforce good application design

    Documentation.
    Zend Framework tools (Wiki, Issue Tracker, VCS, Mailing List, etc).

    Django’s documentation is vastly superior and Rails has many more screencasts and video tutorials than all the PHP frameworks put together.

    A vast community of talented developers

    A social observer might comment that the most talented ones have moved on to Python or Ruby. At the last Google Hack Day in London, Ruby was the language of choice amoungst the developers there (67% is the number I recall)

  13. Hi Anthony,

    Don’t forget that languages come and go, the secret is not to allow your time to be cluttered up by things that don’t make a difference, like arguing about a scripting language or a framework.

    I think BBC made an excellent choice by choosing LAMP (Perl, Python, PHP) and Java, instead of Ruby. But that’s just my opinion, of course.

    If you feel so strong about this, ask the sys admins at the BBC to port all their perl and python scripts to ruby :)

  14. – The PHP community appears to have a very naive notion of what constitutes a mature testing environment

    Sorry, I didn’t catch your name. Have you ever written a unit test or contributed to an open source project before?

    Zend: http://tinyurl.com/mjwazd
    Django: http://tinyurl.com/m38m3o

    You are more than welcome to join us.

    – Rails has many more screencasts

    Screencasts? We are programmers, not designers ;)

    – A social observer might comment that the most talented ones have moved on to Python or Ruby

    Here are some interesting facts:

    .. Linux owns over 75% of the server market, and Linux Engineers preferred scripting language is now Python.
    .. According to the TIOBE Index, PHP is still the most popular dynamic language.
    .. Java and C are the most popular compiled languages.
    .. Visual Basic is still more popular than Ruby.
    .. Groovy and Grails is better for Java developers.

  15. Ben,

    If you think units tests are the be all and end all of testing you are expressing an immature testing philosophy.

    Screencasts and conference presentations turn beinners into journeymen. The lack thereof in the PHP community possibly explains the predominance of script kiddies.

    Quantity != Quality.
    Glad you agree though that sysadmins see Python as a more mature language.

    Tony

  16. Programming is about problem solving. Good programmers are usually familiar with more than one language, platform, process, methodology, OS, compiler, framework, device, editor and/or design pattern.

    Sysadmins that use Perl instead of Bash, Python instead of Perl. Web developers that use Ruby instead of PHP, or PHP instead of Python. Software Engineers that use Java instead of C#, or C# instead of C++. Flash or Silverlight? iPhone or Android? Mac or Linux? Debian or Red Hat? GNOME or KDE? Apple or Microsoft? Gosling or Hejlsberg? Wall or Van Rossum? Ritchie or Stroustrup? Vi or Emac? ActiveRecord or DataMapper? Gateway or Repository?

    Life is too short to argue over something that nobody can be right about.

  17. Federico,

    The Forge technology stack is a better than the situation that currently exists, and there are great benefits in adopting ZF if your eco system consists of a mix of hand-cranked pages, XSLT, SSIs etc, stitched together with Perl and C voodoo.

    But I’m also of the opinion that ZF is something akin to a solution in search of a problem. Or worse so desperate at having the flexibility to meet the needs of as many developers as possible that it’s a jack of all trades and master of none.

    And apologies for again having to point out the naive notion that just having unit tests is a good enough solution in a modern application framework.

    I haven’t been an active member of the PHP community for a number of years but my initial reactions on returning are that it hasn’t evolved much in the time I’ve been away. I think there are plenty of great ideas from Python/Django, Ruby/Rails, Smalltalk/Seaside and others it could adopt but seems reticent to do so.

    Tony

  18. Tony, all the people I worked with, including contributors to Django, Zend, Symfony, PureMVC and Rails are very intelligent. Perhaps we had different experiences?

  19. cool, got here by searching for “bbc infrastructure”. if bbc is using zend framework, then i’m going to try it. looks very promising. thanks!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s