Skip to content

Instantly share code, notes, and snippets.

@jreuben11
Last active March 9, 2016 05:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jreuben11/18456a38db201553483c to your computer and use it in GitHub Desktop.
Save jreuben11/18456a38db201553483c to your computer and use it in GitHub Desktop.
Enterprise Integration Patterns - Refresher

#System Architecture patterns

  • N-Tier
  • Event-Driven - Mediator / Broker
  • Microkernel
  • MicroServices
  • Blackboard
  • client - MVC / MVP / MVVM
  • server - RPC / Remoting / WS / SOA / REST
  • Space-Based

#SOA Patterns

Foundational Structural

  • Service Host - infra
  • Active Service - worker thread for upstream pre-fetch
  • Transactional Service
  • Workflow
  • Edge Component

QoS Patterns

  • Decoupled Invocation - Queues for reli­ability, bursts
  • Parallel Pipelines - Steps -> throughput
  • Gridable Service
  • Service Instance - mutiple stateless copies, NLB
  • Virtual Endpoint — location transparency
  • Service Watchdog - Monitors and Health Mgmt

Security / Managability patterns

  • Secured Message - Encrypts, decrypts, and signs individual messages
  • Secured Infrastructure
  • Service Firewall
  • Identity Provider - Federated Security: Tokens, Claims
  • Service Monitor - centralized

Message Exchange patterns

  • Fire & Forget
  • Request/Response
  • Callback
  • Inversion of Communications - Peers
  • Saga - LRTs

Service Consumer patterns

  • Reservation - correlation ticket for submission to a flow
  • Composite Front End - client-side microkernel (modules) with Service Workers for model<->DTOs

Service Integration Patterns

  • Service Bus - pubsub loosely coupled
  • Orchestration — flow flexibility , governance

Anti-Patterns

  • Knot - tightly coupled p2p
  • Macroservice - not low enough granularity
  • Transactional Integration —Transactions cross service boundaries and couple ser­vices together

Messaging Patterns

Messaging Systems

  • Message Channel - applications communicate with one another
  • Message - applications connected by a message channel exchange a piece of information
  • Pipes and Filters - perform pluggable complex processing on a message
  • Message Router - decouple individual processing steps - conditionally pass messages
  • Message Translator - different data formats
  • Message Endpoint - connect to a messaging channel to send and receive messages

Messaging Channels

  • Point to Point Channel - caller ensured of exactly one receiver
  • Publish Subscribe Channel - sender broadcasts event to all interested receivers
  • Dead Letter Channel - messaging system handles undeliverable messages
  • Guaranteed Delivery - even if the messaging system fails
  • Message Bus - scalable decoupled integration architecture

Message Construction

  • Event Message
  • Request Reply
  • Correlation Identifier - allow sender to correlate request / response
  • Return Address

Message Routing

  • Content Based Router - distribute a logical workflow across multiple physical systems
  • Message Filter - ignore irrelevant messages
  • Dynamic Router - avoid dependency of hard-coded destinations
  • Recipient List - static / dynamic
  • Splitter
  • Aggregator - combine results of individual, related messages
  • Resequencer - reorder message stream
  • Composed Message Processor - logically coordinate message flow
  • Scatter-Gather
  • Routing Slip - message metadata for controlling its route processing steps
  • Throttler - ensure endpoint is overloaded - SLA
  • Sampling - algorithmically process a subset of high-load messages
  • Delayer - delay the sending of a message
  • Load Balancer - across dynamic number of endpoints
  • Multicast - simultaneously route a message to multiple endpoints
  • Loop - repeat processing a message

Message Transformation

  • Content Enricher - add further info to a message
  • Content Filter - remove irrelevant info from a message
  • Claim Check - replace large message content with a lookup key
  • Normalizer - process semantically equivalent messages of different schema
  • Sort
  • Validate

Messaging Endpoints

  • Messaging Mapper - entity <> DTO transform -> decoupling
  • Event Driven Consumer - push-oriented recipient - when sender is ready
  • Polling Consumer - pull-oriented recipient - when receiver is ready
  • Competing Consumers - sender sends to concurrent clients
  • Message Dispatcher - sender coordinates sending to concurrent clients
  • Selective Consumer - receiver informs sender of filtration logic
  • Durable Subscriber - receiver catch up on missed messages
  • Idempotent Consumer - receiver handle duplicate messages
  • Transactional Client - message delivery guarantee protocols
  • Messaging Gateway - system facade
  • Service Activator - service can be invoked via messaging or LPC

System Management

  • ControlBus - distributed systems coordinator
  • Detour - routing pipeline for value added functionality
  • Wire Tap - inspect messages
  • Message History - analyze message flows in distributed systems
  • Log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment