stevenacoffman/integration
Enterprise integration: messaging, queues, coupling, and event-driven architecture.
Invoke when three or more applications exchange data, a team is writing translators for every pair of systems, a legacy system must be replaceable without forcing rewrites, or field names and semantics disagree across systems. Decides whether a canonical data model pays off.
Invoke when adding workers to speed up message processing and choosing between competing consumers and a message dispatcher: message subtypes need different logic, processing must be transactional, or the question is whether the queue or your code does load balancing.
Invoke when someone claims "we use EDA so we're loosely coupled", when evaluating an event bus or message broker, adding a consumer to an event stream, or when an event schema change ripples to many consumers. Diagnoses the coupling event-driven architecture hides.
Invoke when designing an integration between systems and choosing how they communicate (file transfer, shared database, RPC or REST, messaging), evaluating a misbehaving integration, choosing REST vs a message queue, or auditing an architecture for hidden coupling.
Invoke when you don't know where a message went, the system looks healthy but messages aren't processed, a packaged app in the async path can't be modified, or when designing or debugging an async messaging integration and its observability.
Invoke when planning a monolith-to-microservices migration, checking whether microservices deliver their promised independence, or diagnosing why coordinated deployments are still needed after splitting services.
Invoke when someone says "we use messaging, so we're loosely coupled", when choosing REST vs message queue vs Pub-Sub, integrating with a system you don't control, or when a "decoupled" architecture keeps causing cascading failures. Assesses coupling across several dimensions.
Invoke when connecting two cloud services that lack a direct connection, an integration diagram has unlabeled arrows, message ordering matters with parallel workers, choosing pull vs push delivery, or a serverless pipeline shows unexpectedly high P90 latency.
Invoke when a queue grows at peak with no capacity plan, tail latency spikes despite healthy throughput, someone says "the queue will absorb spikes", message value decays over time, or rate-limiting a third-party API behind a queue. Chooses TTL, tail drop, or backpressure.