3장. 엔터프라이즈 통합 패턴 소개
초록
Apache Camel의 엔터프라이즈 통합 패턴은 Gregor Cryostathpe 및 Cryostatby Woolf가 작성한 것과 동일한 이름의 책에 의해 영향을 받습니다. 이러한 작성자가 설명하는 패턴은 엔터프라이즈 통합 프로젝트를 개발하기 위한 우수한 toolbox를 제공합니다. 통합 아키텍처 논의를 위한 공통 언어 제공 외에도 Apache Camel의 프로그래밍 인터페이스 및 XML 구성을 사용하여 많은 패턴을 직접 구현할 수 있습니다.
3.1. 패턴 개요
3.1.1. 엔터프라이즈 통합 패턴북
Apache Camel은 이 책의 대부분의 패턴, Gregor needhpe 및 Cryostatby Woolf의 Enterprise Integration Patterns 를 지원합니다.
3.1.2. 메시징 시스템
표 3.1. “메시징 시스템” 에 표시된 메시징 시스템 패턴에는 메시징 시스템을 구성하는 기본 개념과 구성 요소가 도입되었습니다.
icon | 이름 | 사용 사례 |
---|---|---|
| 메시지 채널에 의해 연결된 두 애플리케이션이 정보를 교환하는 방법은 무엇입니까? | |
| 하나의 애플리케이션이 메시징을 사용하여 다른 애플리케이션과 어떻게 통신합니까? | |
| 애플리케이션이 메시지를 보내고 수신하기 위해 메시징 채널에 연결하려면 어떻게 해야 합니까? | |
| 독립성과 유연성을 유지하면서 메시지에서 복잡한 처리를 어떻게 수행할 수 있습니까? | |
| 정의된 조건 세트에 따라 메시지를 다른 필터로 전달할 수 있도록 개별 처리 단계를 분리하려면 어떻게 해야 합니까? | |
| 서로 다른 데이터 형식을 사용하는 시스템은 메시징을 사용하여 서로 어떻게 통신합니까? |
3.1.3. 메시징 채널
메시징 채널은 메시징 시스템의 참가자를 연결하는 데 사용되는 기본 구성 요소입니다. 표 3.2. “메시징 채널” 의 패턴은 사용 가능한 다양한 종류의 메시징 채널을 설명합니다.
icon | 이름 | 사용 사례 |
---|---|---|
| 호출자가 문서를 수신하거나 호출을 수행할 것이라고 정확히 한 수신자가 어떻게 확신할 수 있습니까? | |
| 발신자는 모든 관심 있는 수신자에게 이벤트를 어떻게 브로드캐스트할 수 있습니까? | |
| 메시지 시스템은 전달할 수 없는 메시지와 어떤 역할을 합니까? | |
| 메시징 시스템이 실패하더라도 보낸 사람이 메시지를 전달하려면 어떻게 해야 합니까? | |
| 다른 애플리케이션에 영향을 주지 않고 하나 이상의 애플리케이션을 추가하거나 제거할 수 있도록 별도의 분리된 애플리케이션이 함께 작동하도록 하는 아키텍처는 무엇입니까? |
3.1.4. 메시지 구성
표 3.3. “메시지 구조” 에 표시된 메시지 구성 패턴은 시스템을 통과하는 메시지의 다양한 양식과 기능을 설명합니다.
icon | 이름 | 사용 사례 |
---|---|---|
| 요청자는 수신된 응답을 생성한 요청을 어떻게 식별합니까? | |
| 담당자는 어디에서 응답을 보낼 수 있는지 어떻게 알 수 있습니까? |
3.1.5. 메시지 라우팅
표 3.4. “메시지 라우팅” 에 표시된 메시지 라우팅 패턴은 메시지 스트림에 적용할 수 있는 다양한 알고리즘을 포함하여 메시지 채널을 함께 연결하는 다양한 방법을 설명합니다(메시지 본문을 수정하지 않음).
icon | 이름 | 사용 사례 |
---|---|---|
| 단일 논리 기능(예: 인벤토리 확인)의 구현이 여러 물리적 시스템에 분배되는 상황을 어떻게 처리합니까? | |
| 구성 요소가 관심 없는 메시지를 수신하지 않도록 하려면 어떻게 해야 합니까? | |
| 메시지를 동적으로 지정된 수신자 목록으로 라우팅하려면 어떻게 해야 합니까? | |
| 여러 요소가 포함된 경우 메시지를 어떻게 처리할 수 있으며 각 요소를 다른 방식으로 처리해야 합니까? | |
| 개별 결과를 어떻게 결합할 수 있지만 관련 메시지는 전체로 처리할 수 있도록 어떻게 결합합니까? | |
| 어떻게 관련 된 스트림의 스트림을 얻을 수 있지만 out-of-sequence, 메시지를 다시 올바른 순서로 다시 얻을 수 있습니까? | |
| 여러 요소로 구성된 메시지를 처리할 때 전체 메시지 흐름을 어떻게 유지 관리할 수 있으며 각 요소에 따라 다른 처리가 필요할 수 있습니까? | |
메시지를 여러 수신자에게 보내야 할 때 전체 메시지 흐름을 유지하려면 어떻게 해야 합니까? 각 수신자는 응답을 보낼 수 있습니까? | ||
| 설계 시 단계 시퀀스를 알 수 없고 메시지에 따라 다를 수 있는 일련의 처리 단계를 통해 메시지를 연속으로 라우팅하려면 어떻게 해야 합니까? | |
특정 엔드포인트가 과부하되지 않도록 메시지를 제한하거나 일부 외부 서비스와 합의된 SLA를 초과하지 않도록하려면 어떻게 해야 합니까? | ||
메시지 전송을 지연하려면 어떻게 해야 합니까? | ||
여러 끝점에서 부하를 분산하려면 어떻게 해야 합니까? | ||
외부 서비스를 호출할 때 Hystrix 회로 차단기를 사용하려면 어떻게 해야 합니까? Camel 2.18의 새로운 기능. | ||
레지스트리에서 서비스를 조회하여 분산 시스템에서 원격 서비스를 호출하는 방법은 무엇입니까? Camel 2.18의 새로운 기능. | ||
동시에 여러 끝점에 메시지를 라우팅하려면 어떻게 해야 합니까? | ||
루프에서 메시지 처리를 반복하려면 어떻게 해야 합니까? | ||
다운스트림 경로 과부하를 방지하기 위해 지정된 기간에 여러 메시지 중 하나의 메시지를 샘플링하려면 어떻게 해야 합니까? |
3.1.6. 메시지 변환
표 3.5. “메시지 Cryostat” 에 표시된 메시지 변환 패턴은 다양한 용도로 메시지 내용을 수정하는 방법을 설명합니다.
icon | 이름 | 사용 사례 |
---|---|---|
| 메시지 원본기에 필요한 모든 데이터 항목이 없는 경우 다른 시스템과 어떻게 통신합니까? | |
| 몇 가지 데이터 항목에 관심이 있을 때 큰 메시지 처리를 간소화하려면 어떻게 해야 합니까? | |
| 정보 콘텐츠를 희생하지 않고 시스템 전체에서 전송되는 메시지의 데이터 볼륨을 어떻게 줄일 수 있습니까? | |
| 의미 체계적으로 동일하지만 다른 형식으로 도달하는 메시지는 어떻게 처리합니까? | |
메시지 본문을 정렬하려면 어떻게 해야 합니까? |
3.1.7. 메시징 끝점
메시징 끝점은 메시징 채널과 애플리케이션 간의 연결 지점을 나타냅니다. 표 3.6. “메시징 끝점” 에 표시된 메시징 끝점 패턴은 끝점에서 구성할 수 있는 다양한 기능과 서비스 특성을 설명합니다.
icon | 이름 | 사용 사례 |
---|---|---|
두 항목을 서로 독립적으로 유지하면서 도메인 개체와 메시징 인프라 간에 데이터를 이동하는 방법은 무엇입니까? | ||
| 애플리케이션에서 사용할 수 있을 때 메시지를 자동으로 사용하려면 어떻게 해야 합니까? | |
| 애플리케이션이 준비되었을 때 애플리케이션에서 메시지를 사용하는 방법은 무엇입니까? | |
| 메시징 클라이언트는 어떻게 여러 메시지를 동시에 처리할 수 있습니까? | |
| 단일 채널의 여러 소비자는 메시지 처리를 어떻게 조정할 수 있습니까? | |
| 메시지 소비자는 어떻게 수신하려는 메시지를 선택할 수 있습니까? | |
| 구독자가 수신 대기하지 않을 때 메시지가 누락되지 않도록 하려면 어떻게 해야 합니까? | |
메시지 수신자는 중복 메시지를 어떻게 처리할 수 있습니까? | ||
| 클라이언트는 메시징 시스템을 사용하여 트랜잭션을 어떻게 제어할 수 있습니까? | |
| 나머지 애플리케이션에서 메시징 시스템에 대한 액세스를 캡슐화하려면 어떻게 해야 합니까? | |
| 애플리케이션이 다양한 메시징 기술과 비메시징 기술을 통해 호출할 서비스를 설계하는 방법은 무엇입니까? |
3.1.8. 시스템 관리
표 3.7. “System Management” 에 표시된 시스템 관리 패턴은 메시징 시스템을 모니터링, 테스트 및 관리하는 방법을 설명합니다.
icon | 이름 | 사용 사례 |
---|---|---|
| 점대점 채널에서 이동하는 메시지를 어떻게 검사합니까? |