비즈니스는 고객 상호작용부터 센서 측정값에 이르기까지 다양한 트리거에 즉각적으로 반응할 수 있는 시스템을 점점 더 필요로 합니다. 기존의 요청-응답 모델은 유용하지만 이러한 동적 환경에 필요한 민첩성이나 확장성을 항상 제공하지는 못할 수 있습니다. 이벤트 기반 아키텍처(EDA)는 반응성이 뛰어나고 복원력이 우수하며 확장 가능한 애플리케이션을 빌드하기 위한 강력한 패러다임을 제공할 수 있습니다. 이벤트의 생성, 감지, 소비, 반응을 촉진할 수 있는 소프트웨어 아키텍처 패턴입니다.
이벤트 기반 아키텍처는 서비스가 느슨하게 결합되어 있고 이벤트의 생성 및 소비를 통해 통신하는 소프트웨어 애플리케이션을 설계하기 위한 모델입니다. '이벤트'는 유의미한 발생 또는 시스템 상태의 변경을 의미합니다. 고객이 주문을 하거나, 센서가 온도 변화를 감지하거나, 새로운 파일이 스토리지에 업로드되거나, 데이터베이스 레코드가 업데이트되는 등 다양합니다.
서비스가 다른 서비스를 명시적으로 호출하고 응답을 기다리는 기존의 요청 기반 모델과 달리 EDA를 사용하면 서비스가 비동기식으로 작동할 수 있습니다. 이벤트를 생성하는 서비스('제작자' 또는 '게시자')는 이벤트가 발생했음을 알리기만 합니다. 이러한 유형의 이벤트에 관심이 있는 다른 서비스('소비자' 또는 '구독자')는 자체적으로 원하는 시간에 이벤트에 반응할 수 있습니다.
일반적으로 EDA의 주요 구성요소는 다음과 같습니다.
이벤트 기반 아키텍처의 워크플로는 일반적으로 일관된 패턴을 따릅니다.
이벤트 기반 아키텍처를 도입하면 특히 복잡한 분산 시스템의 경우 수많은 이점을 누릴 수 있습니다.
향상된 확장성
EDA의 서비스는 느슨하게 결합되어 있으며 독립적으로 확장할 수 있습니다. '주문 처리' 서비스에 과부하가 걸린 경우 '사용자 알림' 서비스에 영향을 주지 않고 해당 서비스만 수직 확장할 수 있습니다.
향상된 복원력 및 내결함성
이벤트 기반 아키텍처는 서비스 장애를 격리하여 애플리케이션의 견고성을 높일 수 있습니다. 분리된 특성 덕분에 하나의 소비자 서비스에서 발생한 오작동이 전파되어 시스템 전체가 고장 나는 일이 거의 없습니다.
민첩성과 유연성 향상
개발자는 시스템의 다른 부분에 미치는 영향을 최소화하면서 서비스를 추가, 수정 또는 삭제할 수 있습니다. 새로운 서비스는 기존 이벤트 스트림을 구독하여 원래 이벤트 제작자를 변경하지 않고도 새로운 기능을 추가할 수 있습니다.
실시간 대응
이벤트 기반 아키텍처는 시스템이 이벤트에 즉각적으로 대응하도록 지원합니다. 이 기능은 사기 감지, 실시간 분석, 운영 모니터링 등 신속한 조치가 가장 중요한 애플리케이션에 특히 유용합니다.
간소화된 통합
EDA는 기존 애플리케이션, 최신 마이크로서비스, 서드 파티 서비스 등 서로 다른 시스템을 통합하기 위한 유연한 백본 역할을 할 수 있습니다. 각 시스템은 다른 모든 시스템과 직접적인 지점 간 통합이 필요 없이 이벤트를 게시하고 사용할 수 있습니다.
확장성
새로운 기능을 추가하거나 기존 이벤트에 새로운 방식으로 대응하는 것은 관련 이벤트 스트림을 구독하는 새로운 소비자 서비스 배포가 포함되는 경우가 많습니다.
EDA는 마이크로서비스 간의 통신과 데이터 흐름을 지원하는 일반적인 패턴입니다. 긴밀한 결합을 유발할 수 있는 직접적인 동기식 API 호출 대신 마이크로서비스는 상태가 변경될 때 이벤트를 게시할 수 있으며, 다른 마이크로서비스는 이러한 이벤트를 구독하여 적절하게 대응할 수 있습니다.
IoT 센서 데이터, 애플리케이션 로그, 소셜 미디어 피드, 금융 시장 데이터와 같이 속도가 빠른 데이터 스트림을 처리하는 애플리케이션은 EDA를 사용하여 이 정보를 실시간으로 처리, 분석하고 이에 대응할 수 있습니다. 이를 통해 대시보드, 알림 시스템 또는 자동화된 의사 결정 프로세스를 강화할 수 있습니다.
판매에 대한 대응으로 재고 수준을 관리하는 것부터 결제, 배송, 주문 처리 등 다양한 단계를 거쳐 주문을 처리하는 것, 고객 알림을 보내는 것까지, EDA는 온라인 소매업에 내재된 복잡한 비동기식 워크플로를 관리하는 데 도움이 될 수 있습니다. 결제 처리 서비스가 느린 경우에도 주문 이벤트는 재고 예약과 같은 다른 서비스에서 캡처하고 처리할 수 있습니다.
많은 비즈니스 프로세스는 본질적으로 이벤트 기반입니다. 예를 들어 보험금 청구 제출(이벤트)은 사기 확인, 평가, 고객 커뮤니케이션, 최종적으로 결제 처리와 같은 일련의 다운스트림 활동을 트리거할 수 있습니다. EDA는 이러한 워크플로를 효과적으로 모델링하고 자동화하는 데 도움이 될 수 있습니다.
여러 시스템 또는 데이터 스토어에서 데이터를 일관되게 유지해야 하는 경우 EDA를 사용할 수 있습니다. 한 데이터베이스의 변경사항(이벤트)을 게시하여 다른 데이터베이스나 캐시가 이러한 변경 이벤트에 구독하고 자체적으로 업데이트할 수 있습니다.
서버리스 함수(예: Cloud Run Functions)는 이벤트 기반으로 설계되는 경우가 많습니다. 이는 객체가 클라우드 스토리지에 업로드되거나, 메시지가 큐에 도착하거나, HTTP 요청이 발생하는 등 다양한 이벤트 트리거에 대한 응답으로 실행됩니다. EDA는 서버리스 구성요소를 사용하여 애플리케이션을 빌드하는 데 적합합니다.
실시간 사기 감지, 주식 시장 모니터링, 거래 처리는 EDA의 짧은 지연 시간과 높은 처리량 기능을 활용하는 중요한 금융 애플리케이션입니다.
Google Cloud는 고객이 강력한 이벤트 기반 애플리케이션을 빌드하고 배포할 수 있도록 지원하는 강력한 서비스 제품군을 제공합니다. 플랫폼 자체는 이벤트 기반 원칙을 활용하여 확장 가능하고 복원력이 뛰어난 서비스를 제공합니다. 이벤트 기반 솔루션을 빌드하는 고객을 위해 Google Cloud는 다음과 같은 몇 가지 주요 관리형 서비스를 제공합니다.