AWS makes it easy to spend money on the wrong things
AWS offers 200+ services. For a startup, that's 200 ways to over-engineer your infrastructure before you have paying customers. The most expensive AWS mistake isn't choosing the wrong service — it's building for scale you don't have yet.
The mistakes that cost real money
Over-engineering compute
You don't need EKS. Kubernetes is powerful, but it's also complex, expensive, and requires dedicated expertise to operate. For most startups, ECS Fargate or even a well-configured EC2 Auto Scaling group handles everything you need at a fraction of the cost and complexity.
Missing cost alerts
The number of startups that discover a $10,000 AWS bill because nobody set up billing alerts is staggering. Set up AWS Budgets on day one. Configure alerts at 50%, 80%, and 100% of your expected monthly spend. It takes 5 minutes and can save you thousands.
IAM anti-patterns
The most dangerous IAM pattern: a single admin key used everywhere — in CI/CD, on developer laptops, and hardcoded in application code. One leaked key and your entire AWS account is compromised.
Use IAM roles, not long-lived access keys
Implement least-privilege policies from the start
Enable MFA on the root account and all human users
Use AWS Organizations with SCPs for guardrails
No Infrastructure as Code
ClickOps (configuring AWS through the console) is fast for prototyping and disastrous for production. When your infrastructure isn't defined in code, you can't reproduce it, review changes, or recover from disasters.
Start with Terraform or AWS CDK from day one. The 2-hour investment pays for itself the first time you need to spin up a staging environment or recover from a misconfiguration.
Wrong database choice
Choosing between RDS, DynamoDB, and Aurora shouldn't be a coin flip:
RDS PostgreSQL: Your default choice. Relational data, complex queries, ACID transactions. Start here unless you have a specific reason not to.
DynamoDB: Key-value access patterns with massive scale. Wrong for anything with complex joins or ad-hoc queries.
Aurora: PostgreSQL-compatible with better scaling. Worth the premium when you're outgrowing standard RDS.
A practical starter architecture
For most startups, this handles everything until you hit serious scale:
ECS Fargate for application containers
RDS PostgreSQL with a read replica
ElastiCache Redis for sessions and caching
CloudFront + S3 for static assets
ALB for load balancing with WAF enabled
All defined in Terraform with state in S3
This setup costs under $500/month for moderate traffic and scales to millions of requests without rearchitecting.
Follow me to keep in touch
Where I share my creative journey, design experiments, and industry thoughts.




