Your mission, should you choose to accept it: design, build and administer a platform for hosting a complex multi-purpose content-centric website.
Let’s imagine some high-level requirements for this platform:
- It has to support the kind of traffic that put it in the worldwide top 20.
- It has to support static and dynamic web content, including simple and complex web applications.
- It has to support audio and video and other such multimedia.
- It has to support many devices and many languages.
- It has to be evolvable, running for the next 10 years without major/expensive rework.
- It has to host the sites and applications produced by a large community: dozens of teams and hundreds of developers with content produced by thousands of professionals (and millions of users).
- It has to provide a full production pipeline to those teams.
- It has to be efficient.
- It has to be budgeted, with all significant costs financially justifiable.
When designing this platform, you’re expected to evaluate all options and then make clear choices (on hardware, software, architecture, programming languages, release process, etc). Then, make reasonable attempts to standardize those choices within the community and provide training, though you should also retain the flexibility to respond to changes in requirements and provide migration paths for legacy sites and applications.
How would you tackle this challenge? Where would you start? What choices would you have to make first, and what choices would you defer until later? What would you buy, what would you build? What kind of team would you need?
I intend to start writing some blog posts giving possible answers to those questions. Be aware though: usually when I have such intentions I’m not so good at following through. For example I never published part 2 for serious PHP.