The cost of entry into a cloud environment is very low. In many projects and companies, you start small with aspiration to scale up, but without proper resource management, cost verifications processes, initial cost is increasing dramatically and leads to one of the most common questions while running any of IT infrastructure:

“Why does it cost so much?”

Such question is pointed no matter of the cloud vendor. Moment, when it is asked, depends on many factors, including team knowledge, available resources, company goals and many more – but in most cases – cannot be avoided. In a few upcoming blog entries, I will present some basic guidance and advice on cost monitoring possibilities and information on how to grab some of the ‘low-hanging fruits’ for cost optimization. As a Mirosoft Solution Partner in Data & AI Area I will of course focus on MS Azure, although – many advices can be implemented also in other cloud Vendors.

Cost management

We can look at the costs themselves on several levels, although the most beneficial for most of us is the view related to subscriptions. It allows us to easily split, group or merge resources and verify their costs. We can access our subscriptions by selecting them from the list:

link

Of course – there are many other ways to get there too! Most common roles which can lead you to the view of the costs at subscription level are Cost management reader role, reader or above levels on the subscription, or again – on above levels like management group or tenant. After choosing our subscriptions we will see our target on left side: Cost Analysis

But before going there, on the Overview dashboard you can see first costs summary: “Spending rate and forecast” in center and “Costs by resource” on the right side.

Clicking „View details” will lead you to dedicated and crafted “Cost Analysis” report, which is not the same report or placement at the page, as in “Cost Analysis” above – but provides same functionalities for the user. We end up usually with an “Accumulated Cost” diagram and basic summary and forecast of the costs.

Small digression:
The red line and marked on red diagram is shown if we have a budget defined (line) and it is already overage. If you don’t have it – it is wise to define it in line together with defining the notifications on budget realization.

Sample definition:

Returning to main topic, personally, I prefer the “Daily Cost” view instead of accumulated one. What is important here and mandatory to remember, is to choose correct days for reviewing the costs! By default, systems take 30 days back since today:

To compare ‘apples to apples’ it is best to change the date scope to Current month, and if required – switch to previous one:

Why that way?

Most of the resources are creating costs in base of usage (even if price is constant), but on the first of the month some of services are paid with monthly price, this includes for example licenses and is visible here as one of the parts of the grey column on first day of month:

Note, on the diagram You can see top10 consumers. Where “other” contain all resources that are not in the top 9 other services. It is easier to verify costs if the timeline is known and standard across comparisons.

Now the first part of cost optimizations starts:

Identify resources and services with the highest cost consumptions that should be verified. It is quite often visible that the 80-20 Pareto’s rule applies also to Azure costs – 80% of costs are created by 20% of resources! Recommended way of investigation the costs, is of course – going from top to bottom and check the biggest costs at the beginning. The size of the columns provides us some basic information, but more details are visible at the bottom:

Each diagram provides different information. Personally, to speed up verification I changed the part “Location” to “Resource”. That way I can identify resources and services that should be verified at the beginning. Thanks to that approach, we can also get to know more about our infrastructure and the costs that they create.

To finish the first blog entry of the series of Azure costs optimization let’s get the first, often forgotten ‘low-hanging fruit’. Licensing in cloud provides many possibilities for cost optimization, it could be even a separate topic in our blog. But the service that can be easily verified and tuned is:

Azure DevOps licensing

It’s natural cooperation – if you have infrastructure or services in Azure, the first choice of the software to manage the project is Azure DevOps. System that allows to lead and manage the project, define tasks, perform CI/CD and many more. But tell me, how often do you review the assigned licenses? Do you know the costs of them and what is most important – if someone really need this type of license? It’s common thing that when we work with DevOps on new projects, we grant access and assign privileges for users to access it. By default (if it is not changed in organization settings), we assign the “Basic license”, in some cases “Basic + Test”, but it’s rather rare to assign “Stakeholder” license at beginning of the project.

While the pricing is like:
Stakeholder: 0 $
Basic: 6$ per user per month
Basic + Test: 52$ per user per month

There is also a 4th type of licensing available “Visual Studio Subscriber” – license can be granted when user ID has assigned Visual Studio license and for it, DevOps services are free. Differences between Basic and Stakeholder are described at:

link

But to describe those differences in short: Stakeholder access allows you to see almost everything, but not to work with code or manage sprints and boards. In fact – such type of access is enough for all users that are not the developers or PMs/Data Analysts and… often for people that are assigned to projects at late phase and don’t have tasks related to code writing.

That costs optimizations technics, which should be visible now for you, consist of three points following points:

      1. Remove DevOps access for users that does not require it.
      2. Change license type from Basic to Stakeholder when applicable.
      3. Avoid Basic + Test if it is not required.

To check user assignments, you need to go to Organization Settings, Users tab. Link where tenant_name is the name of your organization in DevOps. While doing the user review, look especially on the Last Login date column – which can give you valuable information if access/account is still required. For example, if somebody logged in half a year ago, does that person still require licensed access? In some companies there is a policy to change the access level to Stakeholder if user does not login for more than X months – from the cost perspective – it’s good approach, and the X in standard setup is usually set to 2 or 3 months.

 

Is it worth it?

Of course – small benefits from one month, cumulate to thousands in a year.

Sample:
From more than 300$ per month in each of the months of the first half of the year to less than 80$ per month after 2 iterations of checks and costs optimization processes. That gave in comparison around 250$ of costs reduction per month. If we multiply it by the number of months – saving looks solid, and this is only one of the services for cost optimization that we went through!

If you are interested in other tips for cost optimization – please wait for next Blog entry. Although – if you already asked yourself the “why it cost so much?” question – please feel free to contact us at contact@datariselab.com – we will support you in the journey for cost decrease.