Tag Archives: azure

Azure in Action

Great book and introduction to all aspects of Azure.

“Azure in Action” by Chris Hay and Brian H. Prince covers:

  • What is the cloud platform?
  • What are the different components and roles?
  • How to configure and subscription and the different services?
  • How to code, deploy and run applications?
  • How is Azure storage organized?
  • How to communicate with API’s and messages?

TechEd 2010, looking for the latest on Azure

A bit to my surprise I got an invitation to attend TechEd Berlin. So to ‘please’ (*blink*) my employer I will join you all in the Messe.

TECHED_BLOGBLING_180_BLUE

I’m looking forward to see the latest evolutions in Azure.

Azure is something that will become big and to my opinion is the first real step of Microsoft in the direction of hardware solutions that have to do with hosting and serving capabilities. Are they outgrowing their software market share and now looking for strategic investments in the hardware market? Who knows and the future will tell but for the moment I like what I see related with Azure.

“Azure? A lap around Cloud-Hosted Services.” Ingo Rammer

[MS Techdays 2009] Summary “Azure? A lap around Cloud-Hosted Services.” Ingo Rammer

What is the cloud about?
Currently we have desktop and server OS’s optimized for single machines and a bit of clustering. Once you leave the safe grounds of this one machine, support for transparently consuming resources somewhere in the cloud deteriorates very quickly.

Cloud applications are about:

  • Large-scale failover capabilities
  • Geographic dispersion (multi-country)
  • Deployment support
  • Patch Management
  • Capacity Management and large-scale clustering

MS Azure tries to answer the move to cloud computing with virtualized computation, scalable storage, transparent management and development support. The concept is that applications will be build on top of a set of services provided by the Azure platform that will support the use of resources in the cloud like they were installed on one machine.

azure1

Development and Deployment

Azure Application Development Development for the Azure platform is done on a development fabric simulating the cloud circumstances. It is just way to complex for the moment to debug Azure applications at run-time in the cloud. Azure provides development storage for the same reasons.

It is a good idea to download the Azure Log Viewer and the Azure Storage Explorer, both third party, when you start developing: Azure Log Viewer can be found at http://blogs.itmentors.com/bill/2009/02/10/windows-azure-log-viewer/ and Azure Storage Explorer can be located under http://blogs.itmentors.com/bill/2009/02/10/windows-azure-log-viewer/

Azure Application Deployment
Applications for Azure are deployed through the Azure Services a portal hosted by MS. You upload your developed application and then the portal allows for zero-downtime upgrades or switch-deployments to bring your updated application into production. This means development and deployment for Azure consist of create-publish cycles.

Under the bonnet virtual machines are created to host your application.

System engineers are provided with status information about the application’s health through e-mail, instant messaging or phone calls.

Scalability and Availability
New to Azure applications is that any request in handled first by a load balancer, build-in in the platform, and then is forwarded to an instance of your application.

azure2

Considering scalability and availability we see that Azure really takes things further. We are not talking anymore about just a second server to have a local failover or a few machines in a datacenter to handle the load. No, we?e talking about thousands of serves in several datacenters.

The platform allows for turning-the-knob style up- and down-scaling of server capacity. It also supports dynamic capacity schemas by means of follow-the-sun server capacity. You only will have to pay for consumed resources and not for unused capacity required to handle potential peak-loads.

azure3

Storage
Because Azure takes control over your server instances there is no such a thing as sessions state like we are used to in, for example, IIS hosted applications. If you want some data to live longer than one request you need to use Azure Storage. All resources are logical in Azure. The platform maps them transparently to real physical resources.

Azure provides storage accessible to all instances. However there is something like Instance Storage, this should never be used to store session related data. It is just a local cache for transient data.

Azure Storage comes in three tastes ?tables (some TBs) , queues (unlimited number of messages if smaller than 8 kB ) and blobs (up to 50 GB )-and is accessible through a REST or ADO .NET Data Services interface. Data is durably stored and at least three times replicated to guarantee it is never lost.

The logical model known to the application is very simple:

azure4

For the moment there are some limitations concerning the Azure Storage. Queues only support polling instead of event based access. Applications require full trust instead off medium trust.

Azure Storage can be accessed using two roles: a web role to support synchronous HTTP requests and a worker role for asynchronous queued requests. To avoid remarks like vender-lock-in about the storage, MS made the storage accessible from outside the platform to allow you to copy data locally.

What is showing at the horizon’s
The future will bring following enhancements to Azure:

  • More types of roles (“RAW” !)
  • Mangement rules, monitoring, dynamic deployment
  • Geographic isolation, fault domains, update domains: some homeland security acts do not allow specific data to leave the country so the storage distribution must be done over datacenters within the borders.
  • SQL Data Services

Microsoft Azure allows for new business models

I’ve very excited about Microsoft’s Azure platform because it allows for some new business models.

Microsoft’s version of services in the cloud, where they provide flexible hosting capacity schemes, is opening up opportunities to small businesses to grow in way that otherwise would require them to have to convince investments companies of the viability of their product.

New Business Models

Imagine you have created in your garage the new Google, Flickr or whatever homegrown application of which you think that it will change the world. There are two possible scenarios for you:

  • Investment Capital Scenario
  • MS Azure’s Small Business Scenario

Investment Capital Scenario
In the first scenario you start hosting the application from one of-the-shelve desktop machine with a server OS on it in your garage. As the application might catch on you’l?l have to add some additional severs in your garage when more users start to use your application. Soon a single DSL phone line is not sufficient anymore so you request two or more phone lines.

Before you know it you’ve spending more time on keeping your serves alive, taking backups and installing OS hot-fixes than you can on developing new features for your fantastic application. The next logical step is that you move your application to some datacenter to get rid of the daily maintenance effort of the servers. But this requires an investment because datacenters don’t come cheap. Moreover a lot of datacenters will not help you if you’ll only need very small bandwidth capacity or number of servers. So of you go to the investments bankers and you’ll try to convince them you have the next new thing to Google.

Either you get lucky and the investment bankers see the same bright future as you or either the investment bankers all start laughing out loud. During the current financial crisis, with limited availability for risk capital, the latter case will be encountered more often than the first. By the time you get everything up-and-running probably some other guy picked up your bright idea and ran with it.

MS Azure’s Small Business Scenario
What do you really need? Small initial data center capacity with flexible growth potential. This is what I call the second scenario and this is what Microsoft Azure is all about. Microsoft will be hosting you application in their datacenter. Not for free of course what would you have expected? But they are promising to host your application even in you only need a few servers running it and not like a few hundred servers.

This way of working allows a small business to have a lot of flexibility without the middleman i.e. the investment banker. All cost-efficient models are about removing the middleman so this is a good thing. If your business is booming you will regret having to pay a reasonable ROI to the investors like in the first scenario.

You as inventor can now take the risk but it is a rather limited risk. The required server capacity can grow as your business grows. You can grow slowly and are not forced by some banker to generated huge profits that can? be reinvested into the business. The critical number of users to start with is smaller than you’ll require to convince an investment banker so you will be up-and-running faster already getting ahead of any competition. Remember in the current economic landscape it is important not only to have good ideas but also to be the first to bring these to the market.

New Programming Style
Another common problem with home-grown application is that they, most of the time, scale very badly. Everyone is clear about the fact you can’t run Google on an MS Access Database. In reality a lot of great ideas get lost because the software to support it can’t be scaled-up and -out form the home-grown application to something for a few thousand simultaneous users.

Every software architect also knows the horror story of the boss’s nephew, which is a high school student, who created a handy application in his spare time that your boss likes very much. He likes it so much that he wants it installed on the company’s internal network. The real evil begins when you boss starts promoting it and before you know it you’ll have to support something which isn’t meant to be used by more than five users.

The idea of MS Azure is to overcome these scaling issues. If you write your code against the correct set of libraries scaling will be something that works transparently out of the box. MS Azure will support multiple concurrent instances of your application distributed over several servers like you would be using a single server. The idea of moving this complexity away from the programmer and make it transparent is very interesting.

Follow-the-sun capacity
Reading about Microsoft Azure made me very happy. Because for the first time I saw support for something I call a follow-the-sun capacity schema.

I really don’t know whether the flexibility by Microsoft will be that high. It would be very nice to see something like the following being supported:
FollowTheSunCapacity
The picture indicates a flexible capacity schema according to the time of the day.

Like we already have for several years now in helpdesk support, that the helpdesk activity follows the business hours. When I’m based in Europe and I call the helpdesk during the business hours my call will be directed to the European helpdesk, if a call in the evening my call is forwarded to the Asian helpdesk and when I night help at night helpdesk USA will respond. So my call is forwarded to the location which is in normal business hours according to the time zone.

Why couldn’t we have something like that for server capacity? The capacity is augmented in a geographical location according to the number users in that location based on the level of activity required in that location for a specific moment of the day.

Remakrs
I can say I’m very excited about the potential capabilities of MS Azure. Time will tell if I end up disappointed or enlightened.

I think moving away from in-house server provisioning to in the cloud provisioning is the next step that a company needs to be focusing on.

IT infrastructure is not the core business of any company so if it can be bought as service instead of requiring huge investment, It will become the next critical success factor. In view of the current financial crisis; efficient cash flows, avoiding investment costs and short ROI times are something every company is dealing with. You might have found the answer!

Software and Services – Azure and .NET Service Bus

On January 15th Juval Lowy from IDesign presented for VISUG some new concepts related to WCF, Cloud Computing and Azure. Unfortunately we did not receive a copy of the slides. Two major things I remembered from his presentation:

  • .NET Service bus as relay service in the cloud solves a lot of the pain
  • self hosting is required and not yet supported in IIS 7

Web Services are a nice thing but become very hard once you leave the local network. Think about all that is required to tunnel client connections through the firewall to the server and vice versa.

Microsoft came up with a nice solution: Microsoft .NET Service Bus. Why don’t we put a relay service in the cloudn’t? The client connects in a secure way to the relay service, the server exposes (registers) itself to the relay service and the relay service plays the role of forwarding requests between the two.

service-bus

Because the server in this scheme does not require being public addressable, we bypass the problem of public IP address becoming more and more extinct. Both client and server can have dynamic IP-s in this situation. Services register themselves and the relay host has a list of available services through RSS feeds.

One of the problems is that for this work services must be instantiated before the first client request arrives. Currently something not supported by IIS7 were they are instantiated on the first client request.

In fact the service bus supports two ways to connect: relay and direct connect. In relay every request passes through the service bus. In direct connect the service bus plays the role of DNS so client and server can find each other. Once the initial connection is established client and server communicate directly. So they start using relay and go to direct communication as soon as possible.

This schema is not limited to 1 server’s client-kind of connections. Multicasting is supported as well: 1 server’s clients.

Microsoft’s idea was to extend .NET technologies to the cloud – through WCF bindings – using existing internet standards – HTTP, SOAP, Atom – in a scalable way – services hosted in MS’s data centers.

For more details about Azure and .Net Service Bus: http://www.microsoft.com/azure/servicebus.mspx A high level overview of Azure: Making sense of Windows Azure and the Azure Services Platform – Simon Devies (PPTX 3.41 MB)