Showing posts with label Cloud Computing. Show all posts
Showing posts with label Cloud Computing. Show all posts

Sunday, March 20, 2011

Windows Azure CDN Simplified!!

Okay. I finally got around to trying out Windows Azure CDN. CDN could be a god-send for companies trying to serve a global userbase. Currently, lot of them essentially force their global users from around the world to connect to US based data centers. The latency in delivering content becomes really high when content happens to be something like video, audio or similar such media that requires high bandwidth throughput.

  The Windows Azure Content Delivery Network (CDN) offers a global solution for delivering such high-bandwidth content that's hosted (cached) in strategically placed locations to provide maximum bandwidth for delivering content to end users.

In it's current avatar, CDN is not suitable for many requirements (that can potentially benefit from such a service) because of inherent limitations in terms of secuirty, content type supported, etc. But I defnitely see those limitations going away in next few releases.

Following are the key attributes of this service that one should understand to be able to decide if CDN is the right fit for a solution:

    1. CDN delivers cached content at strategically located physical nodes in the United States, Europe, Asia, Australia and South America. A latest list of nodes is available at the following url: http://msdn.microsoft.com/en-us/library/gg680302.aspx

    2. Microsoft cannot (and doesn't) guarantee that the content will be served from the closest possible node to the user because it's dependent upon many different factor such as current load, availability, node capacity, etc. This is very critical for organizations that have conpliance requirements such as HIPAA, etc.

   3.  It works better for Windows Azure blobs and static contents. It may not be a good idea to use CDN for contents that are frequently refreshed or need to be generated based on real-time data.

   4. CDN is an add-on feature to your Azure subscription (that needs to be enabled through the Azure Management Portal) and costs extra.

   5. Only blobs that are publically available (anonymous access) can be cached with the Windows Azure CDN.

   6. If you use CDN to cache Azure hosted services, it's recommended to enable CDN only for static content. Enabling CDN for dyanamically generated content or services will cost more, and may even have a negative impact on the performance.

  7.  You can set the "time-to-live" setting for content in CDN. If a content has expired in CDN, the call is re-directed to the blob or stoarge service to get the latest content; and is cached by CDN for subsequent calls (till the content expires again after time-to-live setting passes).

Happy CDN'ing !!

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!!

Tuesday, December 15, 2009

Microsoft Azure Vs Amazon Vs Google Vs Others

Oen question I am frequently asked is to compare various cloud offerings in the market. Although I am just starting to play with Azure, I have been using Amazon EC2 for some time now. There doesn't seem to be much overlap between the approach of the three key vendors.

Here is my current understanding (which may change as I dive deeper into Azure). There is also a good chance that Microsoft has unveiled only a small subset of the long term product roadmap, and may release new features in future to compete directly with Amazon EC2 or google apps.

Amaozn EC2:
               Not too different from existing hosters like "Network Solutions" and "Go Daddy", except privides the unlimited elasticity of the resources coupled with "pay as you go" model.

    Simply speaking:
               a. You can rent as many servers as you want (scale up and down)
               b. You can pretty much install anything on those servers (Windows, LAMP, etc)
               c. You pay only for the resources that you use (instead of a fixed monthly fee)
               d. You take care of installing load balancer and such based on how you want to manage session state acorss various servers.

Microsoft Azure: 
             It's more of a platform (or a set of APIs). As long as your code follows the standards defined by the underlying API, Azure takes care of the rest. That rest includes things like:
            a. Setting up of servers
            b. Load balancing      
            c. Scale up (and) down based on your user load and subscription level.

    Essentially, you are not renting just a bunch of hardware and dealing with headache of installing software on it, but building your solution based on some specification and leaving the hardware-software headcahe to Microsoft. Thus, being able to focus more on your business logic as opposed to dealing with software versioning and compatibilities issues.

Google Apps:
        I do not have much experience with Google Apps, but it seems more of a SaaS (Software as a service) play. You essentially subscribe to softwares like Gmail, Google Docs,etc; and  you get certain premium services like backups, restore, custom domain names, dedicated account managers,etc  based on your subscription level. 
    This is similar to SaaS offerings by other vendors like SalesForce.com. Even Microsoft offering live Live Services will fall into this category.

Conclusion:
If I were to put the three vendors into boxes, this is what the boxes would be labeled (based on their respective offerings):

   Amazon : Infrastructure as a Service (IaaS)
   Microsoft : Platform as a Service (PaaS)
   Google : Software as a Service (SaaS)

It would be interesting to see the traction/direction that each of these get over next few months/years to come. I, for multiple reasons (including my Microsoft background), am liking Azure more than the rest, and cannot wait for it to evolve into something magnificient.

Cheers!!