Skip to content
Cloud & Infrastructure8 min read

AWS vs Azure for a growing business

Both are excellent and the comparison as usually written is unusable — hundreds of services against hundreds of services. For a business with a handful of workloads, three factors decide it, and none of them appears in a feature matrix.

AWSAzureEntra IDTerraformDocker

This comparison is normally written as a catalogue against a catalogue. Both providers offer compute, storage, databases, networking, identity, containers, serverless and several hundred other services, and both do all of it competently.

For a business running a handful of workloads, that comparison is unusable. You are not going to use more than a small fraction of either catalogue, and the parts you will use are equivalent.

Three things actually decide it, and a fourth decides how much the decision matters.

The first factor: where your identity already lives

Identity is the deepest integration a business has with a cloud provider, and it is the hardest to unpick later.

A business already running Microsoft 365 has an identity tenant, users, groups, licensing and conditional access policies in the Microsoft ecosystem. Using the same identity for cloud resources means one directory, one set of groups, one offboarding process, and one place where access is reviewed.

The alternative is a second identity system, federated or synchronised, which is the source of the specific failure discussed elsewhere on this site: a leaver disabled in one directory and still active in the other.

For the large number of growing businesses already on Microsoft 365, this factor alone reasonably decides the question. It is not a statement about which platform is technically better; it is a statement that one directory is materially safer to operate than two.

The second factor: licensing you already own

Existing licensing changes the arithmetic in ways that do not appear in a per-hour price comparison.

  • Windows Server and SQL Server licensing with active support may be applicable to cloud workloads under specific terms, which materially changes the cost of running Windows workloads.
  • Existing enterprise agreements may include commitments or credits that are already paid for.
  • Where the estate is mostly Linux and open-source, this factor disappears entirely and the decision reopens on the other two.

Two cautions apply. These programmes have eligibility conditions that are specific and change over time, so the position must be confirmed with the vendor or reseller in writing rather than assumed from a summary. And a licensing advantage should not be allowed to override the identity and skills factors, because it is the most likely of the three to change.

The third factor: who will operate it

Cloud infrastructure is not self-operating. Someone has to design the network, apply the access controls, monitor the spend, respond when something breaks, and keep the whole thing from accumulating resources nobody can account for.

The platform your people can operate confidently is worth more than a marginal advantage in a service comparison, for the same reason it is worth more in every other infrastructure decision on this site. This is the factor most often overridden by a technical argument and most often regretted.

How the three factors combine
SituationIndication
Microsoft 365, Windows estate, Windows-familiar teamAzure, clearly
Linux estate, open-source stack, Linux-familiar teamAWS, or either — the identity argument weakens
Existing team with deep experience in one platformThat platform
A managed provider will operate itWhichever they operate well
Neither, and no in-house capabilityThe question is whether to use raw cloud at all

The last row is a real answer rather than an evasion. A business with no infrastructure capability buying raw cloud infrastructure has bought a system it cannot operate, and managed platforms or a managed service provider frequently serve better than either provider's primitives.

The fourth factor: how much this decision matters

The weight of the choice depends almost entirely on how deeply the architecture couples to provider-specific services, and that is under your control.

Coupling, and what it costs to leave
ArchitecturePortability
Virtual machines running containersHigh — moves with modest effort
Managed database, standard engineModerate — data moves, configuration is redone
Managed KubernetesModerate — the workloads are portable, the surrounding setup is not
Provider-specific serverless and event servicesLow — business logic is written against one provider
Provider-specific AI and data servicesLow — usually a rewrite

This is not an argument against managed services, which are frequently the right choice and are much of what makes cloud worth using. It is an argument for knowing where the coupling is, and for keeping the parts that encode how your business works less coupled than the parts that do not.

A practical middle position: run compute in containers so the workload is portable, use managed services for the undifferentiated parts such as storage, queues and databases, and keep core business logic out of provider-specific execution models.

The costs that surprise people

These apply to both providers, and they are the reason cloud bills exceed estimates rather than any difference between the two.

  • Egress. Sending data out is charged, receiving is generally not. A workload continuously serving data back to the office accrues a recurring cost absent from the migration estimate, and it is also what makes leaving expensive.
  • Idle resources. Machines provisioned for a project that ended, disks detached from deleted instances, environments nobody switched off. This grows silently and is the most common form of waste.
  • Cross-zone and cross-region traffic. Charged, frequently overlooked, and easy to generate accidentally with a redundant architecture.
  • Support plans. Meaningful response commitments are a paid tier on both platforms.
  • The learning period. The first months of any cloud deployment are more expensive than the steady state, because sizing is guessed before it is measured.

Two controls address most of this and neither is difficult: budget alerts configured before the first workload deploys, and mandatory tagging so every resource is attributable to a project or owner. Untagged resources are the ones nobody deletes, because nobody can establish whether anything depends on them.

How to actually decide

  1. 1

    Confirm the workload belongs in cloud

    Per workload, on demand shape rather than on principle.

  2. 2

    Establish where identity already lives

    For most growing businesses this is the single strongest indication, because one directory is materially safer to run than two.

  3. 3

    Check existing licensing eligibility in writing

    From the vendor or reseller, with a date. It can change the arithmetic substantially and the terms are specific.

  4. 4

    Be honest about operating capability

    Named people or a named provider. If neither exists, revisit whether raw cloud infrastructure is the right shape at all.

  5. 5

    Decide the coupling deliberately

    Which parts may be provider-specific and which must stay portable. Written down, before building.

  6. 6

    Set budget alerts and tagging before the first deployment

    Both are trivial at the start and painful to retrofit across an existing estate.

  7. 7

    Model egress if anything data-heavy is involved

    From real transfer volumes, because it recurs and it is what makes reversal expensive.

Which is better for a growing business, AWS or Azure?

Neither, in general — both are capable across everything a business of this size will use, and the catalogue comparison is not decidable at that scale. Three factors decide it in practice: where the business's identity already lives, what licensing it already owns, and which platform the available people can operate confidently. For a business already running Microsoft 365, the identity factor alone reasonably settles it, because one directory is materially safer to operate than two.

Does existing Microsoft licensing affect the cloud decision?

It can, substantially, for Windows and SQL Server workloads, because existing licences with active support may be applicable to cloud under specific terms that do not appear in a per-hour price comparison. Two cautions apply: the eligibility conditions are specific and change, so the position must be confirmed with the vendor or reseller in writing, and a licensing advantage should not override identity or operating capability since it is the most likely of the three factors to change.

How hard is it to move between cloud providers later?

It depends entirely on how deeply the architecture couples to provider-specific services, which is under your control. Containers on virtual machines move with modest effort; managed databases on standard engines move with more; provider-specific serverless, event and AI services generally mean a rewrite. A workable middle position is to run compute in containers, use managed services for undifferentiated parts such as storage and queues, and keep core business logic out of provider-specific execution models.

Why do cloud bills exceed estimates?

Usually for reasons common to both providers rather than any difference between them: data egress charges on anything continuously serving data outward, idle resources from ended projects and detached disks, cross-zone traffic generated accidentally by redundant architectures, paid support tiers, and a learning period where sizing is guessed before it is measured. Budget alerts configured before the first deployment and mandatory resource tagging address most of it.

What if we have no in-house cloud capability?

Then the honest question is whether raw cloud infrastructure is the right shape at all rather than which provider to buy it from. Cloud infrastructure is not self-operating — someone must design the network, apply access controls, monitor spend and respond to failures. A managed platform or a managed service provider frequently serves such a business better than either provider's primitives, and choosing between AWS and Azure without answering this is choosing where to put a system nobody can run.

Sources and further reading

Services This Relates To

Written by KYCONNECTS Engineering. Client names are withheld under confidentiality.

Talk Through Your Requirements

We typically respond within 4–8 business hours.