Windows Azure is a cloud-based service offered by Microsoft. It is considered a platform-as-a-service (PaaS) solution, since it allows developers to design, produce, and deploy their applications entirely in the cloud — using the servers and operating systems of the provider. This eliminates the need for purchasing expensive hardware and the costs of keeping it operational. The main purpose of Windows Azure is to provide a highly available, very scalable, and easily recoverable platform for running applications in the cloud. Microsoft does all that by deploying the customer’s applications in modern data centers ensuring 99.95% uptime.
Windows Azure runs customer’s applications in three kinds of instances, including:
- Web role instances – used for creating web-based applications running on IIS7. Developers can create the applications in ASP.NET, PHP, Java, etc.
- Worker role instances – used for actual request processing. Web role instances usually service the end user’s requests and then let the worker role make the computations needed. The code for applications that will be using these instances can also be written in any common language.
- VM role instances – mainly used for migrating on-premises applications to the cloud. The customer provides a preconfigured image of a Windows Server 2008 R2 running the application, and this image is then used by the application.
Each application can use any number of web role and worker role instances, or it can completely run on VM role instances. The customer makes this decision when uploading the application. If the application needs more or less resources after a while, the customer simply changes the number in the configuration file for this application.
The design of Windows Azure consists of the following components:
- Compute – a collection of multiple instances of each role that the application needs for computation power and for servicing users’ requests.
- Storage – the way that the application stores its data. Different ways are by using blobs, tables, or queues. Blobs are just collections of binary data. Tables (not relational tables) are usually used because they are structured in nature and map the data with their properties. Applications that need relational storage can take advantage of SQL Azure — another cloud service offered by Microsoft. Queues are used for communication between Web and Worker role instances (for example, a web role instance may use the queue of a worker role instance for a task requested by an end user but that is too complicated for the web role instance; each role instance listens on such a queue).
- Fabric Controller – an application that uses fabric agents to communicate with all the servers in its environment. The fabric controller makes smart decisions about which servers should host new instances needed by applications based on its goal of optimum resource utilization and its knowledge of the environment. It is also used for monitoring all the running applications and for setting up a new instance in case a previous one crashes. The fabric controller is also responsible for managing the operating system that hosts the application. This way, Windows Azure functions as a Platform-as-a-Service solution.
- CDN – used for duplicating selected content on multiple servers placed in strategic positions. The first time content (in terms of a blob of data) is accessed by a user, this content is cached on a server that is close to the user (in terms of access speed). The next time a user close to that server tries to access the same content, the user will get it from the cached copy, not from the original.
- Connect – used for connecting a cloud-based application with on-premises-based storage and services. An application can run a Web role instance in the cloud but then connect to internal database servers for information. This IP-level connectivity can also be used by the application to connect to on-premises Active Directory infrastructure and use account details for access control or single sign-on.
In this article we focused on the design of Windows Azure. In the next article for our blog, we will discuss the pros and cons of using Windows Azure. This discussion will help you determine whether or not it is a good solution for your applications.