Windows Azure is a Microsoft cloud computing platform which enables building and hosting applications in a cloud environment.
There are two types of applications which can be hosted by Windows Azure. The first one, a so-called Web Role, is very similar to a web application running under IIS. The second, referred to as a Worker Role, can be thought of as a regular Windows service. It’s essential to keep in mind that application instances run behind a built-in load balancing mechanism.
In a nutshell, Windows Azure hosting environment is an array of virtual machines (VM) running Windows 2008 R2 operating system. Those VMs are created, started, stopped and disposed of by the platform automatically. To host an application instance Windows Azure first creates a clean VM using a default image, which already includes all the applicable updates, patches and hotfixes, then deploys the application into the image and starts the VM. The VM can be stopped at any point of time by the platform; another instance of the application is started in another VM.
Understanding the fact that the operating system can be recycled at any point of time is a foundation of Windows Azure application developer’s philosophy: everything stored locally will be deleted when VM is recycled (for example, files generated by an application in runtime). To preserve the data and to make it available to every instance the application should use external storage. The Windows Azure platform provides such storage and makes it accessible via API for different types of data, namely:
- BLOB storage Suitable for storing large amount of unstructured data
- Table storage Allows to store large number of small structured records and execute queries against the table
- Queue storage Implements FIFO access to a sequence of small unstructured records
- SQL Azure Very similar to regular MS SQL relation database with some restrictions
BLOB and Table storages are very cheap and can store terabytes of data while SQL Azure can only support databases up to 50Gb. All types of storages are designed to operate in a concurrent environment ensuring a transactional yet fast access to data.
It’s worth mentioning that storage services are decoupled from application hosting and can be accessed outside of the Windows Azure environment. That means that one can develop a desktop or a mobile application which would use storage service API to preserve vast amounts of data in a cloud, for instance, a backup utility, a media player or a photo album manager.
Beside storage services, Windows Azure provides an API to control the number of compute instances (so called Azure Management API), which can be used to increase or decrease the number of running application instances depending on a current load or performance targets.
Developing for Windows Azure
Mastering Windows Azure application development is relatively easy for an experienced .NET programmer once they adopt a new paradigm. Princeton Web Systems considers Windows Azure a prominent emerging technology and has invested in building the expertise after the first publicly available release in November 2009. Since then Princeton Web Systems has accumulated significant experience in designing and implementing highly scalable cloud-based applications through a series of successfully delivered enterprise-level projects.[sc:sharethispage]