Skip to content
Build 9234610

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

SFCC / AmazonOMSCAMEL INTEGRATION LAYERNAV (ERP)Cirro (US 3PL)Jackyun (China)Arena (PLM)Retail partners (via SPS / EDI) consumer orders product / BOMEDI 850/940/856/945
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 → validatetransformforwardacknowledge.
  • 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.