Saturday, January 15, 2011

Current State of Windows Azure (January 2011) - Part 1

I provided an overview of Azure in January 2010. That was a long time ago; and (stating the obvious) Azure has come a long way since it's early beta release. In this post, I make an attempt to present the current state of Windows Azure, what has changed; and the direction in which I perceive it to be going in future. I will also make an attempt to highlight various new features that were added in the November 2010 release.

Current State:
         Since the initial preview when Azure primarily was a way to build Web Role and Worker roles and capable of building very rudimentary web applications, it has emerged into a set of streamlined services that can enable organizations to build scalable LOB (Line Of Business) applications without sacrificing much of the functionalities that they are able to support in an on-premise solution. I have been pleasantly surpirsed by the level of secuirty features that Microsoft has been able to add; and continue to add to this platform.

        The broader platform can be divided into three kinds of services:
                     1. Windows Azure
                     2. SQL Azure
                     3. App Fabric
    
          Additionally, there are few other key components that add tremendous value to the Microsoft cloud story such as:
  • Platform Management Portal
  • Local Development Environment
  • Marketplace
   Following digram provides a good overview of the various components that come together to form Windows Azure:

Windows Azure Components
Windows Azure:  
            Windows Azure has evolved into a platform that is hosted inside (geographically distributed ) data centers, and you can deploy your applications to that underlying world class infrastructure. How you do that is by utilizing a set of services (similar to APIs in the on-premise world) that Azure provides.
    You pay based on the amount of service you use (a.k.a. Utility Computing).

Service #1 : Compute Service
           One simple way to understand this service is to think of it as a meter that keeps track of the amount of  CPU cycle that your code uses. There are currently three ways of writing your code (dependent upon what you want your code to do). These are called roles.
         a. Web Role        => Used for front-end development
         b. Worker Role   => Used for background processing
         c.  VM Role        => Used for hosting your pre-configured Hyper-V image  

Service # 2 : Storage Service
        There are two key types of storage service:
           1. Windows Azure Storage: It's the persistent storage in cloud, but is NOT relational. Currently, there are four types of Azure storage: blob storage, table storage, queue storage and Azure drives.
It's SIGNIFICANTLY cheaper than the SQL Azure (relational version), and good for large datasets that don't necessarily needs relational and Querying capabilities of SQL Azure.

          2. SQL Azure: Variant of SQL Server hosted in Azure with T-SQL kind of querying capabilities. It's more expensive than Windows Azure storage.

     Azure Storage Vs SQL Azure:
           Once simple way to understand the difference:
                      Azure Storage => Raw Storage of objects that you can query using REST or managed API.
                      SQL Azure => Processing engine on top of Storage that has data-processing capabilities (queries/transactions/stored procedures) and therefore, cosumes more resources and therefore, is more expensive.  
         
        One good strategy can be to store the high-volume data in low-cost Azure Storage; and use (expensive) SQL Azure to store indexes (pointing) to the data. Also, there are size limitation of the SQL Azure instances that can be overcome by using partitioning, but improtant to consider during architecting your azure application.

Service # 3: App Fabric
           This is one service that has come a long way since it's initial debut; and is still going through signifincat enhancements. This sevrice is the building block behind many LOB applications, and provides functionalities typically provided by middle tier in a 3-tier on-premise application. It enables web services, service bus, service registry, orchestration, secuirty and other capabilities in the cloud.   
           Each of these features add their own unique value to Microsoft's cloud story, and I plan to cover them in next few posts.

 I hope this post gave a good overview of key Azure pieces, and look forward to diving into details in next few posts.

Cheers!!

No comments: