This is the first of either one or many (depending on your feedback) guest blog contributions from people who are not named Long Zheng, step two of my five-step process to world domination. Today’s guest post is by David Burela, a team member of my Imagine Cup team and developer in Melbourne Australia. I recently gave him a Windows Azure beta invite code and asked him to review Azure as a developer.
Windows Azure is a new “Operating System” that Microsoft announced at PDC. They are marketing it as an “Operating System for the cloud”, but what does this really mean? To understand what Azure is and how it is different from Windows Vista you need to know a bit of background on recent computing trends.
Cloud computing – A background
Gone are the days of companies hosting their own servers in a data centre, with all of the associated costs of maintaining the physical hardware and worrying about backups. Instead it is more economical to have companies like Google, Amazon or Microsoft create giant data centres who then lease computing power to us. These companies don’t purchase individual servers, or even servers by the rack, instead they purchase servers by the shipping container! When a company purchases one of these shipping containers, all they see from the outside are 3 holes: one for power, network and water cooling. This allows them to rapidly add extra computing power and expand data centres with a minimum of fuss. Due to the massive economies of scale that these data centres get, you are now able to go to companies like Amazon and GoGrid.com to rent entire virtual computers for around 10 cents an hour. The possibilities opened up by being able to very quickly and cheaply get processing power are immense. A simple example being an e-commerce website, here a company would usually have to purchase multiple servers to host their website to handle peak load, but will have 80% of their servers sitting there idling. Instead of having to outlay a lot of initial capital on these servers, the same company can instead rent a single server from one of these websites, and scale it up as demand increases (like the holiday season). This way they are only paying for server time they actually need.
However with this cheap raw computing power comes complexity. Now developers need to manually turn these virtual servers on, set up load balancers, install applications and maintain security patches, while also updating their code and websites across multiple servers.
Cloud computing – Azure
Windows Azure simplifies and automates the concept that Amazon started with. Azure provides a “compute fabric” upon which you can run your applications. An example being the e-commerce website again, we’re not concerned with which server is actually doing the processing. All we care about is that we have our code and require a computer to simply provide the processing power. With Azure a developer packages their code, deploys it to Azure and states how many servers should run it. Azure will handle all of the details such as provisioning servers to run the application, load balancing clients, security patches as well as a more seamless way to upgrade your applications.
Microsoft has a very short film clip that helps to explain the concept (under the old code name). http://au.youtube.com/watch?v=NZO9YE1ZvqE
But why is this an “Operating System”
Look at what Windows Vista does. When you run an application you don’t need to tell it to set aside bits of memory, interact with hardware, how to load files from the hard disk, etc. Azure has a similar concept, but instead of handling a set of hardware and files for you, it is handling servers and your application. As mentioned before it will automatically provision servers, ‘network them’ and set up things like load balancers. You are able to automatically scale the computing power that you need up and down on demand without you needing to understand how it is working under the covers. Azure will hide all of the underlying complexity from us like a desktop Operating System.
Review from a developer
It works, and it works well. Azure provides a LOT of functionality ‘out of the box’. The most important being the automated scaling of computing power as needed. But it provides additional core functionality such as virtually unlimited online file storage and simple database storage. This makes creating online photo galleries or massive online sites cheap and easy to setup. The extremely low cost of creating massive websites will level the playing field, anyone will be able to create the next MySpace or YouTube without requiring a massive outlay of money at the beginning to provision hardware in a data centre.
Advanced services are layered on top of the core Azure services, such as highly scalable relational databases, analytics and reporting. The costs of getting enough computing power required to do complex analysis over massive datasets will now fall dramatically, this will again open up another realm of possibilities for companies.
Live services are also available to all Azure applications, providing a rich set of tools and services that any developer can easily hook into to provide functionality like mapping, instant messaging, searching, etc.
The best part about Azure is the development experience. If a developer is able to currently write .Net applications, such as ASP.Net websites, then they can take their skills and start working with Azure immediately. Many ASP.Net websites will work on vista immediately when included into a new Azure project, only slight tweaks may be needed. As a .Net developer myself, I just needed to learn the basic concepts of what Azure does (a 20 min research exercise), I then had my own Azure application created and running without any additional tools or training.
But to get the most out of Azure, applications will have to be architectured to be massively scalable from the start, which is a whole topic on its own.
Azure is currently only in developer preview with limited access being handed out but with it have released enough functionality to let us see what Azure is and how to develop with it. However they haven’t released much additional information about what we will see over the next year. Of course they have said that lots of additional functionality will be released, but we will have to wait and see.
From a programmer perspective, Azure allows existing .Net developers to very quickly jump into this whole ‘cloud computing’ wave without needing to worry about the underlying technology as Microsoft is handling all the complexity for us.
From a business perspective, Azure will allow companies to reduce the running cost of their existing websites. Additionally, it will enable business applications to be cheaply and rapidly created to quickly respond to changes in the market.
Azure will be released commercially next year. It will be interesting to see what wave of new applications this technology will enable. A pair of programmers created YouTube but had growing pains when trying to expand. Imagine what can happen now that many more developers will be able to get over this stumbling block!