Oskar Dudycz 🇺🇦✊<p>In distributed systems, we face a fundamental tension between module communication and module autonomy. Our modules need to exchange information and coordinate actions, yet we want each module to evolve independently without forcing changes across the entire system. </p><p>This tension becomes evident in event-driven architectures, where modules communicate through events and messages.</p><p>Consider a typical e-commerce platform. The payment module needs to process requests from orders, handle reimbursements, manage subscriptions, and potentially deal with dozens of other payment scenarios. </p><p>Each connection point between modules represents a potential coupling that can ripple through the system when requirements change.</p><p>The traditional approach involves modules directly referencing each other through event types, API endpoints, or shared data structures. </p><p>This creates a web of dependencies where adding a new module or changing an existing one requires coordinated updates across multiple teams.</p><p>What if we could enable modules to communicate without knowing about each other's existence? </p><p>What if a payment module could process requests from any source without being programmed to handle specific scenarios?</p><p>I've explored in the latest <a href="https://hachyderm.io/tags/ArchitectureWeekly" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ArchitectureWeekly</span></a> how predictable identifiers, specifically Uniform Resource Names (URNs), provide an elegant solution to this challenge.</p><p>The key insight is that identity can carry meaning without creating coupling. URNs provide a standardised way to structure this identity, enabling infrastructure-level routing while maintaining module independence. </p><p>The payment module could process generic payment requests, inverting the dependency and publishing responses using the correlation ID for routing. It never needs to know whether a payment is for an order, reimbursement, or subscription.</p><p>Read more in <a href="https://www.architecture-weekly.com/p/predictable-identifiers-enabling" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">architecture-weekly.com/p/pred</span><span class="invisible">ictable-identifiers-enabling</span></a></p><p>Are you using such an approach in your systems?</p>