본문 바로가기
Kafka

Event Driven Architecture란?

by Rainbound-IT 2022. 6. 30.
반응형

목차

    이벤트 기반 아키텍처 정의:

    EDA(Event-Driven Architecture)는 분리된 애플리케이션이 이벤트 브로커(현대 메시징 지향 미들웨어)를 통해 이벤트를 비동기식으로 게시하고 구독할 수 있는 소프트웨어 디자인 패턴입니다.

    이벤트 기반 아키텍처는 업데이트를 주기적으로 폴링하는 대신 비즈니스 전반에 걸쳐 이벤트가 발생할 때 애플리케이션, 마이크로서비스 및 연결된 장치 간에 정보가 실시간으로 흐르도록 하는 엔터프라이즈 IT 시스템을 구축하는 방법입니다.

     

    EDA(Event-Driven Architecture)는 분리된 아키텍처를 통해 이벤트를 기록, 전송 및 처리하도록 구축된 시스템 설계 방식입니다. 이는 시스템이 정보를 공유하고 작업을 수행하기 위해 서로에 대해 알 필요가 없음을 의미합니다.

     

    디커플링은 EDA의 중심 구성요소이며 API 와 같은 데이터 공유를 위한 다른 방법에 비해 큰 이점을 제공합니다 . API 호출 을 보낼 때 애플리케이션은 적절한 형식의 요청을 보낼 수 있도록 종속성과 매개변수를 알아야 합니다. 그런 다음 계속하기 전에 응답을 기다립니다. 이것은 또한 데이터 전송에 대한 요청과 응답이 항상 있음을 의미합니다.

    디커플링을 사용하면 이벤트 생성자는 이후에 어떤 일이 발생하는지 알 필요 없이 알림을 보내고 이벤트 라우터(브로커라고도 함)가 어디로 가는지 결정하도록 합니다. 이벤트 라우터는 WiFi 라우터처럼 생각할 수 있습니다. 인터넷에서 데이터를 수신하고 이를 필요로 하는 다른 장치에 실시간으로 배포합니다. 싱크라고도 하는 소비자는 이벤트를 요청할 필요 없이 처리할 이벤트를 수신합니다. 이벤트를 사용하는 모든 서비스는 자체적으로 작동하므로 이벤트가 비동기식으로 처리됩니다.

     

     

     

     

    이벤트 중심 아키텍처에서 "이벤트"란 무엇입니까?

    기업 내부와 기업에서 발생하는 모든 일은 고객 요청, 재고 업데이트, 센서 판독, 작업 등 "이벤트"입니다. 주어진 이벤트에 대해 알고 이에 대응할 수 있는 가치는 시간이 지남에 따라 저하됩니다. 필요한 이벤트에 대한 정보를 더 빨리 얻을 수 있을수록 비즈니스는 고객을 기쁘게 하고 생산을 전환하며 자원을 재할당할 기회에 더 효과적으로 대응할 수 있습니다.

    그렇기 때문에 이벤트가 발생할 때 정보를 푸시하는 이벤트 기반 아키텍처가 오늘날 대부분의 회사에서 사용하는 API 주도 접근 방식의 경우처럼 시스템이 주기적으로 업데이트를 폴링하기를 기다리는 것보다 더 나은 아키텍처 접근 방식입니다.

    이벤트 기반 아키텍처는 이벤트가 발생하면 해당 이벤트에 대한 정보가 필요한 모든 시스템과 사람들에게 전송되도록 합니다. 간단한 개념이지만 이러한 이벤트에는 상당한 여정이 있습니다. 그들은 다양한 API를 사용하고 다양한 프로토콜을 활용하고 애플리케이션, 분석 엔진 및 사용자 인터페이스와 같은 많은 엔드포인트에 도달하는 다양한 언어로 작성된 다수의 애플리케이션을 효율적으로 이동해야 합니다.

    그들이 거기에 도달하지 못한다면? 연결된 "사물"은 연결할 수 없고, 의존하는 애플리케이션과 시스템은 실패하며, 회사 전체의 사람들은 주의가 필요한 상황에 대응할 수 없습니다.

    기업이 이벤트 중심의 미래에 기대고 있을 가능성이 큽니다(아마도 미래에 밀어붙이고 있기 때문에 더 많을 것입니다). 기술 리더로서 우리가 직면하고 있는 혼란의 정도와 비율은 이벤트 중심 아키텍처를 필수 요소로 만들고 있으며 모든 징후는 이것이 기업이 향후 3~5년 동안 IT 시스템을 구축하는 주요 방법이 될 것임을 나타냅니다.

     

    이벤트 기반 아키텍처의 이점

    1. 반응성 . 모든 것이 가능한 한 빨리 일어나고 아무도 다른 사람을 기다리지 않기 때문에 이벤트 중심 아키텍처는 가능한 가장 빠른 응답 시간을 제공합니다.
    2. 확장성 . 다운스트림에서 무슨 일이 일어나고 있는지 고려할 필요가 없기 때문에 확장할 서비스 인스턴스를 추가할 수 있습니다. 토픽 라우팅 및 필터링은 명령 쿼리 책임 분리에서와 같이 서비스를 빠르고 쉽게 분할할 수 있습니다.
    3. 민첩성 . 다른 서비스를 추가하려면 이벤트를 구독하고 자체적으로 새 이벤트를 생성하도록 하면 됩니다. 기존 서비스는 이러한 일이 발생했는지 알지 못하거나 신경 쓰지 않으므로 영향을 미치지 않습니다.
    4. 다시 민첩성 . 이벤트 메시를 사용하면 클라우드, 온프레미스, 다른 국가 등 원하는 곳 어디에서나 서비스를 배포할 수 있습니다. 이벤트 메시는 가입자의 위치를 ​​파악하므로 다른 서비스 없이 서비스를 이동할 수 있습니다.

     

     

    이벤트 기반 아키텍처 패턴

    EDA 패턴은 이벤트 생성자, 라우터 및 소비자가 함께 작동하는 방식을 지정합니다. EDA 아키텍처에는 게시자/가입자 및 이벤트 스트리밍의 두 가지 일반적인 패턴이 있습니다. 다음 섹션에서는 이 두 가지 디자인을 모두 확장합니다.

    게시자/구독자 아키텍처

    게시자/구독자 아키텍처(때로는 게시/구독으로 단축)에서 이벤트 라우터는 소비자에서 이벤트 채널로의 구독을 추적합니다. 이벤트가 게시되면 라우터는 가입자가 이벤트를 수신하도록 합니다.

     

    이벤트는 재생할 수 없으므로 이벤트가 생성된 후 구독자가 이벤트 스트림에 참여하면 소급하여 액세스할 수 없습니다. 소비자는 그 시점부터 새로운 이벤트를 받게 됩니다.

    이벤트 스트리밍 아키텍처

    이벤트 스트리밍은 구독 기반 패턴을 지나갑니다. 이 접근 방식에서는 이벤트가 로그에 기록되고 모든 소비자가 로그를 읽고 관련 이벤트를 식별할 수 있습니다. 소비자는 스트림의 모든 부분에서 읽을 수 있으므로 과거 이벤트를 재생할 수 있습니다.

     

    이벤트 처리 패턴

    다양한 모델 외에도 이벤트가 소비자에게 도달하면 이벤트를 처리하는 고유한 접근 방식도 있습니다.

    • 단순 이벤트 처리 : 소비자는 이전 전자상거래 사이트 예시와 같이 각 이벤트를 수신하는 대로 처리합니다.
    • 복잡한 이벤트 처리 : 소비자는 이벤트 데이터의 패턴을 감지하기 위해 일련의 이벤트를 처리합니다.
    • 이벤트 스트림 처리 : 데이터 스트리밍 플랫폼은 이벤트를 수집 하고 데이터를 변환하고 소비하는 스트림 프로세서를 위한 파이프라인 을 만듭니다.

     

     

    이벤트 기반 아키텍처 사용 사례

    조직은 다양한 사용 사례를 달성하기 위해 시스템을 설계할 때 EDA를 활용합니다. 다음은 가장 일반적입니다.

    • 데이터 복제 : 데이터를 데이터베이스에 복사해야 하는 여러 서비스 간에 하나의 이벤트를 공유할 수 있습니다.
    • 병렬 처리 : 하나의 이벤트에 의해 여러 프로세스가 트리거되어 서로 비동기적으로 실행될 수 있습니다.
    • 실시간 모니터링 : 시스템은 상태 변경에 대한 이벤트를 생성하여 조직이 이상 징후와 의심스러운 활동을 검색할 수 있도록 합니다.
    • 상호 운용성 : 서비스가 작성된 코드에 관계없이 이벤트가 지속되고 전파될 수 있습니다.
    • 중복성 : 서비스가 다운된 경우 서비스가 이벤트를 소비할 수 있을 때까지 이벤트가 라우터에 유지될 수 있습니다.
    • 마이크로 서비스: EDA는 일반적으로 마이크로서비스 와 쌍을 이루어 대규모로 분리된 시스템 간에 정보를 효율적으로 공유합니다.

     

    Reference

    https://solace.com/what-is-event-driven-architecture/

     

    What is Event-Driven Architecture? - Solace

    An event-driven architecture is an enterprise IT system that lets loosely coupled applications and microservices produce and consume events.

    solace.com

     

    https://blog.hubspot.com/website/event-driven-architecture

     

    반응형

    댓글