How I Cut a Client's Hosting Bill by 80%
A Bangkok e-commerce client was paying ฿15,000/month to AWS for hosting. Their site wasn't even that complex—a Next.js frontend with Postgres database. They came to me frustrated with the bills and unsure what they were paying for.
After analyzing their setup, we migrated to a modern stack that costs ฿3,000/month. Same performance, actually better in some ways. Here's the breakdown.
What They Were Paying For
| Service | Monthly Cost | Purpose |
|---|---|---|
| EC2 (t3.medium) | ฿4,200 | Next.js server |
| RDS PostgreSQL | ฿5,500 | Database |
| S3 + CloudFront | ฿2,800 | Images, CDN |
| ELB, Route53, misc | ฿2,500 | Load balancer, DNS |
| Total | ฿15,000 |
This is a classic "agency over-engineered it" situation. They built for massive scale that would never come, using AWS services that charge by the hour whether you need them or not.
The Problem With This Setup
- Fixed costs: EC2 and RDS charge 24/7 even when nobody's on the site
- Over-provisioned: Running database that could handle 10x their traffic
- Complex architecture: Harder to maintain, more things to break
- AWS pricing: Famously expensive for small-medium workloads
The New Architecture
Next.js hosting. Free tier handles most traffic. Pro tier (฿700/mo) if you exceed limits.
- Automatic deployments from GitHub
- Edge network—fast in Thailand
- Only pay for what you use
- Built-in analytics
Managed PostgreSQL. Free tier for development, Pro tier for production.
- Same Postgres, easier management
- Hosted in Singapore—low latency for Thailand
- Built-in backups, connection pooling
- Auth and storage included
CDN, DNS, DDoS protection. Free tier is generous.
- Unlimited bandwidth on free tier
- Images served from edge locations
- Automatic SSL, security features
- R2 for image storage (way cheaper than S3)
Image/file storage. S3-compatible, way cheaper.
- No egress fees (the big S3 killer)
- $0.015/GB stored vs S3's $0.023/GB
- For their ~50GB: ฿400/mo vs ฿2,800/mo
New Monthly Costs
| Service | Monthly Cost |
|---|---|
| Vercel Pro | ฿700 |
| Supabase Pro | ฿900 |
| Cloudflare (CDN/DNS) | ฿0 |
| Cloudflare R2 (storage) | ฿400 |
| Domain renewal | ฿40 |
| Total | ฿2,040 |
I budgeted ฿3,000 to account for traffic spikes and growth. Actual costs usually under ฿2,500.
The Migration Process
Performance Comparison
| Metric | AWS | New Stack |
|---|---|---|
| TTFB (Thailand) | 280ms | 120ms |
| Image load (BKK) | 180ms | 90ms |
| Uptime (6mo) | 99.9% | 99.99% |
| Deploy time | 8 min | 45 sec |
The new stack is actually faster because Vercel and Cloudflare have edge locations in Singapore (closer to Thailand than the Singapore AWS region they were using).
When This Works (and When It Doesn't)
This migration pattern works well for:
- Small-medium e-commerce (under ฿50M/year revenue)
- Marketing sites with CMS
- SaaS with reasonable traffic
- Internal business tools
You might need AWS/GCP if:
- You need specific AWS services (ML, SQS, Lambda at scale)
- Compliance requirements mandate specific providers
- You're processing huge amounts of data
- You have dedicated DevOps team to manage complexity
Free Audit Offer
If you're curious whether your hosting costs could be reduced, I'll do a free 30-minute review of your current setup. No obligation—I'll just tell you what I see and whether migration makes sense.
Some setups are fine where they are. Some are burning money. Happy to tell you which one you have.
Want me to look at your hosting costs?
Free audit. I'll tell you if you're overpaying and what you could do about it.
Get Free Audit