Microsoft Azure, and cloud computing in general, has revolutionized the way developers and organizations utilize software and IT architecture. It has given users unprecendented access to virtually unlimited computing power and storage, on an as-needed basis.

Although cloud resources are more affordable than in-house built alternatives, it doesn’t guarantee that you are making economical use of them. In fact, the convenience of Azure’s simple pay-as-you-go structure actually makes it easier to waste money on resources you don’t really need.

Shamrock Consulting Group has surveyed over one hundred medium to large enterprise companies based in the United States, and found that on average, companies can save over 40% on their cloud usage by following these seven easy to implement strategies. You will find that many of the methods detailed below can be performed in several different ways depending on how you work with Azure. For example, you may prefer to use PowerShell cmdlets, the Azure Resource Manager or various scripting options.

Remove Obsolete Resource Groups

If you are a heavy user of Azure, you might have numerous resources deployed under various resource groups. It is possible that some of these resources are being used and not billed for, so the safest way to be sure is to remove the resource group completely.

You can remove a resource group via Azure Resource Explorer by selecting the relevant tenant, ensuring read/write is selected and navigating to the group you want to delete.

Alternatively, you can use the PowerShell method, as follows:

First, define the resource group:

$ResourceGroupID = “/subscriptions/<subscriptionID>/resourceGroups/<sourceResourceGroupName>”

Then, run the following:

Remove-AzureResource -ResourceId $ResourceGroupId -ApiVersion 2014-04-01 -Force

Note that the force parameter bypasses the need to confirm the removal, so once this command has been run, there is no recovering the resource group or any associated resources. Use with caution!

Set up projects using DevTest Labs

If you are using Azure mainly to test applications, consider setting up VMs via DevTest Labs (https://azure.microsoft.com/en-gb/services/devtest-lab/)

DevTest Labs is a lean test environment designed to minimize resource wastage. By optimizing your development environments from the outset, you can precisely decide when you use (and pay for) VMs, storage, etc. ahead of time.

You can set up individual labs for different types of projects, allowing you to minimize wastage by setting quotas/thresholds and lab policies/settings such as automated shutdowns. For example, you might want to specify a maximum number of VMs for a specific lab in the configuration and policies panel.

DevTest Labs also helps developers work more efficiently in general. For example, you can design reusable templates and share them across your team. Plug-ins and the REST API can be utilized for CI tool integration.

Understand the Difference Between Stopped and Stopped (De-Allocated) Resources

As you will learn, your ongoing Azure charges depend on VM size and Operating System, among other factors. However, you may not realize that it is possible to stop running a VM and yet still be charged for the resources allocated. This will happen if you shutdown using the remote desktop only.

In this case, the billing for your software license will be paused, but you will still be charged for the core CPU resources. The status of the VM will be shown as ‘Stopped Allocated.’

For significant cloud cost reduction, you need to de-allocate the VM. This can be done via the Azure Portal by selecting the appropriate VM blade and hitting the stop button. The status will then show as ‘Stopped De-Allocated.‘ Stopping a VM in this way when it is not being used can save you hundreds of dollars per month.

There are two further details to note. First, even when de-allocated, you will be still be billed a small amount for storing the .vhd image in your Azure Storage account. Second, when de-allocating a VM, you will lose any associated dynamic IP addresses. If this will be an issue, make sure you get a static IP set up for that VM prior to de-allocation.

Make Use of Shutdown Automation

In a busy IT environment, it is very easy to lose track of time and forget to shut down VMs when you have finished with them. Fortunately, Microsoft has introduced a handy auto-shutdown feature to the platform.

To schedule VM shutdown, all you need to do is access Azure Portal and navigate to the VM blade you want to manage. Click the auto-shutdown button and ensure that the ‘Enabled’ option is set to ‘On’ (highlighted in blue).

You can then set a scheduled shutdown time and choose the relevant time zone. If you are worried that your VM might shut down in the middle of a project (should you run past the scheduled shutdown time), you can set a 15-minute warning to be called to your webhook url.

If you prefer to use scripts to manage your VM resources, you will find plenty of SDKs and command-line scripts on the Azure Downloads page.

Use Azure Storage Efficiently

Now this may seem like common sense, but if you want to store large amounts of data in Azure, use the Azure Storage PaaS. It may sometimes seem more convenient to fire up your VM and store data there, but it is more expensive that way. Unless you need fast access to the data, it is most economical to use Azure Standard Storage.

Optimize your Housekeeping

The best way to ensure that you are not paying for resources that you do not need is to tightly organize your virtual environments.

By collating VM resources under logical resource groups (by application or department, for example), you can then manage them more effectively.

In PowerShell, use the following code to migrate resources from one group to another:

First, define the source resource group:

$sourceResourceGroupID = “/subscriptions/<subscriptionID>/resourceGroups/<sourceResourceGroupName>”

Next, define the target resource group and the resources you are moving:

$ParametersObject = @{targetResourceGroup = “/subscriptions/<subscriptionID>/resourceGroups/<targetResourceGroupName>”;

resources = “<resourceID_1>”,

“<resourceID_2>”,

“<resourceID_3>”}

Then, run the following:

Invoke-AzureResourceAction -ResourceId $sourceResourceGroupId -Action moveResources -Parameters $ParametersObject -ApiVersion 2014-04-01 -Force

Again, the force parameter bypasses the need to manually confirm the action.

Leverage Third Party Cloud Cost Optimization Software

While Microsoft provides some easy to use and comprehensive tools for managing costs and governance in Azure, they are still a company that wants to maximize revenues and profits from their customers. As such, if your company is doing a new cloud deployment or has reached a critical mass of cloud expenditure, your best option for enforcing best cloud practices, automating cost saving decisions and rectifying wasted expenditure with the single click of a mouse is to leverage a third party cloud cost optimization software platform.

How Shamrock Can Help

If you are currently in the process of organizing your cloud computing infrastructure or already operating on a cloud basis, Shamrock can help optimize your costs. Our vast experience within the sector has given us a privileged insight into the many tools available for both private and public cloud deployments.

Not only can we advise on the most effective cloud management tools for your situation, we can also provide many of these third party tools at guaranteed best rates.

If you are yet to decide on how you will implement cloud computing into your business, Shamrock provides an entirely comprehensive service. First, we will contact you to understand your requirements and budget before conducting a free audit of your existing services (if required). We will also schedule either an in-house or remote workshop before presenting you with our advice on the best platform and custom design options to use, including a detailed pricing breakdown. If you do decide that Azure is for you, we can directly connect you into their data centers using Azure ExpressRoute (we are also AWS Direct Connect providers if Amazon is more suitable for your needs).

Azure and other cloud computing services have the ability to save your business a lot of money. By following our seven steps and getting in touch with Shamrock Consulting, you can realize more bottom line savings on your cloud deployments than any other alternative.

Ben Ferguson

Ben Ferguson

Ben Ferguson is the Senior Network Architect and Vice President of Shamrock Consulting Group, the leader in technical procurement for telecommunications, data communications, data center and cloud services. Since his departure from Biochemical research in 2004, he has built core competencies around enterprise wide area network architecture, high density data center deployments, public and private cloud deployments, and Voice over IP telephony. Ben has designed hundreds of wide area networks for some of the largest companies in the world. When he takes the occasional break from designing networks, he enjoys surfing, golf, working out, trying new restaurants and spending time with his wife Linsey and his dog, Hamilton.