Design with a cost-efficiency-focused approach

Every architectural decision impacts your budget, whether it’s the choice to build or buy, the tools you use, or licenses and training. It’s important to weigh these options and make trade-offs that meet your application’s needs without exceeding costs.
Example Scenario
Contoso Manufacturing uses a custom warehouse management system (WMS) to manage its four warehouses in South America. The company wants to modernize and migrate this system to the cloud. It is debating between a lift-and-shift migration or a complete rebuild using modern cloud tools. Management wants to keep costs under control, so the team must propose a cost-effective solution.
The WMS is a .NET application running on IIS and uses SQL Server as its database.
Understand the total cost of your design
You need to measure the total cost driven by technology and automation choices, considering their impact on return on investment (ROI). The design must meet functional and non-functional requirements while remaining flexible for future evolution. Include acquisition, training, and change management costs.
A balanced approach that considers ROI helps avoid over-engineering, which could unnecessarily increase costs.
Contoso’s Challenge
The engineering team is excited about migrating the system to the cloud, as other teams have done.
Knowing the current application has technical debt, they consider rewriting much of the code and using modern cloud-native tools.
They want to rebuild everything as microservices and use Azure Kubernetes Service (AKS), a new and exciting platform for them.
Approach and Results
Although motivated by a full rebuild, the team knows it must preserve ROI. It therefore chooses tools it already knows and avoids major rewrites that would require additional training.
It adopts a pragmatic approach: an equivalent solution in the cloud, such as Azure App Service, which is more familiar and less risky.
The team establishes a cost baseline including infrastructure, licenses, operations, and less visible factors like training, code rewrites, and change management. This gives them a clear view of what is achievable within their budget, confirming their choice of App Service.
During migration, the team plans to fix some technical debt to improve the platform once on Azure, while keeping ROI in mind.
Refine the design
Optimize the design by prioritizing services that reduce costs, require no additional investment, or have no significant impact on functionality. This prioritization should consider the business model and technology choices that offer strong ROI.
Explore more economical options that allow resource flexibility or dynamic scalability, or justify the use of existing investments. Prioritization parameters can include costs related to critical workloads, execution, operations, and those that improve team efficiency.
Contoso’s Challenge
The current workload is hosted on an HCI (hyper-converged) appliance, and the team’s cost center is billed for compute, network, and storage.
Pre-production and production environments are deployed on Windows virtual machines.
GitHub Actions with self-hosted runners is used to run CI/CD tasks.
Approach and Results
After evaluating several cloud-native options, the team decides to migrate web components to App Service, which offers IIS compatibility without major changes or additional training.
It continues using GitHub Actions with self-hosted runners but moves them to a set of scalable virtual machines, with the ability to scale to zero when not in use.
Design an architecture with financial guardrails
Set cost limits in your architecture to keep spending within a safe range and ensure cloud costs remain under control.
Applying limits helps avoid unexpected charges and ensures you only use what is planned in the budget.
Contoso’s Challenge
The current system has no financial guardrails, but since it rarely changes, no one felt the need to add them.
The HCI environment owners set a resource cap, so the workload cannot exceed certain compute or storage limits.
The team fears that migrating to the cloud will lead to unexpected costs, without knowing how to prevent them.
Approach and Results
The team learns to use Microsoft Cost Management solutions.
It plans to:
- Set scalability limits for App Service plans
- Implement a deny policy to block certain expensive VM SKUs
- Automate storage management: older or infrequently used data will be automatically moved to cheaper tiers like cold or archive, which was not possible in their previous HCI environment.