AWS boasts unbelievable services—not every one of them stands the test of time in the real world systems. These are the ones I wish I had not selected.
Introduction
AWS doesn't fail you. Uncritical adoption does.
I have been using a number of AWS services over the years due to the following reasons:
- They were recommended
- They looked powerful
- Everyone else was using them
Some of them? I wouldn't choose again.
The following is a dissecture of the services that I regretted using, why, and my options today.
1. Amazon Cognito The Annoyingest Managed Service.
Why I Chose It
- Native AWS auth
- Supposedly scalable
- "Enterprise-ready"
Why I Regret It
- Terrible DX
- Confusing error messages
- UI customization pain
- It is horrible to debug auth flows.
What I'd Use Instead
- Auth0 / Clerk (for DX)
- Or custom auth + IAM (to control)
2. AWS AppSync - Potent yet Extravagant.
Why I Chose It
- GraphQL + real-time
- AWS-managed everything
Why It Fell Apart
- Complex mental model
- Velocity drops after MVP
- Resolver debugging is agonizing.
Better Alternatives
- REST with API Gateway
- tRPC + Lambda
- GraphQL with ECS/Lambda manually GraphQL with ECS/Lambda with Lisp.
3. Step Functions - Until You actually Maintain them.
The Promise
- Visual workflows
- Retry logic
- Error handling
The Reality
- State explosion
- Cost surprises
- Hard to version and test
What I Use Now
- SQS + workers
- Effortless code orchestration.
- EventBridge where needed
4. EKS (Too Early)
Why I Regret It
- Operational tax
- Kubernetes learning curve
- Overkill for small teams
When EKS Is Worth It
- Large teams
- Platform engineering
- Multi-cloud strategies
What I'd Pick First
- ECS + Fargate
- Plain EC2 with Docker
What These Regrets Common to.
- Complexity was abstracted ≠ Complexity was eliminated.
- The location of the managed services is the site of pain.
- DX is important in the same way as scalability.
A Simple Rule I Follow Now
In case I am unable to describe the mode of failure, I do not utilize the service.
AWS gives power. Sustainability is determined through engineering judgment.
Final Thoughts
AWS is a tool box- not a checklist.
The fewer services I selected at a higher degree of intent have made my systems:
- Easier to debug
- Cheaper to run
- Faster to evolve
Use AWS. And just avoid giving your reason to it.