Architecture

A B2B wholesale platform escaped its 8-year-old monolith — and cut deploy time from 4 hours to 8 minutes

Role
Full delivery — architecture, build, launch
Timeline
Q1–Q2 2025 — 16 weeks
Team
3 engineers · QA · PM
Stack
Symfony, Docker, Kubernetes (AWS EKS), RabbitMQ
A B2B wholesale platform escaped its 8-year-old monolith — and cut deploy time from 4 hours to 8 minutes

The problem

A B2B wholesale distributor with 2,000+ business customers and €45M annual GMV ran everything on an 8-year-old Symfony monolith. A single deployment took 4 hours of downtime, one bug in the pricing module could crash the entire platform, and the team had stopped shipping features — spending 70% of their time firefighting. Three failed attempts to refactor in-place had drained the team's confidence.

What we built

  • Domain mapping — Identified 6 bounded contexts (catalog, pricing, orders, customers, inventory, invoicing) and mapped all cross-domain dependencies before writing a single line of code.
  • Strangler fig migration — Extracted services one by one behind an API gateway, keeping the monolith running in production throughout. Zero big-bang cutover — each service went live independently.
  • Kubernetes & CI/CD — Containerized every service with Docker, orchestrated via Kubernetes on AWS EKS. Built a full CI/CD pipeline — push to main triggers automated tests, build, and rolling deploy in under 8 minutes.
  • Event-driven sync — Services communicate via RabbitMQ events instead of direct API calls. Eventual consistency with saga patterns for complex workflows like order → inventory → invoice.
Team reviewing a project roadmap and task breakdown on a whiteboard during a planning session

Result

“We went from being afraid to deploy on Fridays to shipping multiple times a day. The platform finally feels like it belongs to us again, not the other way around.”

Thomas Bergmann — CTO, WholesaleHub GmbH · Berlin
97%Deploy time reduction
2Incidents per month
18+Deploys per week
+35%GMV growth, year 1