Well! I will try to put my knowledge of Windows Azure in this article. When I was working with Windows Azure, I thought that there should be one clear article about Azure so that developers can understand the basics of Windows Azure and where it fits within cloud computing.
First of all, what is Windows Azure? Why is it required?
The answer is simple; it is part of the Microsoft cloud computing platform. This provides a platform to build web applications, hosting applications, scaling
through Microsoft data centers. So we can classify it as a "Platform as a Service" which is a form of cloud computing.
I can define it simply as Windows Azure is a service: Customers use it to run applications and store data on Internet-accessible machines owned by Microsoft.
Components of AZURE
- Windows Azure Compute is one of the five parts of Microsoft's cloud computing services that can run various types of applications, or, in other words, we can run various types of applications using the Windows Azure Compute feature.
- Storage Service
Provides service to store data.
- Azure Fabric
This manges and monitors both of the above.
In this article, I will talk about Compute and Fabric Services.
What is Windows Azure Compute?
Windows Azure Compute is nothing but a role provider which runs the applications on Azure. Windows Azure applications can have multiple instances, each executing in its own virtual machine (VM). These VMs run 64-bit Windows Server 2008.
It provides three types of role instances.
- Web Role
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 an 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 in 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. A better way to understand this is that it is possible to provision a VM even during run time.
- 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 developer is free to use the .NET framework or other software that runs on Windows. It works like Windows services.
Windows Azure Portal
To run an application, a developer accesses the Windows Azure portal through her Web browser, signing in with a Windows Live ID. She then chooses whether to create a hosting account for running applications, a storage account for storing data, or both.
Once the developer has a hosting account, the developer can use a Windows Azure portal to submit applications to Windows Azure. The 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 the appropriate role in VM.
Higher level walks on Users interaction with Azure.
When the user sends a request to an application hosted on Azure (that can be passed by protocols like HTTP, HTTPS or TCP), the request will be received from the load balancer. The Load balancer balances the load across all the instances of the role (Web, Worker, and VM).
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.
Azure Fabric
Now, let us move to little depth on Azure. What is the main core of Azure?
The Azure fabric is the main core concept over here. It provides a service called the Azure Fabric Controller. It is called as OS for the Azure. Because it handles/manages:
- All roles(computing) and resources.
- Deployment and activating services.
- Health monitoring for all services.
- Allocating , releasing of resources.
- Provisioning VM,terminating etc.
- Updating patches for installed OS on VM automatically. So there would be better to have two instance of roles and also no need to worry about software updates for user.
How does the Azure fabric communicate with computing and storage services?
Yes. It will communicate with compute and storage services using the Azure agent. The Azure agent will reside in the roles VM. Also it exposes a Windows Azure-maintained log, sending alerts to its owner via the Azure fabric.
As the figure shows, the Windows Azure Fabric consists of a (large) group of machines, all of which are managed by software called the fabric controller. The fabric controller is replicated across a group of five to seven machines, and it owns all of the resources in the fabric: computers, switches, load balancers, and more. Because it can communicate with a fabric agent on every computer, it's also aware of every Windows Azure application in this fabric. (Interestingly, the fabric controller sees Windows Azure Storage as just another application, and so the details of data management and replication aren't visible to the controller.) The fabric controller does many useful things. It monitors all running applications, for example, giving it an up-to-the-minute status of what's happening in the fabric. It manages operating systems, taking care of things like patching the version of Windows Server 2008 that runs in the Windows Azure VMs. It also decides where new applications should run, choosing physical servers to optimize hardware utilization.
To do this, the fabric controller depends on a configuration file that is uploaded with each Windows Azure application. This file provides an XML-based description of what the application needs: how many Web role instances, how many Worker role instances, and more. When the fabric controller receives this new application, it uses this configuration file to determine how many Web role and Worker role VMs to create.