Don MacAskill gives a really interesting bird’s eye view into how their service at Smug Mug is set up. If you’re not familiar with SmugMug, it’s a for-pay image hosting site that’s profitable in a Flickr world so they must be doing something right, right?
I find his post especially interesting because I think the multiplayer gaming infrastructure of the future is going to be on these Cloud-type services. Not just static data like Valve’s new Steam Cloud, but dynamic real-time multiplayer services that you can “just throw another box to” to handle load peaks, etc.
Their approach to “worker” instances I like a lot – they are completely stupid when they are born, but once started they execute a small script that fetches their intelligence. Brilliant! Updating your core software is dead simple – update it once on your mother ship, and all your worker instances will be up to date automatically when they are born.
This is in contrast to packaging your machine instance with all the necessary software to start work immediately, which limits you to the role that you’ve packaged it for. Also, you don’t have to create and test new AMIs every time you want to update… have you ever made one of these things? – it’s hard! On a scale of one to ten I would rather take a fork in the eye than create, upload them and test a new instance.
The workers in the system Don outlines are isolated and receive their intelligence and work from a central server, but what if you were to take the advantages of an Erlang based system – immediate awareness, concurrancy – and throw it into the equation? Veeeery Interesting….