필자가 올리는 기업 통합 패턴(Enterprise Integration Patterns) 관련 글을 읽는 독자들이 기업 통합 패턴의 목록이라도 알 수 있도록, 기업 통합 패턴의 전체 패턴 목록을 정리해 보았다.
기업 통합 패턴은 기업 통합을 위한 메시징 기반의 패턴으로 다음과 같은 상황(context)에 대한 방법론을 패턴으로 제공한다.
이 패턴들에 대한 상세한 방법론에 대해 좀더 관심이 있는 독자라면 원서를 읽어보거나, 출판될 필자의 번역서를 참조할 수 있을 것이다.
기업 통합 패턴 개요
메시징 엔드포인트(Messaging Endpoints)
|
메시지 엔드포인트(Message Endpoint) |
메시징 시스템을 통해 메시지를 수신하고 발신하려면 애플리케이션은 어떻게 해야 할까?
|
|
메시징 게이트웨이(Messaging Gateway) |
애플리케이션의 나머지 부분으로부터 메시징 시스템에 대한 액세스를 캡슐화하려면 어떻게 해야 할까?
|
|
메시징 매퍼(Messaging Mapper) |
도메인 객체와 메시징 인프라의 독립성은 유지하면서, 이들 사이에 데이터를 이동시키려면 어떻게 해야 할까?
|
|
트랜잭션 클라이언트(Transactional Client) |
클라이언트는 메시징 시스템과 함께 어떻게 트랜잭션을 제어할 수 있을까?
|
|
폴링 소비자(Polling Consumer) |
준비된 애플리케이션만이 메시지를 소비하게 하려면 어떻게 해야 할까?
|
|
이벤트 기반 소비자(Event-Driven Consumer) |
애플리케이션은 어떻게 사용 가능한 메시지를 자동으로 소비할 수 있을까?
|
|
경쟁 소비자(Competing Consumer) |
메시징 클라이언트가 복 수개의 메시지들을 동시에 처리하려면 어떻게 해야 할까?
|
|
메시지 디스패처(Message Dispatcher) |
하나의 채널에 대한 복수 소비자들은 자신들의 메시지 처리를 어떻게 조정할 수 있을까?
|
|
선택 소비자(Selective Consumer) |
수신하려는 메시지만 선택하려면, 메시지 소비자는 어떻게 해야 할까?
|
|
영속 구독자(Durable Subscriber) |
구독자의 수신 중지 동안, 발생 가능한 메시지 누락은 어떻게 방지할 수 있을까?
|
|
멱등 수신자(Idempotent Receiver) |
메시지 수신자는 중복 메시지를 어떻게 처리할 수 있을까?
|
|
서비스 액티베이터(Service Activator) |
애플리케이션은 메시징 기술과 비 메시징 기술 모두를 통해 호출되는 서비스를 어떻게 설계할 수 있을까?
|
메시지 구축(Message Construction)
|
메시지(Message) |
메시지 채널로 연결된 두 애플리케이션은 어떻게 정보를 교환할까?
|
|
명령 메시지(Command Message) |
애플리케이션들은 프로시저 호출에 어떻게 메시징을 사용할 수 있을까?
|
|
문서 메시지(Document Message) |
애플리케이션들은 데이터 전송에 어떻게 메시징을 사용할 수 있을까?
|
|
이벤트 메시지(Event Message) |
애플리케이션들은 이벤트 전송에 어떻게 메시징을 사용할 수 있을까?
|
|
요청 응답(Request-Reply) |
애플리케이션은 어떻게 요청 메시지를 발신하고 응답 메시지를 수신할 수 있을까?
|
|
반환 주소(Return Address) |
응답자는 응답 메시지를 전송할 채널을 어떻게 알까?
|
|
상관관계 식별자(Correlation Identifier) |
요청자는 수신한 응답으로 어떤 요청에 대한 응답인지를 어떻게 알 수 있을까?
|
|
메시지 순서(Message Sequence) |
많은 양의 데이터를 메시징을 사용하여 어떻게 전송할 수 있을까?
|
|
메시지 만료(Message Expiration) |
메시지가 오래되어 사용 중단이 필요한 때를 발신자는 어떻게 지정할 수 있을까?
|
|
포맷 표시자(Format Indicator) |
변경에 잘 대응하려면 메시지의 데이터 포맷은 어떻게 설계돼야 할까?
|
메시지 라우팅(Message Routing)
|
파이프 필터(Pipes and Filters) |
독립성과 유연성을 유지하면서 메시지에 대한 복잡한 처리도 수행할 수 있으려면 어떻게 해야 할까?
|
|
메시지 라우터(Message Router) |
개별 처리 단계들의 결합을 제거하여 메시지를 조건에 따라 서로 다른 필터로 전달할 수 있게 하려면 어떻게 해야 할까?
|
|
내용 기반 라우터(Content-Based Router) |
단일 로직 기능이 여러 시스템에 물리적으로 분산되어 있는 경우 어떻게 처리해야 할까?
|
|
메시지 필터(Message Filter) |
불필요한 메시지를 컴포넌트는 어떻게 수신하지 않을 수 있을까?
|
|
동적 라우터(Dynamic Router) |
효율성을 유지하면서도 목적지에 대한 라우터의 종속성을 없애려면 어떻게 해야 할까?
|
|
수신자 목록(Recipient List) |
수신자들이 가변적인 경우 어떻게 메시지를 라우팅할까?
|
|
분할기(Splitter) |
메시지에 포함된 요소들을 각각 처리하려면 어떻게 해야 할까?
|
|
수집기(Aggregator) |
서로 관련성이 있는 개별 메시지들은 어떻게 묶어 처리할 수 있을까?
|
|
리시퀀서(Resequencer) |
순서가 뒤바뀐 메시지들 어떻게 올바른 순서로 되돌릴 것인가?
|
|
복합 메시지 처리기(Composed Message Processor) |
서로 다른 처리를 요구하는 복수 개의 요소들을 포함한 메시지를 처리하면서도, 전체 메시지 흐름을 유지하려면 어떻게 해야 할까?
|
|
분산기 집합기(Scatter-Gather) |
수신자들 각각에게 메시지를 발신하고 수신해야 하는 경우, 전체 메시지의 흐름은 어떻게 관리할까?
|
|
회람표(Routing Slip) |
결정되지 않은 일련의 처리 단계들로 메시지를 라우팅하려면 어떻게 해야 할까?
|
|
프로세스 관리자(Process Manager) |
설계 당시에는 필요한 단계가 알려지지 않았고 순차적이지 않을 수 있는 복합 처리 단계로 메시지를 라우팅하려면 어떻게 해야 할까?
|
|
메시지 브로커(Message Broker) |
메시지 흐름의 중앙 제어를 유지하면서, 어떻게 메시지와 목적지의 결합을 제거할 수 있을까?
|
메시지 변환(Message Transformation)
|
메시지 변환기(Message Translator) |
다른 데이터 포맷을 사용하는 시스템들이 메시징을 사용하여 서로 통신하려면 어떻게 해야 할까?
|
|
봉투 래퍼(Envelope Wrapper) |
메시지 헤더 필드, 암호화 같은 특별한 포맷을 가진 메시지 교환에 기존 시스템을 참여시키려면 어떻게 해야 할까?
|
|
내용 보탬이(Content Enricher) |
수신한 메시지에 필요한 데이터 항목이 완전하지 않은 경우 어떻게 다른 시스템과 통신할 수 있을까?
|
|
내용 필터(Content Filter) |
큰 메시지에서 일부 데이터만 필요한 경우, 메시지 처리를 어떻게 단순화할까?
|
|
번호표(Claim Check) |
시스템을 가로질러 전송되는 메시지의 데이터 크기를 정보 손실 없이 줄이려면 어떻게 해야 할까?
|
|
노멀라이저(Normalizer) |
의미는 같지만 다른 포맷으로 수신된 메시지는 어떻게 처리할까?
|
|
정규 데이터 모델(Canonical Data Model) |
다른 데이터 포맷을 사용하는 애플리케이션들을 통합할 때, 어떻게 하면 의존성을 최소화할 수 있을까?
|
시스템 관리(System Management)
|
제어 버스(Control Bus) |
여러 플랫폼에 걸쳐 분산되어 있는 메시징 시스템을 효과적으로 관리하려면 어떻게 해야 할까?
|
|
우회기(Detour) |
검증, 테스트, 디버깅 등을 수행하는 단계로 메시지를 통과시키려면 어떻게 라우팅해야 할까?
|
|
와이어 탭(Wire Tap) |
포인트 투 포인트 채널을 지나가는 메시지는 어떻게 검사할 수 있을까?
|
|
메시지 이력(Message History) |
느슨하게 결합된 시스템에서 메시지의 흐름을 어떻게 효과적으로 분석하고 디버깅할 수 있을까?
|
|
메시지 저장소(Message Store) |
메시징 시스템의 느슨한 결합과 임시 보관적 특성을 방해하지 않으면서 어떻게 메시지 정보를 보고할 수 있을까?
|
|
스마트 프록시(Smart Proxy) |
요청자가 지정한 반환 주소로 응답 메시지를 게시하는 서비스의 메시지는 어떻게 추적할 수 있을까?
|
|
테스트 메시지(Test Message) |
컴포넌트가 메시지를 처리하면서 내부 오류로 인해 잘못된 메시지를 내보낸다면 어떤 일이 생길까?
|
|
채널 제거기(Channel Purger) |
테스트 또는 운영 시스템이 교란되지 않게 채널 위에 남겨진 메시지들을 관리하려면 어떻게 해야 할까?
|
참고 사이트
댓글 없음:
댓글 쓰기