상세 컨텐츠

본문 제목

[Architecture] 이벤트 버스 패턴(Event bus pattern) 정리

IT/프로그래밍

by James Lee. 2020. 1. 13. 10:55

본문

들어가며

신규 프로젝트에서 내가 담당한 서비스에 이벤트 버스 패턴을 틈틈이 학습하며 적용했다.
이벤트 버스에 대한 개념 정리를 미루고 있다가, 이번에 시간이 좀 나서 블로그에 이벤트 버스 패턴을 정리해보려고 한다.

이벤트 버스 패턴이란?

  • 확장성이 뛰어난 반응성 애플리케이션을 구현하기 위한 분산 비동기 아키텍처 패턴

주요 아이디어

  • 이벤트를 비동기적으로 전달하고 처리하는 것
  • 네트워킹 분야의 버스(Bus Topology)의 동작 방식과 매우 유사함

 

장점

  • 느슨한 결합(loose coupling)과 관심사의 분리(separation of concerns) 원칙을 유지하면서 컴포넌트 간 통신이 가능
  • 개발 복잡도의 간소화
  • 따라서 규모가 크고 고도로 분산화된 시스템에 효과적

 

단점

  • 메모리 수요가 증가할 수 있음
    • 구독자(Subscriber)가 이벤트 데이터(이하 데이터)를 사용할 수 있는 권한이 없더라도 데이터를 모든 구독자에게 복제
  • 따라서, 구독자에서 필터링을 통해 데이터를 관리해야 함
  • 데이터 누락이 있을 수 있음
    • 기본적으로 연결 오류나 기타 발생 가능한 결함은 신경 쓰지 않기 때문임
    • 이는 구현 또는 메세지 큐 솔루션(ex : kafka)의 설정을 통해 변경할 수 있음 (다만 성능 등의 Trade-Off를 고려해야 한다)

 

참고 문서

 

Design Patterns: Event Bus - DZone Java

This tutorial takes a look at the Event Bus design pattern and how to implement it in your Java projects, highlighting two basic patterns to get you started.

dzone.com

 

Event Bus Implementation(s) - By Mustafa Turan

Event driven architecture pattern is a distributed asynchronous architecture pattern to create highly scalable reactive applications. The pattern suits for on every level application stack from small to complex ones. The main idea is delivering and process

hackernoon.com

 

관련글 더보기

댓글 영역