에스퍼(Esper)

Think_Positively·2021년 4월 26일
1

에스퍼

에스퍼의 경우 실시간 스트리밍 데이터의 복잡한 이벤트 처리가 필요할 때 사용하는 룰 엔진이다. 실시간으로 발생하는 데이터 간의 관계를 복합적으로 판단 및 처리하는 것을 CEP(Complex Event Processing)라고 하는데, 에스퍼가 바로 CEP 기능을 제공한다. 에스퍼를 이용하면 다양한 조건과 복합 이벤트를 하나의 룰로 쉽게 정의할 수 있어 CEP 처리 및 관리가 수월하다.

에스퍼의 기본 요소

주요 구성 요소설명
Event실시간 스트림으로 발생하는 데이터들의 특정 흐름 또는 패턴을 정의
EPL유사 SQL을 기반으로 하는 이벤트 데이터 처리 스크립트 언어
Input Adapter소스로부터 전송되는 데이터를 처리하기 위한 어댑터 제공(CSV, Socket, JDBC, Http 등)
Output Adapter타깃으로 전송하는 데이터를 처리하기 위한 어댑터 제공(HDFS, CSV, Socket, EMail, Http등)
Window실시간 스트림 데이터로부터 특정 시간 또는 개수를 설정한 이벤트들을 메모리 상에 등록한 후 EPL을 통해 결과를 추출

에스퍼 아키텍처

CEP(Complex Event Processing) 엔진은 단순 자바 라이브러리 프로그램으로, 설치와 사용이 매우 간단하다. 그로 인해 애플리케이션 서버(톰캣, 제이보스, OSGI, 스톰 등)에 에스퍼 라이브러리를 설치하고, 해당 라이브러리를 이용해 CEP 프로그래밍을 하는 단순한 아키텍처를 가지고 있다.

[에스퍼 아키텍처1]

하지만 에스퍼의 EPL(Event Processing Language)을 이용해 대규모 분산 아키텍처를 구성할 때는 룰을 통합 관리하고, 분산 노드에 일관되게 적용하기 위해 다소 복잡한 구성이 필요하다. 이때 분산된 응용 서버에 에스퍼 엔진을 설치하고, 에스퍼 엔진들이 동일한 EPL 룰을 동적으로 일괄 로딩하기 위해 EPL 공유 저장소가 이용된다.

[에스퍼 아키텍처2]


에스퍼 활용 방안

현재 아키텍처에서 에스퍼 활용 방안

현재 구성된 아키텍처에서 운전자의 운행 데이터를 실시간으로 분석하기 위해 에스퍼 EPL을 활용한다. EPL은 30초 동안의 평균 시속을 체크해서 80km/h를 초과하는 운전자 이벤트 정보를 실시간으로 감지할 수 있도록 룰을 정의한다.

profile
데이터 엔지니어를 꿈꾸며

1개의 댓글

comment-user-thumbnail
2022년 9월 13일

좋은 글 감사합니다^^

답글 달기