As part of our design tenet that everything should be trackable, transparent, and reproduceable, we have introduced a standardized URI (Universal Resource Identifier) into our codebase. The URI is our lingua franca for identifying and retrieving objects in our systems so we can understand what’s happened as our systems have gone about their business of managing our clients supply chain. In short, we now have a codified way of tracking which operation lead to each subsequent operation and how they’re related to each other.
Let me give you an example: our ledger entry system now asynchronously records inventory activity because of external actions (e.g. inventory is received at the DC or an order is shipped). The URI attached to each ledger entry will point back to the object or item that triggered the event. It seems like a small feature, but it’s actually huge for our engineering team and, in the future, our clients. Because we have the URI engine in place, we’ll be able to track every activity in our system back to its origin. This will make debugging easier on our end, but, in the future, it will be the basis for giving clients the power to debug on their own. It also lays the groundwork for making good on our promise to ensure everything is transparent and auditable. The URI functionality lays the foundation for allowing our clients to review the messaging call stack from the time they sent us a sku to the time they shipped an order.
There is no change to the API, so clients won’t notice a difference. Just keep on keepin’ on.