Windows Azure is Microsoft’s cloud computing platform for building Web applications, host and scale through Microsoft data centers. Windows Azure is therefore classified as “platform as a Service” and the part of Microsoft’s cloud computing strategy and the provision of “Software as a Services”. Windows Azure Compute is one of the five parts of Microsoft’s cloud computing service that can run various types of applications, or, in other words, we can run various types of applications using Windows Azure Compute feature.
Irrespective of what an application does, it must be designed in a way wherein one or more roles are implemented. Windows Azure Compute runs multiple instances of each role by using inbuilt load balancing to evenly distribute requests among the roles. Please refer Figure 1 to understand the same.
Windows Azure Compute gives three options for roles to choose from in the current version: Web Roles, VM Roles & Worker Roles.
Web roles: This role is primarily used to make it easier in creating Web-based applications. An instance of a web role has an IIS 7 configured in it. This results in ease of creating applications using ASP.NET, WCF or other Web technologies. One can also develop applications using non Microsoft technologies like PHP & Java where the .NET framework is not required.
VM Role: Each instance runs a user given Windows Server 2008 R2 image. This role can be used in moving a Windows Server application to Windows Azure while it is moving.
Worker Role: It is used to run various Windows-based codes. Like the Web role, the Worker role does not come with pre-configured IIS, and hence, it cannot be hosted in IIS. A dot net programmer is free to use .NET framework or any other software that runs on windows.
A developer can use Windows Azure portal to submit applications to Windows Azure. A developer has to submit configuration information along with the application which explains the platform about the number of instances to run for each role. Windows Azure’s fabric controller creates a VM for each instance and runs the code for an appropriate role in VM.
As seen in figure 1. The request from application users can be made using various protocols like HTTP/HTTPS or TCP. On arrival of the request, the load balancer balances the load across all instances of a role. There is no guarantee that multiple requests from the same user are sent to the same instance of a role. A developer can use any combination of VM Role, Web Role or Worker Role to create an application. Based on the load of the application, the developer can use the Azure Portal and request more instances for any of the roles used in the application and vice versa if the load decreases using the API exposed by Azure. An instance can call a logging API to monitor and debug Windows Azure Application and write the information to the common application log. There are many other options available, to name few, store the information about crash dumps, measure the CPU usage etc. State management in Azure should be done using SQL Azure or at some external storage. Role instance should not maintain the state themselves between the requests.