AWS Infrastructure Best Practices for Startups
AWS offers over 200 services. For a startup, this abundance can be paralyzing. Which services do you actually need? How should you structure your accounts? What can you skip until you reach product-market fit?
This guide covers the foundational AWS services and architectural patterns every startup should implement — and the mistakes to avoid.
Account Structure
Never run everything in a single AWS account. At minimum, set up:
- Management account — For billing, IAM Identity Center, and organizational policies
- Development account — Where engineers experiment and test
- Production account — Your live customer-facing environment
Networking with VPC
Design your Virtual Private Cloud carefully — it is hard to change later:
- Use a /16 CIDR block (e.g.,
10.0.0.0/16) to give yourself room to grow - Create public subnets for load balancers and private subnets for application servers and databases
- Span at least two Availability Zones for resilience
- Use NAT Gateways in each AZ so private instances can access the internet for updates
Compute: ECS Fargate vs EC2
For most startups, ECS with Fargate is the right choice:
- No servers to manage or patch
- Pay only for the vCPU and memory your containers use
- Scales to zero for non-production workloads
- Integrates natively with ALB, CloudWatch, and IAM
# Simplified ECS task definition
taskDefinition:
family: api-service
cpu: 256
memory: 512
containers:
- name: api
image: 123456789.dkr.ecr.us-east-1.amazonaws.com/api:latest
portMappings:
- containerPort: 3000
Database: RDS vs DynamoDB
- RDS (PostgreSQL) — Ideal for relational data, complex queries, and transactional workloads. Start with
db.t4g.micro(free tier eligible). - DynamoDB — Best for high-throughput, key-value access patterns. Near-infinite scale with zero operational overhead.
Start with RDS PostgreSQL unless you have a specific reason to go NoSQL. You can always add DynamoDB for hot paths later.
Monitoring and Observability
You cannot fix what you cannot see. Set up from day one:
- CloudWatch Alarms for CPU, memory, error rates, and latency
- CloudWatch Logs with structured JSON logging
- AWS X-Ray for distributed tracing across microservices
- Cost alerts in AWS Budgets — startups die from unexpected bills
Security Essentials
- Enable MFA on every IAM user, especially the root account
- Use IAM roles (not access keys) for service-to-service communication
- Enable GuardDuty for threat detection (free 30-day trial, cheap after)
- Encrypt everything at rest with KMS-managed keys
Key Takeaways
- Use multi-account structure from the start
- Design your VPC for growth — it is painful to change later
- Start with ECS Fargate and RDS PostgreSQL
- Implement monitoring and cost alerts before your first customer
- Security is not optional — enable MFA, GuardDuty, and encryption on day one
