Showing posts with label Azure Metrics. Show all posts
Showing posts with label Azure Metrics. Show all posts

Saturday, March 10, 2012

Where does Microsoft Azure Fit? SaaS or PaaS

One of the question which was doing buzz few years back was, under which category Microsoft Azure falls? SasS or PaaS. I strongly believe the first answer which comes to everyone's mind would be PaaS, let us understand the question itself first with Definition.

Software as a Service: Software as a service, or SaaS, is probably the most common type of cloud service development. With SaaS, a single application is delivered to thousands of users from the vendor’s servers. Customers don’t pay for owning the software; rather, they pay for using it. Users access an application via an API accessible over the web.

Each organization served by the vendor is called a tenant, and this type of arrangement is called a multitenant architecture. The vendor’s servers are virtually partitioned so that each organization works with a customized virtual application instance.

For customers, SaaS requires no upfront investment in servers or software licensing. For the application developer, there is only one application to maintain forb> multiple clients.

Now for Vendors, who develop SaaS kind of applications will require upfront investment on servers, Software licenses and they need to maintain and manage them. As they get more customers, their infrastructure has to change and they need to put more investment on people who manage this infrastructure. So it is most likely that vendor would take advantage of Microsoft Azure as Platform for hosting SaaS based application. In reality Azure will be the perfect place to put SaaS based application and it has Platform which can support both Multi Tenant and Single Tenant Applications.

Platform as a Service:In this variation of SaaS, the development environment is offered as a service. So Developer will be having ready made infrastructure to host their application. The developer uses the “building blocks” of the PaaS development environment to create his own custom application (Developer has to use Azure Blob objects to store stuff). As answered in the first place, Azure is the perfect place to use as PaaS.

Conclusion is Windows Azure fits into both Saas and Paas Architectures.

Friday, March 9, 2012

Elastic Scaling on Azure using Enterprise Library 5.0

One of the Biggest advantage and reason for moving towards Cloud (in specific to Windows Azure) is it gives customers Elastic Scaling of their Application instance. That is Customer can have the ability to Scale in and scale out anytime according to his business needs. However, doing this manually is pain and involves lot of monitoring and Automation with Management APIs. Azure platform provides Auto-Scaling using Enterprise Library 5, which includes a robust auto-scaling implementation that's ready to use out of the box.

Why Auto-Scaling?
Before thinking about Scale-in and Scale-out, one needs to define the metrics and understand the Business needs. There are probably thousands of variants, but the two most common types of metrics on which scaling decisions are based are:

1> Schedule (Timelines), such as particular weeks in the month: One of the example i think about configuring Auto-scaling based on this metrics is, during Christmas month on a eShopping site, we can always increase number of instances of servers.

2> Key Performance Indicators (KPIs), such as CPU utilization or queue depth.

How to get Metrics?
The next important question to answer is, how to get these metrics. For Schedule the answer is pretty simple, we all know when is the Christmas month, so we can take the date or time range and can configure auto-scaling based on that. How ever getting details about KPIs is not that easy, we need to develop a small monitoring tool which uses CPU performance counters using DiagnosticMonitor. Based on this data we can configure Auto-scaling configuration for KPI.

How Auto-scaling Enterprise Library works?
Auto-Scaling Enterprise library comes with a component called "the Autoscaler", which can be hosted as web role on azure or on the local box (on IIS 7). This tool needs to be configured with Management Certificate of Azure Account for which you are planning to Auto-scale (Azure Account for which you want to enable Auto-Scale).
Once you configured Azure account (Web role, Worker process or Azure Blobs), it is time to provide Mertics data which we collected to Autoscaler (We call this Autoscaler rules).

Once "the Autoscaler" is up and running, it can Automatically Scale-in or Scale-out based on the Rules you provided.

for more information on how to configure and install Autoscaler, visit the nuget gallery. http://nuget.org/packages/EnterpriseLibrary.WindowsAzure.Autoscaling