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.

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