Tech Hub

@ Solution Architecture Works

Control Azure Spending and Manage Invoices with Microsoft Cost Management + Billing

Design for pricing optimization

Estimated reading: 4 minutes 27 views

You don’t always need to rebuild everything or renegotiate to save money.

Sometimes, it’s enough to make better use of what you already have. If you don’t optimize existing resources and operations, you risk wasting money without real benefit.

Example Scenario

Contoso’s Business Intelligence (BI) team hosts a suite of GraphQL APIs to allow different departments to access data without directly interacting with databases. Over time, they added versioning and run everything through an Azure API Management gateway at the Consumption tier.

Behind this gateway are three Azure Kubernetes Service (AKS) clusters:

  • One cluster with Windows nodes for .NET 4.5 APIs
  • One Linux cluster for Java Spring APIs
  • One cluster with Windows-on-Linux nodes for .NET Core APIs, inherited from another team

These clusters are only used for APIs and are now all managed by the BI team. It’s not an ideal setup, but it works, so they left it as is.

As the BI team is a cost center, they aim to optimize pricing to reduce operating costs.

Consolidate infrastructure where appropriate

Try to consolidate resources, workloads, or teams into a single environment. Use services that allow you to do more with less. Evaluate trade-offs, especially regarding security.

By packing more utility into fewer systems, you use less hardware and reduce management costs, meaning less complexity and more savings.

Contoso’s Challenge

Contoso follows Microsoft’s AKS reference architecture. They run three clusters, each with three system nodes, totaling nine nodes.

They apply updates to all clusters three times a month.

Approach and Results

After testing, the team decides to consolidate all APIs into a single cluster with three user node pools, while maintaining the same performance and OS characteristics.

They also reduce the system node pool to four nodes, saving five virtual machines.

Now they only have one cluster to maintain, saving time.

Next step: merge two Linux pools to simplify even further.

Take advantage of reservations and infrastructure discounts

Optimize by committing long-term to resources with predictable usage to benefit from discounts. Work with your licensing team to influence future purchase agreements and renewals.

Microsoft offers discounted rates for long-term commitments on specific resources. These resources cost less during the usage period and can be amortized.

Contoso’s Challenge

Now that the team has consolidated clusters, they want to reduce costs even further.

The BI team is satisfied with the AKS platform and plans to continue using it, even increasing usage.

Approach and Results

Since AKS is based on Azure Virtual Machine Scale Sets, the team explores Azure reservations.

They know the SKUs and scaling units needed for user nodes.

They purchase a 3-year reservation covering the system node pool and the minimum number of instances per user pool.

Result: better pricing on compute needs while allowing workload growth.

Use fixed-price billing where appropriate

Switch to fixed-price billing instead of a consumption-based model when usage is high and predictable, and a comparable SKU is available.

This model is often less expensive and offers more features, which can increase ROI.

Contoso’s Challenge

The API Management instances are all deployed at the Consumption tier. After analysis, the team finds that APIs are used globally and sometimes heavily.

They decide to analyze costs between the current model and a fixed-price model.

Approach and Results

The analysis shows that moving to the Standard tier would be less expensive overall, given current usage patterns.

As services grow, savings will increase even more.

Bonus: the Standard tier allows using a private endpoint for inbound connections, which the team wanted to implement.

This SKU change benefits both cost optimization and network segmentation thanks to the private endpoint.

Share this Doc

Design for pricing optimization

Or copy link

CONTENTS