Tuesday, November 08, 2011

Windows Azure - introduction

Recently I have made myself to do some work and start exploring the unexplored. First target that I chose was Windows Azure - Microsoft's cloud services platform. So here are my thoughts and first impressions about it.

First thing you must to do is creating an account in Microsoft Online Services Customer Portal: https://mocp.microsoftonline.com/. As a Microsoft client you must purchase a subscription for Windows Azure services. For all new clients there is a trial period in which we can test Windows Azure for free - it's very good option for start. We can just try it for ourselves.

When we have access we can sign in to Management Portal on http://azure.com. From there we can manage all our Windows Azure services, check what is going on and how our application is working. We can create dabase servers, compute workers, etc. in just few clicks, just choosing where we want to place our servers and after a while everything is up and ready to deploy our aplication. These all informations are presented by responsive web interface.  My first impression was very good - it's very intuitive in my opinion and it's first web page using Silverlight which does not makes me angry. Who knows better how to use Silverlight properly better than Microsoft? Good for them, for now.

But to do something smart and not pay too much we need to know something more about Windows Azure and generally what cloud services are? According to Microsoft:
Microsoft thinks of the cloud as simply an approach to computing that enables applications to be delivered at scale for a variety of workloads and client devices.
I can agree with that mostly but I think there is something more about cloud computing rather than just simply scaling mechanism - using the cloud of course gives us an opportunity to face lots of computings but this approach would not have it's name without using very large number of computers and treat them like one big powerful one.

There are few business models of cloud services:

IaaS was one of the first approaches used by Amazon Web Services Elastic Cloud Compute (EC2). We don't have to worry about Networking, Storage, Servers and Virtualization but still we have to consider things like Operating Systems, Middleware, etc.

PaaS is best fit for Windows Azure - all we need to worry about are our applications and data. It simplifies our tasks and helps us concentrate on our product.

SaaS is another more abstract level of managing our business - all we want is delivered to us as a service and we don't have to worry about anything - we are all using SaaS and often doesn't even realize it - Google has many services which are being delivered to us as a service (Gmail, Calendar, etc.)

Ok, so now when we know something about what cloud computing is let's get back to how Microsoft tries to approach it.

Windows Azure Platform consists of three main components:
  • Windows Azure
  • SQL Azure
  • Windows Azure AppFabric
These three main parts are the core of Windows Azure. So let's have a closer look on every one of them.

Windows Azure component includes three subcomponents:
  • Compute (responsible for doing heavy work)
  • Storage (not database, just simple storage)
  • Virtual Network (connects them with each other)
SQL Azure is just cloud evolved SQL Server with minor differences:
  • Database (relational database, compatible with SQL Server)
  • Reporting (similar to normal Reporting Services)
  • Data Sync (synchronization)
  • Service Bus (general purpose application bus, available on internet scale)
  • Access Control (rules-driven access control for cloud applications)
  • Caching (general purpose distributed cache mechanism)
As we can see Windows Azure Platform consists of several loosely connected services which we can use. From these tools we can build our applications very fast.

The core functionality is Compute of course, in which we can use any other non Microsoft technology (Java, PHP and almost everything). Last but not least is that we can migrate our existing solutions to cloud in few simple steps and for example make our web application work on several distributed instances. We can also migrate our existing databases to the cloud - we can use SQL Azure just like normal SQL Server.

So to sum up Windows Azure is very easy way to build scalable network applications. All we have to worry about is our application, our idea and we can focus only on our product.