1. 비동기 상호작용의 정수, 이벤트 기반 아키텍처(EDA)의 개요
정의: 상태의 변화(Event)를 감지하여 이를 처리하는 수신자에게 비동기적으로 전달하고 반응하게 하는 소프트웨어 아키텍처 패턴.
특징: 송신자와 수신자 간의 **느슨한 결합(Loose Coupling)**을 통해 확장성(Scalability)과 민첩성(Agility) 확보.
구성 방식: 이벤트의 흐름을 제어하는 방식에 따라 **중재자(Mediator)**와 브로커(Broker) 토폴로지로 구분됨.
2. 중재자 토폴로지 (Mediator Topology)
복잡한 이벤트 흐름을 중앙에서 제어하고 오케스트레이션(Orchestration)하는 방식입니다.
동작 원리: 1. 이벤트 큐(Queue): 초기 이벤트를 수집하여 중재자에게 전달.
2. 이벤트 중재자(Mediator): 이벤트를 수신하여 처리 단계(Workflow)를 결정하고 적절한 채널로 분배.
3. 이벤트 채널(Channel): 중재자와 프로세서를 연결하는 통로.
4. 이벤트 프로세서(Processor): 실제 비즈니스 로직을 수행하는 단위 서비스.
장점: 중앙 집중식 제어로 전체 워크플로우 파악이 쉽고, 복잡한 트랜잭션 처리에 유리함.
단점: 중재자가 성능 병목 지점(Bottleneck)이 될 수 있으며, 단일 장애점(SPOF) 위험 존재.
3. 브로커 토폴로지 (Broker Topology)
중앙 제어 없이 이벤트 프로세서들이 연쇄적으로 반응하는 코레오그래피(Choreography) 방식입니다.
동작 원리:
브로커(Broker): 가벼운 메시지 라우팅 역할만 수행 (이벤트 보관 및 전달).
이벤트 프로세서: 이벤트를 처리한 후, 다음 단계에 필요한 새로운 이벤트를 발행하여 브로커에 게시.
연쇄 반응: 각 서비스가 독립적으로 이벤트를 구독(Subscribe)하고 발행(Publish)하며 흐름이 완성됨.
장점: 고도의 확장성과 탄력성(Resilience) 제공, 중재자가 없어 지연 시간이 낮음.
단점: 전체 비즈니스 흐름을 한눈에 파악하기 어렵고 에러 발생 시 추적(Tracing) 및 복구가 복잡함.
4. 중재자 토폴로지 vs 브로커 토폴로지 비교
| 비교 항목 | 중재자 토폴로지 (Mediator) | 브로커 토폴로지 (Broker) |
| 제어 방식 | 오케스트레이션 (중앙 집중) | 코레오그래피 (분산) |
| 결합도 | 상대적으로 높음 (중재자에 의존) | 매우 낮음 |
| 복잡성 관리 | 중앙에서 복잡한 로직 관리 가능 | 각 서비스에 로직 분산, 흐름 파악 어려움 |
| 확장성 | 중재자 성능에 제약 발생 가능 | 매우 높음 (무한 확장 가능) |
| 오류 복구 | 워크플로우 제어를 통한 복구 용이 | 보상 트랜잭션 설계가 매우 복잡함 |
| 적합 사례 | 은행 대출 승인, 복합 주문 처리 | 단순 주문 접수, 로그 수집, 알림 전송 |
5. 기술사적 제언: 비즈니스 도메인에 따른 전략적 선택
하이브리드 접근: 전체 시스템의 핵심 비즈니스 흐름(주문-결제-배송)은 중재자로 관리하고, 개별 서비스의 부수적 알림이나 데이터 동기화는 브로커 방식을 혼합하는 전략 권고.
관측성(Observability) 확보: 특히 브로커 방식 도입 시 분산 추적 도구(Zipkin, Jaeger 등)를 활용하여 이벤트 유실 및 지연을 모니터링하는 체계 마련 필수.
결언: 토폴로지 선택은 성능과 관리 편의성 사이의 트레이드오프임. 기술사는 MSA 환경에서 서비스 간 자율성과 정합성 사이의 균형을 맞추는 이벤트 거버넌스를 확립해야 함.
댓글 없음:
댓글 쓰기