Entorno-Multi-Tenant-Azure-Gestión-Recursos-costes-modelo-de-precios-Itequia (CAT)

How to Manage Your Customers in an Azure Multi-Tenant Environment | Part 3: Pricing model and resource and cost management

In the previous two parts of this series of articles on How to manage your customers in an Azure multi-tenant environment:

We highlight important points of the journey that we must take into account when creating a multitenant solution:

  • Isolation levels between tenants
  • Limits and escalation
  • Tenant life cycle: architecture and usage decisions

Even so, with all this information to work on, there are points that we still need to analyze and know to make decisions:

  • Azure compute resource management
  • Cost Management 

These are the points that we will review in this new article, and at this level, we will finally be able to decide which pricing model to apply to our system.


Azure Computing Resource Management

There are several ways to carry out this management. We must have within our radar concepts such as:

  • webserver
  • AppServices
  • load balancing
  • Statefulness – Management of the state of each Tenant

When designing how we will manage computing resources. We can find more detail in Architectural approaches for compute in multitenant solutions


There is a specific aspect of this resource management that I would like to emphasize. Returning to the simile of “tenant” of a house that we made in the first part of this series of articles; we can find the typical Neighbors.

In the case of an Azure shared environment, with shared total system capacity, a “noisy neighbor” could be that tenant that uses the shared resources so much that it causes them to become unavailable to another tenant:


As we can imagine, this scenario can be complicated when there are more than two apartments in the building and more than one “noisy neighbor”. To mitigate these cases we can consider different strategies:

  • Deploy with oversized shares
  • Dynamically scale the system based on its load. So we make sure we have enough resources for each moment
  • Create multiple resource pools and ensure that the Tenants in those pools have different workloads
  • It is also possible to use throttling to set limits for each tenant

To ensure that our Tenants will have the service they need at all times. Remember that “dedicated environment illusion” we discussed in the first article of this series.

Cost management in a Multi-Tenant environment

At first sight we may think: “Azure cost management seems complicated enough for a single Tenant, how should it be for multiple Tenants?” How can I charge my clients for the cost of Azure resources they have used?

En el artículo “Architectural approaches for cost management and allocation in a multitenant solution” podemos encontrar todas las herramientas necesarias y consideraciones que tenemos a disposición para este tema: 

  • Utilizar Resource Tags para etiquetar los recursos de cada Tenant. Este caso se complica en un entorno compartido. 
  • Utilizar la instrumentación: 
    • Por ejemplo: medir el número de peticiones de cada Tenant mediante: 
      • Event Hubs (tratando cada petición como si fuese un evento) 
      • Application Insights que no está pensada para esta labor ni se recomienda usarla, aunque hay gente que las utiliza 

Regarding cost management, we must take into account the precision we want. To do this, we can ask ourselves the following questions:

  • Why am I measuring? What is my purpose?
  • Do I need approximate costs or exact costs?
  • How will I manage shared components?

and analyze how to respond to each of them with the resources provided by Azure.

Pricing models

At this point, we are clear about everything we need to be able to manage a multi-tenant environment in Azure. But as usual, we want to make money with our platform, so what pricing models can I use?


The answer to this question is closely linked to what our business model will be since it will have a direct relationship with the price model to offer.

The price models are already complex in themselves, in this article we will review some brushstrokes about them. You can find more details in “Pricing models for a multitenant solution”.

Some pricing model options we have are:

  • Charge each tenant a flat fee: regardless of how many system resources each tenant uses.
  • Charge each Tenant for consumption: but as we have seen it is a difficult point to predict with which it will also be difficult to predict our cost and our benefit.
  • Apply the Freemium model: offer some functionalities and/or features of our system for free and charge for others that are added or improved.
  • Tiered Pricing: In this option, we do not offer anything for free, but we do offer different categories of our system, each associated with a set of functionalities that can be used. It would be in the style of “Bronze, Silver, Gold”

In summary, whatever pricing model we wish to apply, we must take into account:

  • Measure the use of resources by each Tenant
  • Manage total or partial costs
  • Secure Usage Limits
  • Consider, if it applies in our system to activate and deactivate functionalities 

Managing a Multi-Tenant environment in Azure

In this series of articles we have learned the management of a multi-tenant environment in Azure by going through:

  • The different insulation options that we can apply
  • Limits and scaling
  • The life cycle of a tenant
  • Computer management
  • Costs
  • Prices 

There are more technical and architectural aspects that we must also take into account. You can review all of them in this Microsoft training, “Managing Your Customers in a Multi-Tenant Environment” which has been the most important source of information to develop these articles. 

Oriol Fernandez Moreno – Key Software Developer at Itequia