Skip to main content
Cloud DevOps Solutions
Get a quote Talk to an engineer

Cloud platforms

Build and run AWS the way production demands

AWS is Amazon's cloud platform, with the broadest catalogue of managed services of the three major clouds. We design AWS landing zones, multi-account structure, identity, networking and cost controls, then provision everything through Terraform so it is reviewable, repeatable and cheap to operate.

Key takeaways

  • Separate accounts for workloads, environments and security give you the strongest blast radius boundary AWS offers.
  • Identity is the real perimeter: federated SSO, short-lived credentials and permission boundaries beat long-lived access keys.
  • Most AWS bills are driven by a few line items (compute, data transfer, storage), so tagging and ownership matter more than clever tricks.
  • Lean on managed services such as RDS, EKS, SQS and S3 unless you have a specific reason to run the software yourself.
  • AWS is not always the right answer: a Microsoft-centred organisation or a data-heavy team may be better served elsewhere.

What teams use AWS for

Startup production platform

A clean multi-account foundation, a sensible VPC and a managed database so a small team can ship without inheriting a console-built mess.

Regulated or customer-audited workloads

Account separation, centralised logging, encryption by default and guardrails that make security questionnaires and audits easier to answer.

Kubernetes and container platforms

EKS or ECS with Fargate on top of a well-designed network, with workload identity and cost attribution built in.

Data and event pipelines

S3-based storage, queues and streams, and managed analytics services that scale without a dedicated operations team.

Migration from other hosting

Moving from a single server, another cloud or a console-built estate into a structured AWS environment, in stages.

Why teams choose AWS, and what it really asks of you

AWS is the cloud with the widest range of managed services, the largest hiring pool and the most third-party tooling built around it. That breadth is the reason most startups and scale-ups land there. It is also the catch: with several hundred services and a permissions model that can express almost anything, a poorly structured AWS account becomes expensive and risky quickly.

Our AWS consulting is about getting the foundations right once, so every later decision is easier. That means account structure, identity, networking, logging and cost ownership first, workloads second. If you are earlier in the journey, our cloud migration service covers moving from a single server or another host into that structure.

Landing zone and account structure

The strongest isolation boundary in AWS is the account, not the VPC or the security group. A compromised credential or a runaway script is contained by the account it lives in. We therefore design an AWS Organization with a small, deliberate set of accounts and apply service control policies at the organisational unit level.

A typical starting layout for a growing product company:

AccountPurpose
ManagementBilling and organisation administration only, no workloads
Security and loggingCentral CloudTrail, Config and detection findings, read access for auditors
Shared servicesCI runners, container registries, shared DNS
ProductionCustomer-facing workloads
Non-productionStaging and development, with tighter budgets

Service control policies then set the outer limits: deny disabling logging, deny leaving approved regions, deny creating IAM users where single sign-on is the standard. These guardrails are cheap to write and remove entire classes of incident.

Everything in code

We provision the organisation, accounts, networking and baseline policies with Terraform, using separate state per account and a pipeline that plans on pull request and applies on merge. If your estate was built in the console, the path from ClickOps to Terraform is one we have walked many times: inventory, import, verify a clean plan, then lock down console changes.

Identity: the real perimeter

Most serious AWS incidents start with a credential, not a network exploit. Our baseline is:

  • Human access through IAM Identity Center federated with your identity provider, with roles per account and no long-lived keys on laptops.
  • Compute access through IAM roles (instance profiles, task roles, and IRSA or Pod Identity on Kubernetes), never embedded keys.
  • Permission boundaries and service control policies so that even an over-generous role cannot exceed agreed limits.
  • Access Analyzer reviews to find unused permissions and unintended external access.

A least-privilege policy scoped to a single bucket prefix looks like this:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:PutObject"],
      "Resource": "arn:aws:s3:::example-app-uploads/tenant-data/*"
    }
  ]
}

Writing policies this narrowly takes more effort than attaching a managed administrator policy. It is also the difference between a leaked token reading one prefix and a leaked token reading everything.

Networking that does not need rework in a year

VPC design is hard to change once workloads depend on it, so we plan address space before building. We allocate non-overlapping ranges per environment, leave room for growth and for peering or transit connectivity, and split subnets into public, private and data tiers across at least two availability zones.

Practical decisions we make early:

  • Workloads sit in private subnets; only load balancers face the internet.
  • VPC endpoints for S3 and other heavily used services, which improves security and reduces NAT gateway data charges.
  • A deliberate egress design, because NAT gateway processing is a classic hidden cost.
  • Security groups referenced by other security groups rather than wide CIDR ranges.

Cost control

AWS costs are rarely mysterious once they are attributed. We enforce a small tag standard (environment, team, service) in Terraform, enable cost allocation tags, set budgets per account and turn on anomaly detection with a named owner for every alert. Only after waste is removed and workloads are right-sized do we model savings plans against the steady baseline. Our EKS cost guide goes deeper for Kubernetes-heavy estates, and the EKS cost calculator gives a quick starting estimate.

Managed services we lean on

We prefer services AWS operates over software we have to patch: RDS or Aurora for relational data, S3 for object storage, SQS and SNS for messaging, ECS or Amazon EKS for containers, and KMS for key management. The trade-off is less low-level control and some lock-in. For most teams, that is a good exchange. Where portability matters, we keep the application portable and let the platform around it be AWS-specific.

Common failure modes

  • One big account. Everything shares a blast radius and a bill. Split early.
  • Console changes. Drift accumulates and nobody knows what is real. Move to code.
  • Unreviewed security groups. Open ports added “temporarily” that stay for years.
  • Untested backups. A snapshot you have never restored is a hope, not a backup. Our backup and disaster recovery service includes regular restore tests.
  • Surprise data transfer. Cross-region and NAT egress charges appear only after launch.

When AWS is not the right choice

Be wary of AWS if your organisation is deeply tied to Microsoft licensing and Entra ID, where Microsoft Azure integrates more naturally, or if your product is dominated by analytics and machine learning pipelines where Google Cloud can be a better fit. A very small team with a simple app may also be better on a platform as a service until it outgrows it.

If you would like a second opinion on your AWS setup, book a consultation or see how we work.

Official documentation: aws.amazon.com

How we work with AWS

  1. 01

    Read-only audit

    We review accounts, IAM, networking, logging and the last few months of spend, without changing anything.

  2. 02

    Design the landing zone

    Organisation structure, account boundaries, service control policies, network ranges and a tagging standard, agreed in writing.

  3. 03

    Codify in Terraform

    Everything is built or imported through modules and pull requests, with plans reviewed before any apply.

  4. 04

    Secure identity and logging

    Single sign-on, role-based access, central CloudTrail and GuardDuty-style detection, and encryption defaults.

  5. 05

    Add cost controls

    Budgets, anomaly alerts, cost allocation tags and a regular review so the bill stays explainable.

  6. 06

    Operate and improve

    Patching cadence, backups, restore tests, monitoring and a monthly review of risks and spend.

AWS compared with the alternatives

We recommend the tool that fits your team, not the one we know best. Here is when each option makes sense.

OptionChoose it when
AWSAWS is Amazon's cloud platform, with the broadest catalogue of managed services of the three major clouds.
Microsoft AzureChoose Azure if your organisation already runs on Microsoft 365, Entra ID and Windows workloads, or your customers require it.
Google CloudChoose Google Cloud if your product is data and analytics heavy, or you want a very polished managed Kubernetes experience.
Platform as a service (Render, Fly.io, Heroku style)Choose a PaaS if you have a small team, a simple application and no need yet for VPC level control.
Managed container services onlyChoose ECS Fargate or a similar service if you want containers without running Kubernetes.

Tools we use alongside AWS

TerraformAWS OrganizationsIAM Identity CenterAmazon VPCAmazon EKSAmazon RDSAWS CloudTrailAWS ConfigAWS BudgetsAmazon CloudWatchAWS KMSGitHub Actions

Frequently asked questions

What is an AWS landing zone?
A landing zone is the baseline structure of your AWS estate: an organisation with separate accounts, guardrail policies, central logging, a network layout and identity setup. It exists so new workloads start in a secure, consistent place instead of each team inventing its own. We build ours in Terraform so it can be reviewed and reproduced.
How many AWS accounts should a startup have?
Fewer than enterprise guidance suggests, but more than one. A sensible start is a management account, a security or logging account, and separate accounts for production and non-production. Add more when a team, compliance boundary or blast radius justifies it. Accounts are free, so the cost is operational, not financial.
How do you control AWS costs?
We start with ownership: a tag standard, cost allocation and budgets per environment. Then we remove idle resources, right-size what remains and only then consider commitments such as savings plans. Anomaly alerts catch spikes early. We never quote a savings figure before seeing your actual bill.
Is it safe to use IAM users with access keys?
Avoid them for people and for workloads running on AWS. Use single sign-on for humans and IAM roles for compute, which issue short-lived credentials automatically. Long-lived keys leak through repositories and laptops. Where a key is unavoidable, scope it tightly, rotate it and alert on its use.
Should we use EKS or ECS?
Use ECS with Fargate if you want containers with minimal operations and your needs are straightforward. Use EKS if you need the Kubernetes ecosystem, portability or advanced scheduling, and have people who can operate it. We run both, and we will tell you if EKS is more than you need.
Can you work in our existing AWS accounts?
Yes. We begin with read-only access, document what we find, and agree changes before making them. New changes go through code and pull requests, and existing console-built resources are imported into Terraform carefully, with plans that must show no unexpected changes.

Talk to an engineer about AWS

Book a free 30-minute call. We review your current setup and tell you honestly whether and how we can help.

Written by Saddique Khan, DevOps / SRE / Cloud Consultant Engineer. Last updated 2026-10-09.