Devizur
All insightsCloud

Why We Use Microsoft Azure for Modern Business Applications

An engineering case for using Azure as an operating platform for .NET business systems: deployment, data, cache, identity, secrets, monitoring and reliability.

Soud Al Raihan22 January 20263 min read
UsersFront DoorApp ServicePostgreSQLRedisKey Vault

History and context

Pre-cloud
Teams provisioned servers, operating systems, runtimes, backups and monitoring directly.
IaaS era
Virtual machines made infrastructure programmable but left significant operating-system responsibility with application teams.
PaaS era
Managed application platforms moved more responsibility to the cloud provider while preserving control of application code.
Today
Azure architectures combine managed hosting, databases, secrets, observability, networking and AI services according to workload requirements.

IaaS, PaaS and SaaS

IaaS

Maximum infrastructure control. More patching and runtime responsibility.

PaaS

Application control with a managed hosting environment. Often a strong fit for business APIs.

SaaS

Finished application consumed by users. Lowest infrastructure ownership.

Our preference

Use PaaS where it removes undifferentiated operations without blocking required application control.

Reference Azure architecture

Azure Front DoorNext.js / WebAzure App ServicePostgreSQLManaged RedisKey VaultApp Insights
A typical Azure business application can remain structurally simple while using managed services.

Why App Service is often enough

ASP.NET Core applications do not need to become container-orchestration projects simply because they run in the cloud. App Service can be a pragmatic default for many APIs and web workloads. Containers or Kubernetes should appear when they solve a concrete packaging, scheduling or operational problem.

C# / Program.cs
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddHealthChecks();

var app = builder.Build();

app.MapControllers();
app.MapHealthChecks("/health");

app.Run();

CI/CD and controlled releases

A production deployment should be reproducible from source control.

Azure Pipelines YAML
trigger:
  branches:
    include:
      - release/uat

pool:
  vmImage: ubuntu-latest

steps:
  - task: UseDotNet@2
    inputs:
      packageType: sdk
      version: '10.x'

  - script: dotnet restore
  - script: dotnet test --configuration Release
  - script: dotnet publish --configuration Release --output out
CommitBuild + TestStaging SlotHealth CheckProduction
A release path should make validation a normal stage, not an emergency activity.

Secrets and managed identity

Passwords and signing keys should not be committed to repositories. Key Vault and managed identity patterns reduce dependence on long-lived credentials embedded in application configuration.

Observability is an architectural capability

C#
logger.LogWarning(
    "Payment failed for OrderId {OrderId}. ProviderCode {ProviderCode}",
    orderId,
    providerCode);

Useful telemetry includes request latency, dependency duration, database time, payment error rate, cache hit ratio, queue backlog, CPU, memory and business-level success measures.

Five quality dimensions

Microsoft's Azure Well-Architected Framework evaluates workload design through reliability, security, cost optimisation, operational excellence and performance efficiency. These pillars are useful because cloud architecture is never only a scaling exercise.

Business value and practical considerations

Why we use it

  • Strong .NET ecosystem
  • Managed data services
  • Integrated monitoring
  • Identity and secret tooling
  • Mature CI/CD options

Considerations

  • Cost governance
  • Service sprawl
  • Database design
  • Release safety
  • Application-level security
SA
Soud Al RaihanCloud and platform engineering · Devizur

References

Primary documentation used for terminology and current platform guidance: