Jump to section

이벤트 기반 아키텍처란 무엇일까요?

URL 복사

이벤트 기반 아키텍처는 애플리케이션 설계를 위한 소프트웨어 아키텍처 및 모델입니다. 이벤트 기반 시스템은 분리된 서비스들 간의 이벤트를 캡처하고 전달하고 처리하기 위해 설계되었습니다. 따라서 시스템은 계속해서 정보를 공유하고 태스크를 완수하면서 비동기 상태를 유지할 수 있습니다. 

대부분의 현대적인 애플리케이션 설계는 실시간으로 고객 데이터를 활용해야 하는 고객 참여 프레임워크처럼 이벤트 기반으로 이루어집니다. 이벤트 기반은 언어가 아닌 프로그래밍 방식이므로 이벤트 기반 애플리케이션은 모든 프로그래밍 언어로 구축될 수 있습니다. 이벤트 기반 아키텍처(EAD)를 사용하면 결합을 최소화할 수 있으므로 현대화된 분산형 애플리케이션 아키텍처에 적합한 옵션입니다.

이벤트 생성자는 어떤 이벤트 소비자가 이벤트를 수신하고 있는지 알지 못하고 이벤트에서 어떤 결과가 생기는지 알지 못하므로 EDA는 탄력적으로 결합되어 있습니다.

 

이벤트는 시스템 하드웨어 또는 소프트웨어의 상태와 관련된 모든 중요한 발생 또는 변경 사항의 기록에 해당합니다. 이벤트 발생을 알리기 위해 시스템이 시스템의 다른 부분에 통보하기 위해 보내는 메시지 또는 알림인 이벤트 알림과는 다릅니다.

이벤트의 소스는 내부 또는 외부 입력일 수 있습니다. 이벤트는 사용자(예: 마우스 클릭, 키보드 입력), 외부 소스(예: 센서 출력) 또는 시스템(예: 프로그램 로딩)에서 생성될 수 있습니다.

분리와 탄력적 결합은 소프트웨어 아키텍처와 이벤트 기반 시스템 내에서 상호 연관되지만 구분되는 개념을 가리킵니다.

분리는 시스템 내 별도의 구성요소들 간 직접적인 종속성을 제거 또는 최소화하여 어떠한 구성요소도 다른 구성요소에 의존하지 않도록 하는 방식입니다. 이벤트 기반 아키텍처 환경에서는 이벤트를 생성하는 구성요소들이 특정 사용자자 구성요소를 고려하지 않고 이벤트 데이터를 전송하도록 함으로써 분리를 수행할 수 있습니다. 이러한 분리를 통해 구성요소들이 독립성을 획득하게 되고 전체적으로 더욱 유연한 시스템을 만들 수 있습니다.

탄력적 결합은 구성요소들 간 상호의존성의 정도를 낮추지만 완전히 분리시키지는 않는 것을 목표로 하는 특정 형식의 분리입니다. 탄력적으로 결합된 시스템에서는 구성요소들이 서로 상호작용을 하지만 어떤 형태로도 의존성은 형성하지 않습니다.

두 시스템 모두 유연성과 독립성을 높이기 때문에 결국 민첩하면서도 확장 가능한 시스템이 생성됩니다.

이벤트 기반 아키텍처는 이벤트 생성자(게시자)와 이벤트 사용자(구독자)로 구성되어 있습니다. 이벤트 생성자는 이벤트를 탐지 또는 감지하고 이벤트를 메시지로 나타냅니다. 분리로 인해 이벤트 생성자는 이벤트의 사용자나 이벤트의 결과를 알지 못합니다.

이벤트가 감지된 후에는 이벤트 처리 플랫폼이 비동기식으로 이벤트를 처리하는 이벤트 채널을 통해 이벤트가 이벤트 생성자에서 이벤트 사용자로 전달됩니다. 이벤트가 발생하면 이벤트 사용자에게 알려야 합니다. 이벤트 사용자는 해당 이벤트를 처리할 수도 있고 이벤트의 영향만 받을 수도 있습니다.

이벤트 처리 플랫폼은 이벤트에 대한 적절한 응답을 실행하고 활동을 적합한 사용자에게 다운스트림으로 전송합니다. 이러한 다운스트림 활동을 통해 이벤트 결과를 확인할 수 있습니다.

Apache Kafka는 이벤트 처리에 많이 사용되는 분산형 데이터 스트리밍 플랫폼으로, 이벤트 스트림 게시, 구독, 저장 및 처리를 실시간으로 수행할 수 있습니다. Apache Kafka는 높은 처리량과 확장성이 반드시 필요한 다양한 활용 사례를 지원하며, 특정 애플리케이션에서 데이터 공유를 위한 포인트 투 포인트(point-to-point) 통합의 필요성을 최소화하여 대기 시간을 밀리초 단위로 줄일 수 있습니다.

이벤트 처리 플랫폼 역할을 할 수 있는 다른 미들웨어 이벤트 관리자들도 있습니다.

이벤트 기반 아키텍처는 게시/구독(pub/sub) 모델 또는 이벤트 스트림 모델을 기반으로 할 수 있습니다.

게시/구독 모델
이벤트 스트림 구독을 기반으로 하는 메시징 인프라입니다. 이 모델을 사용하면 이벤트가 발생하거나 게시된 후에 이에 대한 알림을 받아야 하는 구독자에게 이벤트가 전송됩니다.

이벤트 스트리밍 모델
이벤트 스트리밍 모델을 사용하면 이벤트가 로그에 작성됩니다. 이벤트 사용자는 이벤트 스트림을 구독하지 않습니다. 대신 스트림의 어느 부분에서든 데이터를 읽고, 언제든 스트림에 합류할 수 있습니다.

이벤트 스트리밍에는 다음과 같은 몇 가지 유형이 있습니다.

  • 이벤트 스트림 처리는 Apache Kafka와 같은 데이터 스트리밍 플랫폼을 사용하여 이벤트를 수집하고 이벤트 스트림을 처리하거나 변환합니다. 
  • 단순 이벤트 처리는 이벤트가 이벤트 사용자의 작업을 즉시 트리거하는 경우입니다.

복합 이벤트 처리의 경우 이벤트 사용자는 패턴을 감지하기 위해 일련의 이벤트를 처리해야 합니다. 이벤트 스트림 처리를 통해 이벤트 스트림에서 의미 있는 패턴을 감지할 수 있습니다.

EDA를 통해 조직은 실시간으로 변화에 대응하고 의사 결정을 내림으로써 워크플로우를 개선할 수 있는 유연한 시스템을 확보할 수 있습니다. 실시간 상황 인식은 시스템의 현재 상태를 반영하는 가용 데이터를 모두 사용하여 수동이든 자동이든 비즈니스 의사 결정을 내릴 수 있음을 의미합니다.

이벤트는 사물인터넷(IoT) 장치, 애플리케이션 및 네트워크와 같은 이벤트 소스에서 발생할 때 캡처되므로 이벤트 생성자와 이벤트 사용자는 상태와 응답 정보를 실시간으로 공유할 수 있습니다.

조직은 이벤트 기반 아키텍처를 시스템과 애플리케이션에 추가하여 애플리케이션의 확장성과 응답성을 개선하고 비즈니스 의사 결정의 효율성 제고에 필요한 데이터 및 컨텍스트에 대한 액세스를 개선할 수 있습니다.

이벤트 기반 아키텍처는 데이터 또는 서비스의 생산자와 사용자가 직접적으로 소통할 필요가 없는 분산의 장점을 제공하여 시스템의 유연성과 확장성을 향상시킵니다. 그러면 새로운 구성요소들의 통합이 간소화되고, 내결함성이 촉진되며, 전반적인 시스템 효율성이 강화됩니다.

Red Hat은 하이브리드 클라우드 환경 전반에서 레거시 기술과 마이크로서비스를 신속히 연결하고 애자일 통합을 통해 이벤트 기반 아키텍처를 지원하는 통합 툴링과 관리 소프트웨어를 제공합니다.

Red Hat OpenShift는 Red Hat Application Foundations의 툴 세트와 더불어 조직이 개발자 생산성을 개선하고, CI/CD 파이프라인을 자동화하며, 보안 작업을 개발 주기 전체에 걸쳐 보다 신속하게 전환하는 데 도움이 됩니다. 이는 DevSecOps 사례를 자동화함으로써 소프트웨어 공급망 보안을 강화하고, 런타임 시 애플리케이션 보안을 제공합니다.

OpenShift Dev Spaces 기능은 개발자에게 더 빠르고 일관되며 안정적인 개발 환경을 제공하고 IT 운영을 중앙에서 제어할 수 있는 권한을 부여합니다. Serverless, Service Mesh와 같은 OpenShift 기능과 애플리케이션 런타임 및 프레임워크, API 관리, 데이터 스트리밍, 이벤트 기반 서비스와 같은 Red Hat Application Services 기능은 개발자에게 언어 및 툴링에 대한 셀프 서비스 액세스 권한을 제공하고 개발자 생산성을 높입니다. 개발자가 특정 툴을 선택한 경우 Red Hat은 OpenShift와 호환되는 파트너 솔루션으로 구성된 방대한 에코시스템에 대한 액세스 권한을 제공합니다.

추가 자료

문서

통합이란?

통합에 대해 알고 싶으신가요? 통합의 정의와 통합 방법, 오픈소스로 통합하는 것이 훨씬 효율적인 이유 등을 알아보세요.

문서

Apache Kafka란 무엇일까요?

Apache Kafka는 실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 분산 데이터 스트리밍 플랫폼입니다.

문서

API란?

API는 애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트인 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)를 뜻합니다.

통합에 대한 자세한 내용

제품

배포 및 애플리케이션 개발을 가속화합니다.

비즈니스를 혁신하고 끊임없이 변화하는 시장의 요구 사항을 충족하세요.

하이브리드 클라우드 경험을 간편화하고 클라우드 네이티브 애플리케이션 배포의 운영 비용과 복잡성을 줄입니다.

리소스

E-book

애자일 인프라의 생성과 기업의 적응력 향상

자세히 알아보기

교육

무료 교육 과정

Red Hat 애자일 인테그레이션 기술 개요