Effectively use Azure MSDN Account to avoid exceeding the quota

Many of you use Free MSDN Azure account for Dev/Test. This post is all about using Free Azure account which has a limited quota for use. A lot of times where these kind accounts are temporarily suspected due to the excess use.

I am writing this based on my personal experience maintaining similar account for Dev/Test about 100+ users. I had to worry about billing and coach people if there is a mistake. 

Where is the problem?

Here is how MSDN account works. As an user your get x amount of $ value credited to your account. This is for one month. So you should be able to use it during this one month. But if your bill reach that limit, your account will be suspended for the remaining days of that period. Let say you have used it only for 19 days then next 20 days you cannot use it anymore. Neither you can download anything. Because Azure charges you for all the downloads. It will be activated again once new billing cycle starts.

What is the solution?

Solution is that you need to tell MSDN to charge against your credit card. It can be done through a small setting change in your account. This has two options. 1. You can tell to adjust for current billing only. 2. You can have this setting for the lifetime. As soon as you do this, you account is active again.

When can this happen?

This can happen when you use Azure resources a lot and they have high cost associate.

This can also happen for Non-Microsoft products (interesting)

So if you are using MSDN account and create one Oracle VM from template image. Or you create a JDK Windows Server from template, almost immediately you account might be frozen. You will get frustrated and call up Microsoft. You will almost yell at them saying that you still have dollar value showing how come they have closed it?

Hold on!!! It is because your MSDN account does not have Oracle License. I don't know why but it happened once with me for JDK Windows Server machine as well.

Now these are postmortems. Lets fix them before. Do you really want to be in a face palm situation after all your visionary lectures? No, you never ever wanted to. In front of customer you will definitely lose you credibility.

Let’s discuss some of the tips to avoid premature suspension of account.

VMs are mostly costly. So shutdown ALL your VMs on regular basis. Every day. I recommend you use PowerShell it do it. I keep one PowerShell in my desktop to do it. However, Azure Automation is the best way to schedule it. There is a nice step by step guidance on how to create Azure Automation for VM shutdown. https://blogs.technet.com/b/georgewallace/archive/2014/11/05/shutting-down-a-azure-vm-with-azure-automation.aspx. However this is only for specific VM.

I have a blog post on shutting down all the VMs under all the subscriptions through single PowerShell. Please refer https://blogs.msdn.com/b/wriju/archive/2015/01/09/azure-powershell-shutdown-all-azure-vms.aspx. Let me know if you need any help.

Think twice before selecting VM size. When your have powerful VMs available like A10, A11, D-Series, G-Series, it is tempting. But select as per your stomach’s capacity. Some of these hungry VMs can eat up all your credits very quickly. Like, if you want to use domain specific scenario then put your Domain Controller in a smaller machine like shared (A0). Because at a given point in time at most 2-3 users will connect to that DC.

GRS (Geo Redundant Storage) adds additional costs. Many automated scripts available today in internet deploys server based solution and creates GRS storage account to put their VHDs. In Dev/Test you don't really need GRS. LRS is enough. I use a PawerShell script to check it and modify,

image

HDinsight (Hadoop cluster) is costly. if you are working on HDInsight then you just don't have any choice. The more bigger cluster you make the more quick it will be consumed. So delete as soon as you are done. Don't forget to take the backup of your script etc.

Media Services Live Channel. This is yet another culprit. Hides nicely within portal but generates a lot of bills.

Media Services Streaming. Something also not so cheap.

Identify orphaned Cloud Services. Any PaaS cloud service which does not have active Production/Staging deployment is adding cost for no reason. So identify and delete them. Also there could be cloud services with VMs where you have deleted the VM but not the cloud service. 

Choose lower Azure SQL Database (SQL Azure) tier. You really don't need SQL Database with high DTU. This account is for demos so select lower configuration wherever possible.

Use free Web Apps. Per account one gets 10 free Web Apps (aka WebSites). Use them as much as possible.

Virtual Network with Point-to-Site or Site-to-Site. Whenever you have Virtual Network with P2S or S2S, you have a dedicated Gateway. This adds quite a lot of dollar value. So if you really need it then use, else delete. Now there is a problem, you might need it frequently with VMs. So you need to Capture the VMs so that they are available in your “My Template” section for another deployment with similar installation inside.

Remember when preview product is going in GA. Any service which is in preview must go to GA. So the bill will start. Like today you have DocumentDB in preview hence it is free. But from April 8 2015 onwards it will be GA. Keep this in mind and revisit.

Note: This is purely from my experience. Any suggestions would be helpful. Also this is not recommended in Production scenario.

Stay happy in Cloud