0. Orientation — What Is This Codebase?¶
The one-sentence version¶
The Camel codebase is PopSockets' integration layer — the middleware that moves orders, shipments, products, and inventory between all the systems that run the business. When two systems need to talk (the storefront and the warehouse, the ERP and a retailer), the conversation happens here.
Why it exists¶
It replaced a legacy MuleSoft platform. Same job — API-led integration — rebuilt on open-source Apache Camel + Spring Boot so we own the whole stack instead of renting it. A lot of the concepts (the three-layer API model, the message-driven flows) will feel familiar if you've seen MuleSoft; we kept the good ideas and changed the tooling.
The systems we glue together¶
| System | What it is | Our relationship |
|---|---|---|
| SFCC | Salesforce Commerce Cloud — the DTC storefront | Source of consumer orders |
| OMS | Order Management System (in-house) | Routes orders to fulfillment |
| NAV | Microsoft Dynamics NAV — the ERP | Financials, inventory, invoicing |
| Cirro | 3PL / warehouse management (US) | Picks, packs, ships |
| SPS Commerce | EDI broker to retail partners | Carries our EDI documents |
| Arena | Product Lifecycle Management | Master product & bill-of-materials data |
| Jackyun | China fulfillment (KH warehouse) | Ships APAC orders |
This is the intro view
The diagram above is deliberately simplified. For the real production topology — every service, the async vs sync edges, what's retiring, and what's nonprod-only — see Architecture and Camel Topology.
What "integration layer" means day to day¶
- We rarely own data — we move and translate it between systems.
- Most work is: receive a message/file/webhook → validate → transform → forward → acknowledge.
- Failure handling is half the job. Retries, dead-letter queues, and alerts get as much attention as the happy path, because the systems on either side of us go down, change shape, and send us garbage.
The shape of the code¶
~20 small, independently-deployed Spring Boot services, each named
cm-<something>. They talk to each other two ways: asynchronously over Azure
Service Bus, and synchronously over HTTP through an API gateway (APIM). No giant
monolith — logic is spread across the fleet. The full list is in
page 7.