Friday, 15 June 2007

Habbo Hotel: Scale-out from Finland -- "everyone can play"

A good three years ago at the Linux Summit 26-27.2.2004 in the Finlandia Hall in Helsinki, I gave a presentation on "Why MySQL?" together with Osma Ahvenlampi, CTO of Sulake Labs, the creators of Habbo Hotel, one of the world's largest teen online communities present in 29 countries.

Now, browsing the web pages of COSS, the Finnish Centre for Open Source Solutions, I ran across their slide repository and specifically Osma's slides on the topic of "Infrastructure for Innovation, which is all about scale-out and describes their site which is built with MySQL as the database.

Sulake Corporation was founded May 2000 in Helsinki, and is an interactive entertainment company based on online communities and casual multiplayer games. Their tagline is "everyone can play", which they expand in their credo "Habbo provides the most fun and creative hangout packed with friends and excitement".

Now for the slightly more technical overview:

  • Global infrastructure: 4 data centers, 29 countries

  • Distributed game servers

    • Over 300 live CPU cores

    • 20 MySQL servers

    • Capacity for 130,000 concurrent users

  • Self-developed game server technology

  • Director/Shockwave based in-browser game client

The technology they build upon is the Linux-Java-MySQL stack, mostly with Linux servers, some Solaris. The server software Java 2 Standard Edition, with transaction processing using J2EE / JBoss. Look at Osma's slides for more buzzwords: Hibernate, Spring, Jakarta Commons, EHCache, ICU4J, DOM4J, JMock, JGroups, JS Rhino, Junit, Sitemesh, Webwork...

Habbo runs on MySQL 5.0 with terabytes of data. Sulake claims they upgraded since they found 5.0 to perform better with complex queries, and their setup now includes the 5.0 features of federated tables and SQL views. Most interesting is probably their unique scale-out solution, with multi-master, backup+analytics replicas, averaging 10000 events / second. The nature of the online community application is such that they get an order of magnitude more write-intensive database load than traditional Master + Slaves applications. Distributed replication is used for online backups, where Ibbackup and filesystem snapshots minimise availability impact. Data volumes aren't exactly modest, with over 10 gigs of transaction logs per day.

Go Habbo! Go Sulake! And go Osma!

No comments:

Post a Comment