Having worked with the Windows Azure Platform since 2008 it’s easy to forget some of the initial hurdles I ran into and assume that others won’t have the same challenges. Of course, any time you assume anything you risk being wrong. Rather than assume you won’t run into the issues I did, I thought it would be good to review some of the lessons I’ve learned over the years and share what I’ve learned. Lesson number one is all about billing.
Question, under which scenario will Microsoft bill me for Windows Azure compute instances?
Scenario A: My service is deployed, running and ready to receive requests
Scenario B: My service is deployed, stopped and will not receive requests
When Windows Azure became commercially available in early 2010 my initial assumption was that I would only be charged in scenario A above. So, I deployed several services, tested them out, and then stopped them, assuming I could start them up again on demand and only pay for when they were actually running. Of course, my downfall was the fact that I made an assumption. Imagine my surprise when I received a bill for $75 at the end of the month for services that I had running for no more than 10 hours. After doing some digging into the pricing documents I realized that Microsoft charges based on deployment not on status.
If we take the technology out of the equation and apply an analogy it might make a bit more sense. Let’s say I’m traveling and need a place to stay for three nights. The logical thing to do would be to reserve a hotel room for my trip. When I reserve my hotel room I’m not just booking it for the time I’ll be in the room, I’m reserving it for the entire three days. This means I can come and go when I please during the length of my stay. Similarly with Windows Azure, if I deploy a service, regardless of whether or not it’s running, I have at least one reserved virtual machine in Microsoft’s data center, which means I will incur charges based on the size of the instance(s) deployed.
So, the answer to the question is that Microsoft will bill me under both scenarios A and B.
The moral of the story is that while operationally it’s important to know what you have running in Windows Azure, financially it’s important to know what you have deployed to Windows Azure.