ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • GlobalEventBus ?
    Data Engineer 2024. 5. 2. 14:40
    728x90

    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
Designed by Tistory.