I've tried the alternatives. I've shipped things to AWS, poked around GCP, and spent time on DigitalOcean and Fly.io. They all work. But I keep ending up back on Azure, and at this point it's not accidental.
This isn't a feature comparison or a benchmark. It's just the honest answer to a question I get fairly often: why Azure?
It Fits the Stack I Actually Use
I build with .NET and React. That's my default. And Azure is built by the same company that builds .NET. That alignment isn't cosmetic. The SDK integration is genuinely better. The documentation uses C# examples first. App Service has first-class support for .NET runtimes on day one, not weeks after a release. When .NET 9 shipped, Azure had it available almost immediately.
On AWS, .NET is a second-class citizen. It works, but you feel the friction. On Azure, things just line up.
The Portal Is Actually Usable
The AWS console is a maze. I've been using it for years and I still occasionally can't find what I'm looking for. The Azure portal is not perfect, but it has a coherent mental model. Resources belong to resource groups. Resource groups live in subscriptions. Subscriptions belong to a tenant. That hierarchy makes sense and it makes managing access, billing, and cleanup straightforward.
Azure's cost management tooling is also genuinely good. You can tag resources, set budgets with alerts, and get a breakdown by service that's actually readable. I've caught billing surprises early because of it.
Entra ID Changes How You Think About Auth
Before I started using Azure properly, authentication was always a bit of a project. You'd set up a library, manage secrets, wire up refresh tokens. On Azure, once you're in the ecosystem, Entra ID (formerly Azure AD) handles so much of that you almost forget it's there.
Managed identities are the best example. My App Service can talk to a database, a storage account, or a Key Vault without a single connection string in my config. The service authenticates itself. There's nothing to rotate, nothing to accidentally commit to version control. It's one of those things that sounds like a minor convenience until you've had a credentials leak and realise how much surface area you've been carrying.
The Ecosystem Covers Most of What I Need
In a typical project I'll touch: hosting (App Service or Container Apps), a database (Azure SQL or Cosmos DB), blob storage, a CDN, a key vault, maybe a service bus. On Azure, all of those are first-party services with consistent authentication, consistent RBAC, and consistent tooling through the Azure CLI and Bicep.
I'm not gluing together services from five different vendors. Everything is in one place, billed in one place, monitored in one place. That might sound boring, but boring infrastructure is good infrastructure.
Azure DevOps Is Still the Best CI/CD I've Used
I know this one is contested. People love GitHub Actions, and it's fine. But Azure DevOps Pipelines give you more control over environments, approvals, and deployment gates than anything else I've tried. For anything beyond a simple web app — anything with multiple environments, release trains, or compliance requirements — Azure DevOps is hard to beat.
The integration with Azure resources is tight. Deploying to App Service from a pipeline is a few lines of YAML and a service connection. The audit trail is built in. The approval flows are built in. You don't have to cobble it together.
It Scales Without Rewiring Everything
Starting small on Azure doesn't box you in. An App Service plan can scale up or out. If you outgrow it, you move to Container Apps or AKS without changing your application code. The networking model, the identity model, and the storage layer all carry over. You're not starting from scratch when requirements change.
I've seen teams migrate from App Service to AKS in a week because they'd already been using Azure resources throughout. The same migration on a different cloud would have been a bigger lift.
It's Not Perfect
Azure has rough edges. Some services have confusing naming. The documentation can be inconsistent between old and new portal experiences. Pricing on some services, particularly networking egress, is genuinely irritating.
And if your team lives in the AWS world, switching has a real learning cost. Tools, mental models, and existing IAM setups don't transfer cleanly. The best cloud is often the one your team already knows.
But for a .NET developer building production software, Azure is where the ecosystem, the tooling, and the defaults line up best. That's why I keep coming back to it.



