Windows Azure is the cloud operating system by Microsoft.Now if you you have never heard of it or don’t know what a cloud operating system means then head over to Wikipedia ,here.The aim of this post to give you an inside view of the architecture of Windows Azure.
This image pretty much sums up the top layer architecture of Windows Azure.On the bottom layer is the windows azure which takes care of the “cloud” related technicalities.The power of windows azure is being harnessed by the above services.Things will become easier if we imagine a Hyper-V layer between Windows Azure and the services.The services runs in their own Virtual Machine oblivious of the fact that they are running on azure.Your application will typically connect to these services and through these services it will do its processing.
This is just an illustration of the above architecture.Bot your web applications and local applications can access these services directly.Your local app can also connect to your app and access these services.For eg.Suppose you have a web application that requires user to sign in.Instead of making custom registration you use the “Live API”,so that anyone with a valid “Hotmail/Live” ID can sign in.So basically your web app will harness the power of the cloud through the “Live Services”API.
Inside Windows Azure
This is the most important part of this blog .If you have read Windows Azure you will already know,Windows Azure has 3 parts.
As the name suggests “Compute” handles all the programming and computations.It is the “compute” part that will actually run your program/apps.So the main processing is done by the Compute.Compute is divided into 3 roles.
VM (virtual machine Role)
Web Role:This is the process that actually interacts with the presentation layer.It is similar to a web application running on a server.The user or the local machine at any moment will be interacting with the Web Role.All web apps that you deploy use the Web Role.
Worker Role:This role is similar to a background process in operating systems.This has no interaction with the presentation layer whatsoever.The user does not interact with the worker role.It is generally used for background work like checking the integrity of data before committing to the database,etc.
VM role:It runs an image (a VHD) of a Windows Server 2008 R2 virtual machine. This VHD is created using an on-premises Windows Server machine, then uploaded to Windows Azure.
The roles that you would need to code for your first program is worker role and the web role.
As shown in the figure,storage is divide into 3 parts,
Account represents the Windows Azure account that user has.Container can be thought of as “Folders: that can contain blobs.Blobs are similar to files in our local file system.And lastly Each blobs is divided into blocks(similar to frames).The interesting part is we can manually decide which block will be uploaded and in what sequence.WE can actually decide the storage of our data right down to the block level.
Blob storage works in this way.
- Identify the file to be uploaded
- Split the file into Blocks
- Upload every block in any order you want to.
- Commit the block to a blob
Tables:These tables are a means to provide structured storage through rows and columns.Relations are not supported so we cannot use it as a RDBMS.We can run LINQ on it and query like a table.
Queue:It is primarily used for message passing between the web role and the worker role.This provides reliable storage and delivery of messages for an application.
So finally we come to Fabric,this is an abstraction over the datacenters and servers that Microsoft provides.This is the part where the OS interacts with the hardware.the fabric is named because windows azure maintains a network of datacenters such that it represents a closely woven fabric.
Instead of putting the database on the cloud Microsoft has put the entire RDMS on the cloud.This manages your data needs across the cloud.So we don’t have to think about relational data storage.SQL managers our data across several datacenters.
The App Fabric again a software concept deals with the accessing the application from the cloud.It is divided in two parts.
Service Bus-Generally you as a client will have some on premise infrastructure through which you would like to connect to the cloud.Your data security is based on how you connect.You can connect through a port which may not be as secure,or else you can use a VPN which is quite complex.So Microsoft provides us with service bus,through which we can connect to the cloud.service bus takes care of all authentication,authorization and additional access for Azure apps from on premises and connect across firewall.
Access Control Services-It is used to simplify the process of accessing the cloud.your company may use one form of authentication.Your clients may use completely different form of authentication.ACS helps to cross boundary collaboration like external organization,resources with different identification.Through ACS you can even decide which parts are accessible to your clients and which part are hidden from them.
This marks the end of the post.In my next post I will post some link to videos that may help you understand these concepts easily.