AWS Startup Infrastructure

A complete platform, multi-AZ from the first day.

A full cloud foundation built for a stealth-mode AI startup on AWS: a segmented VPC with a public edge and private compute, an Application Load Balancer over an auto-scaling EC2 tier and a managed Kubernetes cluster, a Multi-AZ managed database with a managed secrets store, and serverless and CDN paths for the work that does not belong on application servers.

Overview

The decisions a startup cannot easily undo.

Most infrastructure choices at an early-stage company are reversible. A handful are not, and they are all made in the first fortnight: how the network is segmented, whether the database can survive losing a zone, and where secrets live. This build got those three right at the outset and left everything else adjustable — which is what lets a small team move quickly afterwards without accumulating the kind of debt that eventually requires a migration project.

🏗 Multi-AZ web application topology

One region, several zones, three tiers.

A single VPC divided into a public subnet and private subnets across availability zones. The public subnet holds only what must be reachable: the load balancer and the NAT gateways. Everything that runs code or holds data sits private, and reaches the internet outbound through NAT rather than by having an address on it.

resolve · topology
AWS Startup Infrastructure — topology
Why this shape

Five decisions, and the reasoning behind each.

🏗

Multi-AZ from day one, not after the first outage

Availability zones are the cheapest resilience a startup will ever buy, and retrofitting them is the most expensive. Load balancing, auto-scaling, the database and the NAT path were all spread across zones at build time rather than added once something had already fallen over.

🔀

Two runtimes, because startups have two kinds of workload

An Auto Scaling Group of EC2 instances and a managed Kubernetes cluster sit side by side. Long-lived conventional services get the simpler runtime; the containerised workloads that need orchestration get one that provides it. Forcing everything into either would have cost the team either flexibility or time.

🔒

Nothing that holds data faces the internet

Only the load balancer and the NAT gateways live in the public subnet. Compute and the database are private, reached through the balancer or through NAT for egress — so the blast radius of a misconfiguration is bounded by the network rather than by a security group someone remembered to write.

🔑

Credentials are a managed service, not a file

Database and application secrets live in a managed secrets store rather than in environment files, images or a repository. For a small team moving quickly, this is the control that most reliably prevents the mistake everyone eventually makes.

Serverless and static handled where they belong

Event-driven work runs on Lambda, static assets sit in object storage behind a CDN. Neither belongs on the application servers, and keeping them off it is what lets the auto-scaling group be sized for the actual application.