Skip to content

stevenacoffman/integration

v0.1.0MIT

Enterprise integration: messaging, queues, coupling, and event-driven architecture.

canonical-data-model-decision

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.

competing-consumers-vs-dispatcher

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.

eda-coupling-diagnosis

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.

integration-style-selection

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.

messaging-observability-design

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.

microservices-dont-fix-coupling

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.

multidimensional-coupling-assessment

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.

queue-control-flow-model

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.

queue-flow-control-decision

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.