©MF — Muhammad Fouzan
Initializing architecture…
000
◆ Case 01 / 06SaaS · 2023 · 14mo engagement

Enterprise
SaaS
Foundation.

ClientSeries-B fintech
RoleFounding Architect
StackGo · TypeScript · Postgres · Temporal
Outcome3-week→3-day release cadence
Fig.01 — Inference topology (v2)
● LIVE
Go/TypeScript/Python/Rust/Kubernetes/Kafka/Postgres/Ray/Redis/gRPC/Terraform/AWS/GCP/DDD/Event-Sourcing/Temporal/OpenTelemetry/ClickHouse/pgvector/Go/TypeScript/Python/Rust/Kubernetes/Kafka/Postgres/Ray/Redis/gRPC/Terraform/AWS/GCP/DDD/Event-Sourcing/Temporal/OpenTelemetry/ClickHouse/pgvector/

They'd outgrown the monolith before it was ready to retire — feature branches lived for weeks, and a single migration could block six teams.

What they needed wasn't a rewrite. It was a seam — one the existing code could grow into without a big-bang cutover.

I set up a modular monolith with enforced module boundaries, then layered Temporal for long-running workflows and Kafka for cross-module events.

Teams kept shipping into the same repo; their code just couldn't reach across modules anymore. After four months, splitting out the first real service was a weekend's work.

0×
Deploy frequency
0%
Lead time reduction
0.00%
Platform SLA

Release cadence went from every three weeks to every three days. The on-call rotation flipped — humans stopped waking up for routine deploys.

The platform now runs seven product lines on the same substrate. No rewrite happened. That was the point.

Next Case — 02/06
Machine Learning Pipeline V2