I’m pleased to announce that the winner of the new CloudApp() Australian side-bet is an application called Traffic in the Cloud; built by Brisbane-based developer, John O’Brien from Soul Solutions.
Included below is John’s description of Traffic in the Cloud which gives a good idea of the architecture of his solution and the client and cloud technologies he used:
“Traffic in the Cloud brings the context of location to webcams throughout the world.
Powered by Silverlight DeepZoom the user is presented with a seamless, slick interface to browse and discover what is happening right now in their city or anywhere around the world.
An Azure worker process is actively polling webcam images submitted to the application at desired intervals. The images are composed into an optimised sprite to bring movement and importantly, some perspective to the temporal images. Even though the original source of the webcam images do not provide it, this application shows the last ten frames from each camera as a highly optimised animation. The public can add and then manage their webcams by authenticating with LiveID and completing a simple form. A moderator must approve the submission before it goes live.
LiveID provides a secure mechanism to identify a user and leverages Microsoft’s user management tools while never storing or dealing with any personal details in the application. The maps are provided by Bing Maps for Enterprise and all the Silverlight controls used have been made open source through the DeepEarth project on codeplex.
Each camera is stored in one row of an Azure Table, each sprite is stored as one blob in Azure Blob storage and is publically available. The site runs from an Azure Web Role, the custom domain name simply points back at Azure. One Azure Message queue is used to manage the worker process.
While Azure worker processes typically process jobs as quickly as they can, here we are dealing with something a little different, time. An elegant solution was found: A single queue of all image jobs to be processed, a worker is both a consumer and a producer. Essentially the worker takes the job off the queue, processes it and then puts the next job on the queue before confirming it has completed the original job. Each job contains a timestamp for when the job should be executed; if it is taken off the queue too early the worker process puts it back. This application has the potential to scale to host every public webcam in the world, or it could go nowhere. Only a cloud solution that has the ability to scale beyond the limits of a single server and even a single web farm while only requiring you to consume what you need at any moment can allow this.
By using powerful and scalable services like Bing Maps, LiveID, Azure Tables, Blobs, Workers and Web roles the application delivers an impressive user experience while itself being small, elegant and single purposed. "Traffic in the Cloud" would simply not be possible with Windows Azure. The slick Silverlight interface brings a powerful user experience to a scalable, high performance application making use of many Windows Azure features.
I hope you and your friends enjoy the application and add your local webcams to share with the world.”
Congratulations John! Go and check out the winning entry at http://tc.soulsolutions.com.au/ hosted by Windows Azure.