-
GlobalEventBus ?Data Engineer 2024. 5. 2. 14:40728x90
Global Event Bus : 소프트웨어 개발에서 사용하는 디자인 패턴 중 하나
- 애플리케이션 전반에서 이벤트를 전파하고 처리하기 위한 중앙 집중식 이벤트 버스를 구현
- 컴포넌트 간 통신을 단순화하고 애플리케이션의 유연성을 향상
1. Publishing Events : 어떤 컴포넌트든지 이벤트를 GlobalEventBus에 발행할 수 있다.
Ex . 사용자가 버튼을 클릭하면 해당 이벤트를 GlobalEventBus에 발행
2. Subscribing to Events : GlobalEventBus를 통해 특정 이벤트에 대해 구독할 수 있다.
- 이를 통해 여러 컴포넌트가 동일한 이벤트에 반응하도록 할 수 있음
3. Event Handling : 발행된 이벤트를 수신하고 처리할 수 있는 메커니즘을 제공
- 이를 통해 이벤트를 발행한 컴포넌트와 이를 처리하는 다른 컴포넌트 간의 통신이 가능해진다.
4. Scale of Application : 컴포넌트 간의 통신을 중앙에서 관리할 수 있으므로 애플리케이션의 규모를 확장하거나 변경할 때 유연성을 제공
GlobalEventBus는 일반적으로 이벤트 버스 라이브러리나 프레임워크를 사용하여 구현되며, 이를 통해 이벤트의 발행, 구독 및 처리를 효율적으로 관리할 수 있다. 하지만 GlobalEventBus를 과도하게 사용하면 코드를 이해하기 어려워지고 디버깅이 어려워질 수 있으며, 의도하지 않은 부작용이 발생할 수 있다.
*Subscribing?
: 특정 이벤트가 발생했을 때, 그 이벤트를 수신하고 처리하기 위해 등록하는 것을 의미한다.
일반적으로, 이벤트를 발행하는 컴포넌트(Ex. 버튼,키보드 입력)와 그 이벤트를 수신하고 처리하는 다른 컴포넌트(Ex. 리스너, 핸들러) 존재 시 이벤트를 수신하고 처리하기 위해 후자가 구독 과정을 거친다.
일례로, 버튼이 클릭되었을 때 발생하는 클릭 이벤트를 수신하고 처리하려면, 해당 이벤트를 수신할 컴포넌트(Ex. 버튼의 클릭 이벤트 핸들러)가 클릭 이벤트를 구독해야 한다. 이렇게 하면 버튼이 클릭되었을 때 해당 컴포넌트가 이벤트를 받아들이고 처리할 수 있다.
이벤트를 구독하는 과정은 일반적으로 이벤트 리스너를 등록하는 것으로 이뤄진다.
리스너는 특정 이벤트가 발생했을 때 호출될 콜백 함수를 정의하고 등록하는 역할을 하며, 이벤트 발생 시 등록된 리스너의 콜백 함수가 호출되어 해당 이벤트를 처리한다.
이러한 이벤트 구독 메커니즘은 소프트웨어에서 이벤트 기반 아키텍처를 구현하는 데 사용되며, 컴포넌트 간의 느슨한 결합을 가능하게 한다.
그러면 Kafka “구독” 개념과 차이는?
이벤트를 발행하고 수신하는 메시지 시스템인 카프카에서 사용되는 용어.
- 특정 주제에 대한 메시지를 소비하고 처리하는 것
- 생산자가 메시지를 특정 topic으로 발행하고, 구독자는 해당 topic을 발행하여 메시지를 받아 소비
- 구독-발행 패턴을 따르는 메시지 큐 시스템에서의 일반적인 동작 방식
- 특정 주제를 구독함으로써 해당 주제로 발행되는 모든 메시지를 받을 수 있음
- Consumer Group 개념을 사용하여 여러 컨슈머가 동일한 주제를 구독할 때 메시지를 분산하여 처리할 수 있음
- 카프카의 구독 개념은 일종의 이벤트 구독과 유사하지만, 이벤트 구독과는 다소 다른 컨텍스트에서 사용
728x90'Data Engineer' 카테고리의 다른 글
모놀리스/마이크로서비스 (0) 2024.08.28 Schema On Read (0) 2024.08.20 Nginx (0) 2024.03.28 [Error] MySQL : Update 문 실수 시 조치 사항 (0) 2024.03.12 Git action - 이론 (0) 2024.03.08