Saturday, February 19, 2011

Bart Simpson's guide to Windows Azure


The original name of this post was "a poor developer's guide to windows azure" but then I found the Bart Simpson's Chalkboard Generator:

My Azure story begins back in PDC08 where Microsoft announced a community preview of Windows Azure which includes a free subscription for a limited period. I took advantage of this to develop the Wcf binding box (which btw got some good reviews). A few months after, the preview has ended and my account became read only. I was not too bothered by it as I had other things in mind. A few weeks ago I had a crazy idea to build a wsdl2-->wsdl1 converter. The most natural way to do it was to create an online service. But my azure trial is already in freeze, and I did not want to pay a hosting service just to host a free contribution I make for the community. What could I do? I then remembered that I (and my contest winners) have a special MSDN premium Azure offer. And this is how wsdl2wsdl came to life. Veni, vidi, vici? Oh my...

A few days after going on air I get this email from Microsoft:

Your Windows Azure Platform Usage Estimate - 75% of Base Units Consumed‏

This e-mail notification comes to you as a courtesy to update you on your Windows Azure platform usage. Our records indicate that your subscription has exceeded 75% of the compute hours amount included with your offer for your current billing period. Any hours in excess of the amount included with your offer will be charged at standard rates.

Total Consumed*: 592.000000 Compute Hours
Amount included with your offer: 750 Compute Hours
Amount over (under) your monthly average: -158.000000 Compute Hours

Let's see... I should get 750 compute hours / month, a month has 31 days (a worse case analyses), 750 / 31 > 24 which means I should have more than 24 complimentary compute hours per day. How could they run out so fast?

Bart Simpson's Azure Rule #1:

As a developer, it made too much sense to develop the binding box and wsdl2wsdl in a separate visual studio solutions. This yields two separate azure hosted services:

And this yields two separate bill items per day:

This means I was not paying for 24 compute hours per day, I was paying 24*2!

Now you may say RTFM. But nobody does it. Not when we download some open source library from the web, and not when we upload something in the other direction.

But why did the bill had 4 itmes and not two?

Bart Simpson's Azure Rule #2:

Not only did I had two hosted services online, but I also had two environments for each - staging and deployment. You pay for what you get:

2 services * 2 deployments = 4 * 24 hours a day = 96 hours a day!

Bart Simpson's Azure Rule #3:

I was on my way to a Chapter 11 when I decided to panically press the stop button on my unintended deployments:

However this does not reduce costs:

Suspending your deployment will still result in charges because the compute instances are allocated to you and cannot be allocated to another customer.

Remember: Always delete deployments you do not want to pay for. Suspending / stopping them still results in charges.

Bart Simpson's Azure Rule #4:

For applications with very small needs an extra small instance should be enough. It can save you costs by up to 60%! Configuring it is very easy:

<WebRole name="WebRole1" vmsize="ExtraSmall">


Homer Simpson once said "Trying is the first step towards failure." In my case it was the first step to this blog post and to my first two weeks Azure bill:

I'll end the month on around 50$ which is not too bad for a commercial site. But for a contribution to the community and my fun? Oh my...

Weather you are an independent developer or a Fortune 5000 company - know the Azure pricing model and how your account fits in.


What's next? get this blog rss updates or register for mail updates!


Anonymous said...

probably the most hilarious post you ever posted.

Good job mate,
Guy R.

DragonMan said...

Good to know before i use Azure. Thanks!

Bloodsplatter said...

If you think 50$/month for personal entertainment is expensive, you're obviously not a gamer :P

Still, very informative ;)

David Pallmann said...

Love the post--entertaining as well as educational.

You might find a few more useful tips here:

Also, be careful about the Extra Small VM size, some Microsoft offers for free hours do not apply to that VM size.

Steve Trefethen said...

Agreed very entertaining and thanks for the link to the Bart generator!

DMak said...

Well-written! There's one small correction: the extra small vmsize in the ServiceDefinition.csdef is "ExtraSmall" - not "Small". If VM size is changed through the role's Property page, this is done automatically.

Yaron Naveh (MVP) said...

@Bloodsplatter - you got me on this one :)

@David P - you are right, the small vm is not included in my free hours. An update post (with link to your great article) is on the way.

@David M - corrected, thanks!

Paras said...

hey "you are an original - you know that rite" ;) - my twisted version of cold luke hand dialogue.

i have been working on Azure for past 70 days now - it's good to know there are guys like you out there who voluntarily 'show a warning post' saying - stop rite there!

i liked the bart simpson part!

Thanks a ton! you saved my dollar's :p