u/BeginningOk3270

Moving from monolith to event-driven microservices on GCP – what 1M+ transactions taught me

I've been building a real-time banking system on GCP that processes 1M+ transactions.

Early on, I started with a monolithic approach. It was simple. It worked.

But as scale increased, problems emerged:

- **Hard to change** – one small fix = full redeploy
- **Slower deployments** – build times kept growing
- **Single point of failure** – one bug crashed everything

So I migrated to event-driven microservices on GCP.

**The new architecture:**

| Component | GCP Service |
|-----------|-------------|
| API Gateway | Cloud Endpoints / Load Balancer |
| Async communication | Cloud Pub/Sub |
| Compute | Cloud Run (auto-scales to zero) |
| Analytics | BigQuery |
| Security | Cloud IAM + Firewall |

**What changed:**

✅ Independent services – each scales separately  
✅ Faster deployments – deploy only what changed  
✅ Resilient – one failure doesn't cascade  
✅ Cost-efficient – no traffic = near-zero cost

**The banking system specifically:**

- FastAPI on Cloud Run (millisecond response)
- Pub/Sub for async transaction processing
- Cloud SQL for ACID compliance
- BigQuery for real-time validation
- 2M+ double-entry ledger records (debit = credit)

**The hardest part?**

Not the tech – the mindset shift. Moving from "the system" to "events and messages" took time.

**Question for this community:**

For those who made similar migrations – what was your biggest unexpected challenge?

And for those still on monoliths – what's holding you back from moving to event-driven?

---

*Note: Not selling anything. Just sharing my experience building on GCP. Happy to answer questions about the architecture.*
reddit.com
u/BeginningOk3270 — 20 hours ago