Sunday, December 05, 2010

Windows Azure Management Portal gets a facelift !!

Microsoft released a new UI for the Windows Azure Management Portal.
     - The new layout is far more intuitive then earlier one.
     - I am glad that they have not over-utilized Silvelright animations. Silvelright Animations are look cool when demonstrating or selling someting, but i have serious doubts about their usability in a day-to-day operational UI implementation.
     - Integartion of your all your Azure services and subscription in a single portal is a good, welcoming and much needed enhancement. I am especially loving the SQL Azure admin features built into the portal. Infomration Cube with DB usage statistics is nice feature as well that points to the increment level of maturity SQL Azure is going to see over new few releases.
     - Ribbon UI will also go a long way towards establishing consistent experience with other Microsoft Offcie products. I hope to see Ribbon also getting incorporated into Microsoft's Server and tools business over next few months and years.

    Azure still needs several cycles and set of services to be a true app dev platform, but this new portal seems to be a good step towards creating an experience for users that can be extended to new services ( as and when they are launched).

  I also like that they have link to the old portal, in case someone is in the middle of a project and doesn't want to get familiar with new portal, they can always swicth to the old portal. So not like some of Microsoft's other software releases !! :)


There are few glitches in the portal, but I hope they will get fixed in next few weeks/months.
Enjoy!!

Thursday, December 02, 2010

Windows Azure SDK 1.3 release!!

I got a demo from Microsoft of some of the goodies that is being shipped with Windows Azure SDK 1.3 release. It's made significant progress since the previous release, especially in the area of IAAS (infrastrucutre  as a service). The new Windows Azure management portal (Silverlight front-end) is also streamlined to support new features and services. Here's some of the key features budled in new release. Cannot wait to try them out:

VM Role (Beta): Create your own custom VHD based on Windows Server 2008 R2 and deploy it to the cloud. This feature makes it so much easier to migrate existing applications to the cloud, reducing management and hosting costs.
•  Extra Small Instance Size (Beta): Run an extra small compute instance for only $0.05 per hour.
•  Remote Desktop Access: Connect to individual service instances with the remote desktop client as you would with any deployment in a hosted scenario.
•  Full IIS Support in Webroles: Host your web applications in IIS and configure IIS to suit your needs.
•  Elevated Privileges: Perform tasks in a service instance with elevated privileges.
•  Virtual Network (CTP): Use Windows Azure Connect to accomplish IP-level connectivity between on-premises en the cloud.
•  Network Enhancements: Restrict inter-role communication and use fixed ports on InputEndpoints.
•  Performance Improvement: Experience better performance when developing in the development fabric.
Cheers!!

Wednesday, December 01, 2010

De-mystifying Windows Azure AppFabric

There seems to lot of confusion about the Windows Azure AppFabric. Lot of it is primarily because of many people trying to over-sell the capabilities of Azure Appfabric based on the marketing collaterals published by Microsoft. Another big reason behind the confusion is the similarity in name of an entirely different product from Microsoft called as "Windows Server AppFabric".

"Windows Azure AppFabric" Vs "Windows Server AppFabric":
            1.  They are two very different product designed for two very different purposes.
            2.  "Windows Server App Fabric" has come out of Microsoft projects like Dublin and Velocity; whereas "Windows Azure App Fabric" is the next version of what was called as "Windows Azure .NET Services".
            3.  As I will explain in below post, they can compliment each other to enable some really cool capabilities.

Windows Server AppFabric:
   1. It's part of Windows Server (on-premise)
   2. It aims to help developers who are trying to build on-premise web applications
   3. Following are the key areas where it tries to provide help (also called as core capabilities):
                   a. Caching: This is used to speed up access to frequently accessed data such as session info in an ASP.NET application. This is done using a feature called as "AppFabric Caching Service".
                   b. Hosting of composite applications: These are typically the applications built using "Windows Workflow Foundation" or "Windows Communication Foundation". The AppFabric management is integrated into the IIS , and can be used to deploy, manage, and control your services.

Step 1 of the the wizard that you will go through to configure App Fabirc for a windows server gives a good high level overview of some of the core capabilities:

 
    Additionally, tight integration with PowerShell and System Center can also help streamline various capabilities provided by Windows Server App Fabric.

Windows Azure AppFabric:
        Initial focus was to enable applications hosted in cloud be able to talk to applications hosted behind firewalls (on-premise)  in a streamlined secure way. The product has evolved to enable many different new scenarios such as "mobility - consumption of cloud hosted services by mobile and smart devices", "messaging relay for communication between multiple desktop/on-premise/cloud applications" and other features typically associated with an ESB (Enterprise Service Bus) implementations.

        Currently it comprises of two key components (aka services), but I definitely see this feature going multiple enhancements as cloud and on-premise technologies start to merge. Here is the official definition of the two features:
            a. Service Bus - Helps to provide secure connectivity between loosely-coupled services and applications, enabling them to navigate firewalls or network boundaries and to use a variety of communication patterns. Services that register on Service Bus can easily be discovered and accessed, across any network topology.

            b. Access Control - Helps you build federated authorization into your applications and services, without the complicated programming that is normally required to secure applications that extend beyond organizational boundaries. With its support for a simple declarative model of rules and claims, Access Control rules can easily and flexibly be configured to cover a variety of security needs and different identity-management infrastructures.

                            

 Conclusion:
     While Windows Server AppFabric is a product that is targeted to make life easier for developers who are writing WCF and WWF based application to be hosted in IIS, Azure AppFabric is focused on enabling consumption of those (on-premise) services/workflows from cloud. The combination of these two products can enable unprecedented level of  integration between organizations (vendors/suppliers/customers/public services/etc).

Sunday, November 14, 2010

Windows Azure Instances stuck in the Initiatilizing, Busy or Stopping State

Although there could be many reasons for an instance to be stuck in a non-ready (busy/Initiatilizing/stopping) state, I have experienced a common (and silly) reason. It's the the number of instances that you have configured in the portal ( or through the "ServiceConfiguration.cscfg" file ).

I spent about one hour uploading (and of course deleting) exact same Azure package with a single instance of the web and worker role.  Sometimes it would upload and put the instances in Ready state right away, and sometimes it would just get stuck in the initializing or busy state. I have started experiencing this behaviour in last few months. Basically, this has become more frequent with the increase in Azure adoption. Also, this is more frequent duirng day-time (hypothesizing) when there are probabaly more people trying to upload thier packages to the Azure portal.

It turns out (and as warned through a dialog box) when you are trying to upload the package to Windows Azure portal, Microsoft doesn't guarantee any SLA if you are running only a single instance of either web or worker role. In addition to that, I am almost getting certain (after wasting one hour to figure any other logical reason) that they have put in some logic in the Load balancer that de-prioritizes any single instance configuration in favour of the multi-instance configuration during package upload. So, if you are short on time (or want to save some time ) during package upload and instantiation on Azure portal, i would recommend changing the number of instances to atleast 2 even during the develop-deploy-test cycle. This may cost little more in Azure cost (two instance cost VS one ) but I would say it's definitely worth it.

Bottomline - Since Microsoft SLA (99.95%) is not valid for single instance deployment in terms of availability, keeping atleast two instances of your role will save lot of time and headache.

On a side note, there are several other benefits to maintaining atleats two or more instances. For example, a single instance (and therefore the entire role ) can become unavailable whenver the role instance is being restarted by Azure. Azure can restart a role instance for many different reasons, including:
a)      Role instance is being recycled by Load Balancer
b)      Load Balancer Issues
c)      Being Upgrade to a new OS version
d)      Being re-booted to apply a patch or to resolve some other issue

Following blog from Toddy is a good list of other issues that may be causing your roles to be stuck in  Initiatilizing, Busy or Stopping State: http://blog.toddysm.com/2010/01/windows-azure-deployment-stuck-in-initializing-busy-stopping-why.html

Hope this  helps!
Piyush

Sunday, November 07, 2010

SQL Azure Federation: Horizontal Scaling in Cloud !!

  One of the concerns I hear a lot about Azure is the need for users to select the DB size when signing up for a SQL Azure instance. The maximum DB size that you can sign up for is 50 GB currently, and  makes lot of peopel worried about the scalability of SQL Azure. 50GB may be good enough for most of small and medium size web applciations, it's nowhere near what many large websites, LOB applications and data warehouses need.

     Microsoft's solution to this problem was something called  "Sharding".  Sharding is a technique that has been in existence for long time now and supports horizontal partitioning of Databases. Essentailly, it requires you to create a bunch of Azure DBs, treat each one as a separate partition, and programmatically direct your query to the correct partition “shard”. If it's a complex query, you will have to do the hard work of breaking it up based on your partition key, and redirect to right partition, and merge the result back.
   Here is one article explains how to sclae out SQL Azure using Horizontal partitioning. The partitioning logic is implemented in Data Access Layer  using LINQ. Painful!!

  Although this solution works, but expecting developers to write their own  logic to manage partitions, redirect queries, etc is little over the edge. Since most of the on-premise DBs provide this feature out of box, it was a big hurdle in SQL Azure adoption by large companies. Microsoft unvieled a much elegant solution duirng PDC.
   It's called "SQL Azure Federation" . It is planned to be released in early 2011.

   SQL Azure will provide support for explicit horizontal partitioning complete with support for new T-SQL keywords and commands like CREATE/USE/ALTER FEDERATION and CREATE TABLE...FEDERATE ON. Once you have setup the right federation key, re-directing queries to correct "shard" is taken care by the SQL Azure Engine.

  This new feature essentially makes the 50GB size limitation almost irrelevant for most of the data storage requirements. This coupled with the elastic "provisioning" nature of the cloud will make it a compelling alternative for many organizatiosn out there who are dealing with large datasets and scalability issues. I, for one, cannot wait to try this out.

Here is the actual session by "Lev Novik" from the PDC titled "Building Scale-Out Database Solutions on SQL Azure":

Cheers!!

Saturday, July 03, 2010

Azure Components !!

I found this really cool image in the latest Azure SDK that does a good job of explaining key azure pieces in one line each.

Windows Azure Overview
  I think the Microsoft messaging is definitely improving, and will go a long way in making users understand the long term vision. Above positioning of various Azure pieces is much better than the initial days when everyone was having a hard time understanding various roles and where it fits into the long term roadmap. Good job Microsoft!!

Now you only need to make sure that product can support the message. For example; the SQL Azure positioninig above may be right for structured data, but I am not sure about the support for unstructred data in the current version. :)
    

Sunday, May 02, 2010

Cloud Computing and Security - Is it about trust ?

Attended an Azure briefing at Microsoft last week. One of the most interesting moment was the discussion (more like debate) around security in cloud. It's was a rare occasion when attendees were non hesitant to show their passion :) about the topic. Someone had a great perspective on the topic that I couldn't forget about, and decided to blog my take on it.

The gentleman truly seemed to believe that secuirty concerns related to cloud will dicipate faster if it was an offering brought forth by non-technology companies. People and organizations have hard time trusting companies like Microsoft, Google and Amazon because they do trust technology as a whole. Majority of people (technical as well as non-technical) see technology as something that's not very stable and goes through significant changes.

 For example; my grafather may not care how banks and credit card companies are storing (and processing) his money. Reason being the trust and perception that these organizations have built over last many many years. If my grandfather was to know that his money is being stored as 0s and 1s on distant servers that keep crashing and are susceptible to viruses, he may not be as inclined to trust a bank with his life long savings. The regulations and oversight that governemnt has over these financial institutions is also a key factor in building this trust.

  On the other hand, companies like Microsoft, IBM and Google have spent thier lifetime trying to sell licenses, and have created a perception of being always in an evolutionary mode. For cloud to be successful, these vendors will have to solve the credibility problem more than the technology problem.
Maybe the relative early success of  Amazon over other cloud vendors is a pointer to prove my hypothesis as people have more trust in Amazon because of it's successful eCommerce business.

Food for thought!!

Sunday, April 25, 2010

Visual Studio 2010 Release - Impact on Azure Development

I have been playing with Azure for some time now, and also got few opportunities to put together few POCs. I was using VS 2008 for some of the initial attempts, then moved onto VS 2010 RC. Azure was also in flux and went through several changes.

  Now that Azure is a released product, and VS 2010 is also out; I would strongly recommend everyone doing Azure development to get the latest versions of both. VS 2010 has amazing support for Azure when it comes to development as well as deployment to the cloud. Being able to generate a visual UML model from code is icing on the cake (for Azure as well as non-Azure projects).

  I also didn;t come across any significant roadblocks in migrating some of the older code to new SDK and VS 2010. But again, none of my solutions were overly complicated.

  Overall, the transition has been a positive experience. Thank You Microsoft!! There are many other cool new features in VS 2010 that I look forward to talking about in future posts.

  Cheers!!