Wow(za) That's Fast!

More likely than not, the reason you're visiting this website is to watch one of our awesome videos. You open the site in your browser or using one of our apps on your mobile device and sift through the hundreds of videos available until you find the one you want to watch. You click the "play" button and sit back and learn some Drupal. But what happens after you hit that play button, and how do all those bits and bytes get transferred from our servers to your screen? It's probably not something you actually think about or worry about too much unless it's not working. The classic case of no one says anything about it unless they are having problems.

Throughout the lifetime of this site we've actually used a handful of different mechanisms for delivering our video content, each one with their pluses and minuses. One of the things we routinely struggled with is the fact that we're all developers at heart and wanted to have the same level of control over our delivery platform as we did over the HTML and everything else on the page and we just couldn't get that using 3rd party solutions. So, just before DrupalCon Denver (Literally 'just before'. I did it while sitting on a couch in our apartment in Denver.), we threw the switch and transitioned our behind-the-scenes video delivery system to our own home-grown platform. And the best part is that no one really noticed!

We're now using a system built on top of Wowza Media Server and Amazon EC2. Going into this, I had very little idea how to use either Wowza or EC2 so it's been a learning experience getting both of these things working and creating a system that we feel confident in. Without going into too much detail, we've currently got a handful of EC2 m1.large instances running the Wowza AMI with a few minor tweaks at EC2 data centers around the globe. We're then using the EdgeDirector / geoDNS service in order to route traffic based on a user's physical location. It's like our own mini CDN. And so far it's been working great!

The big benefit is that this new setup provides us with far more control when it comes to changing settings and configuring things in a way that is conducive to our specific needs. Prior to switching to Wowza/EC2, when someone would complain about video playback problems we felt like our hands were tied and that we had no way to help solve those problems other than ensure they were running the latest versions of software and that the had sufficiently speedy internet. Now, however, we have the ability to make changes to our delivery system based on your feedback.

For example, when we were getting complaints from users in eastern Australia that our video playback there was less than impressive, we were able to do a bit of research. With the assistance of some of those users who were willing to run a trace for us, we discovered that although Singapore is geographically closer, it is fewer hops and less latency to connect to California. So, we re-routed some of our traffic and are starting to see improvements for some of those users and continuing to work out the best possible routes for others. This is something we simply would not have been able to do previously.

It's not perfect by any means and we're still learning the ins and outs of running our own streaming media servers. But, so far we're really digging it. The level of control and transparency that we have is both exciting and little bit daunting. But like the rest of you, we jump on any opportunity we get to learn something new and love being able to improve the overall Drupalize.Me experience while doing so.

Now that the dust has settled a little and we've had a chance to step back and take a look at documenting and really testing our new setup in a real-world scenario, we look forward to sharing more details about what goes on behind the scenes after you click the play button on your favorite Drupalize.Me videos.


i like your blog very much i really appreciate your thinking, thanks and keep sharing.

Add new comment