Building Real-time CEP Application with Open Source Projects

Post on 29-Nov-2014

2.986 views 22 download

description

오픈 소스로 구현하는 Real-time CEP

Transcript of Building Real-time CEP Application with Open Source Projects

Complex Event Processing with Esper Real-time Event Stream & Complex Event Processing

오픈����������� ������������������  소스로����������� ������������������  구현하는����������� ������������������  Real-time����������� ������������������  CEP����������� ������������������  

데이터지능팀 I 원종석

About����������� ������������������  Me����������� ������������������  

원종석����������� ������������������  @tedwon����������� ������������������  

한국����������� ������������������  JBoss����������� ������������������  User����������� ������������������  Group����������� ������������������  커뮤니티����������� ������������������  부운영자����������� ������������������  

JBoss����������� ������������������  RHQ����������� ������������������  Contributor����������� ������������������  

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  데이터����������� ������������������  분석����������� ������������������  플랫폼����������� ������������������  DAISY����������� ������������������  운영����������� ������������������  /����������� ������������������  개발����������� ������������������  중����������� ������������������  

Love����������� ������������������  Classical����������� ������������������  Music����������� ������������������  Developer����������� ������������������  ����������� ������������������  채널����������� ������������������  추천����������� ������������������  

CEP����������� ������������������  소개����������� ������������������  01

오픈����������� ������������������  소스����������� ������������������  Esper����������� ������������������  활용����������� ������������������  하기����������� ������������������  02

Index

Index

CEP����������� ������������������  소개����������� ������������������  01����������� ������������������  

Event의����������� ������������������  정의����������� ������������������  02����������� ������������������  

Real-time����������� ������������������  이란?����������� ������������������  03����������� ������������������  

CEP����������� ������������������  적용����������� ������������������  분야와����������� ������������������  상용����������� ������������������  제품����������� ������������������  04����������� ������������������  

오픈����������� ������������������  소스����������� ������������������  Esper����������� ������������������  활용하기����������� ������������������  05����������� ������������������  

EPL과����������� ������������������  Adapter����������� ������������������  개발����������� ������������������  06����������� ������������������  

CEP����������� ������������������  개발����������� ������������������  전략����������� ������������������  07����������� ������������������  

CEP����������� ������������������  소개����������� ������������������  01����������� ������������������  § Concept����������� ������������������  of����������� ������������������  CEP����������� ������������������  § CEP����������� ������������������  적용����������� ������������������  사례����������� ������������������  § CEP����������� ������������������  기술적����������� ������������������  이해����������� ������������������  § EDA����������� ������������������  소개����������� ������������������  § EDA����������� ������������������  처리����������� ������������������  스타일����������� ������������������  3����������� ������������������  가지����������� ������������������  § ESP����������� ������������������  vs.����������� ������������������  CEP����������� ������������������  § CEP����������� ������������������  Language����������� ������������������  Style����������� ������������������  

C E P

01 CEP 소개

Complex Event Processing

01 CEP 소개

01 CEP 소개

Concept����������� ������������������  of����������� ������������������  CEP����������� ������������������  

교회에서...����������� ������������������  

벨이����������� ������������������  울린다.����������� ������������������  

턱시도를����������� ������������������  입은����������� ������������������  남자와����������� ������������������  꽃을����������� ������������������  든����������� ������������������  여자가����������� ������������������  함께����������� ������������������  걷는다.����������� ������������������  

두����������� ������������������  사람����������� ������������������  위로����������� ������������������  꽃����������� ������������������  잎이����������� ������������������  날리고����������� ������������������  푹죽이����������� ������������������  터진다.����������� ������������������  

Concept����������� ������������������  of����������� ������������������  CEP����������� ������������������  

CEP����������� ������������������  기술은����������� ������������������  이러한����������� ������������������  복합적인����������� ������������������  Event를����������� ������������������  참조하여����������� ������������������  

결혼식이라는����������� ������������������  패턴을����������� ������������������  알아����������� ������������������  차린다.����������� ������������������  

01 CEP 소개

알고리즘����������� ������������������  주식����������� ������������������  트레이딩����������� ������������������  

Algorithmic����������� ������������������  Stock-Trading����������� ������������������  

대표적인����������� ������������������  CEP����������� ������������������  적용����������� ������������������  사례����������� ������������������  

주식����������� ������������������  알고리즘����������� ������������������  트레이딩����������� ������������������  

실시간����������� ������������������  주식����������� ������������������  틱����������� ������������������  모니터링����������� ������������������  

실시간����������� ������������������  자동����������� ������������������  주식����������� ������������������  매도����������� ������������������  /����������� ������������������  매수����������� ������������������  

01 CEP 소개

온라인����������� ������������������  주문����������� ������������������  실시간����������� ������������������  통계����������� ������������������  

상품별����������� ������������������  주문����������� ������������������  Top10����������� ������������������  

상품����������� ������������������  카테고리별����������� ������������������  주문����������� ������������������  Top10����������� ������������������  

지역별����������� ������������������  주문����������� ������������������  비율����������� ������������������  

01 CEP 소개

이마트����������� ������������������  매장에서����������� ������������������  

이마트 매장에서

전국����������� ������������������  지점별����������� ������������������  매장����������� ������������������  내����������� ������������������  고객����������� ������������������  현황����������� ������������������  실시간����������� ������������������  통계����������� ������������������  

매장����������� ������������������  내����������� ������������������  이동����������� ������������������  중����������� ������������������  자동으로����������� ������������������  실시간����������� ������������������  쿠폰����������� ������������������  발행����������� ������������������  

카트����������� ������������������  모니터를����������� ������������������  통해����������� ������������������  실시간����������� ������������������  타겟팅����������� ������������������  광고����������� ������������������  /����������� ������������������  추천����������� ������������������  

01 CEP 소개

CEP����������� ������������������  좀����������� ������������������  더����������� ������������������  디테일하게����������� ������������������  알아볼까요?����������� ������������������  

01 CEP 소개

CEP의����������� ������������������  기술적����������� ������������������  이해����������� ������������������  

1990년����������� ������������������  중반부터����������� ������������������  학계로����������� ������������������  부터����������� ������������������  연구가����������� ������������������  시작됨����������� ������������������  

실시간����������� ������������������  이벤트����������� ������������������  처리����������� ������������������  기술����������� ������������������  

수많은����������� ������������������  Event����������� ������������������  에서����������� ������������������  의미있는����������� ������������������  이벤트����������� ������������������  찾아내고����������� ������������������  필터링����������� ������������������  

01 CEP 소개

CEP의����������� ������������������  기술적����������� ������������������  이해����������� ������������������  (계속)����������� ������������������  

EDA(Event-driven����������� ������������������  architecture)����������� ������������������  기반����������� ������������������  시스템����������� ������������������  

Intelligence����������� ������������������  System����������� ������������������  

Loosely-coupled����������� ������������������  구조적����������� ������������������  특징����������� ������������������  

Asynchronous����������� ������������������  Style����������� ������������������  처리����������� ������������������  패러다임����������� ������������������  

����������� ������������������  

01 CEP 소개

Asynchronous����������� ������������������  Style����������� ������������������  

CEP Style

01 CEP 소개

•  Source: Event Processing in Action

Event����������� ������������������  Driven����������� ������������������  Architecture����������� ������������������  

Event의����������� ������������������  생산,����������� ������������������  감지,����������� ������������������  소모,����������� ������������������  반응을����������� ������������������  위한����������� ������������������  아키텍처����������� ������������������  패턴����������� ������������������  

EDA����������� ������������������  소개����������� ������������������  ����������� ������������������  

01 CEP 소개

사람의����������� ������������������  감각����������� ������������������  기관����������� ������������������  및����������� ������������������  반응����������� ������������������  구조와����������� ������������������  유사����������� ������������������  

EDA����������� ������������������  소개����������� ������������������  (계속)����������� ������������������  

눈, 귀 등의 감각 기관 생각, 판단 손, 발의 반응

01 CEP 소개

웹����������� ������������������  애플리케이션����������� ������������������  Architecture����������� ������������������  

Synchronous����������� ������������������  interactions����������� ������������������  

Request����������� ������������������  에����������� ������������������  대한����������� ������������������  Response����������� ������������������  구조����������� ������������������  

선저장����������� ������������������  후처리����������� ������������������  패러다임����������� ������������������  

01 CEP 소개

선처리����������� ������������������  후저장����������� ������������������  패러다임����������� ������������������  

Asynchronous����������� ������������������  Style����������� ������������������  Processing����������� ������������������  

Response����������� ������������������  가����������� ������������������  아닌����������� ������������������  Reaction����������� ������������������  하는����������� ������������������  시스템����������� ������������������  

CEP가����������� ������������������  이러한����������� ������������������  스타일을����������� ������������������  그대로����������� ������������������  물려����������� ������������������  받음����������� ������������������  

EDA����������� ������������������  이벤트����������� ������������������  처리����������� ������������������  패러다임����������� ������������������  ����������� ������������������  

01 CEP 소개

EDA의����������� ������������������  Event����������� ������������������  처리����������� ������������������  스타일����������� ������������������  3가지����������� ������������������  

01 CEP 소개

SEP����������� ������������������  -����������� ������������������  Simple����������� ������������������  Event����������� ������������������  Processing����������� ������������������  

����������� ������������������  

ESP����������� ������������������  -����������� ������������������  Event����������� ������������������  Stream����������� ������������������  Processing����������� ������������������  

CEP����������� ������������������  -����������� ������������������  Complex����������� ������������������  Event����������� ������������������  Processing����������� ������������������  

JMS(Java����������� ������������������  Message����������� ������������������  Service)가����������� ������������������  대표적인����������� ������������������  예����������� ������������������  

Message를����������� ������������������  전달하는����������� ������������������  Event����������� ������������������  처리����������� ������������������  

ESP����������� ������������������  vs.����������� ������������������  CEP����������� ������������������  

ESP����������� ������������������  -����������� ������������������  일반적인����������� ������������������  모든����������� ������������������  Event����������� ������������������  스트림����������� ������������������  계산����������� ������������������  기능����������� ������������������  

����������� ������������������  Filtering,����������� ������������������  Aggregation,����������� ������������������  Join����������� ������������������  

����������� ������������������  “지난����������� ������������������  30분간의����������� ������������������  구글����������� ������������������  주식����������� ������������������  평균값����������� ������������������  계산”����������� ������������������  

CEP����������� ������������������  -����������� ������������������  ESP����������� ������������������  &����������� ������������������  패턴����������� ������������������  감지����������� ������������������  기능����������� ������������������  

01 CEP 소개

Complex����������� ������������������  Event����������� ������������������  Processing����������� ������������������  

Detect����������� ������������������  patterns����������� ������������������  among����������� ������������������  events����������� ������������������  

Define����������� ������������������  event����������� ������������������  correlation:����������� ������������������  이벤트간의����������� ������������������  인과관계����������� ������������������  ����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

����������� ������������������  

“야후!����������� ������������������  주식이����������� ������������������  10%이상����������� ������������������  떨어진����������� ������������������  이후,����������� ������������������  

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  구글����������� ������������������  주식이����������� ������������������  5%이상����������� ������������������  2번����������� ������������������  연속으로����������� ������������������  오른다면…⋯”����������� ������������������  

01 CEP 소개

대표적인����������� ������������������  오픈����������� ������������������  소스����������� ������������������  프로젝트����������� ������������������  2����������� ������������������  가지����������� ������������������  존재����������� ������������������  

ü  EsperTech����������� ������������������  Esper����������� ������������������  SQL-like����������� ������������������  Script����������� ������������������  언어����������� ������������������  제공����������� ������������������  

ü JBoss����������� ������������������  Drools����������� ������������������  Fusion����������� ������������������  Rule����������� ������������������  Script����������� ������������������  언어����������� ������������������  제공����������� ������������������  

Complex����������� ������������������  Event����������� ������������������  Processing����������� ������������������  

01 CEP 소개

CEP����������� ������������������  소개����������� ������������������  01����������� ������������������  § Concept����������� ������������������  of����������� ������������������  CEP����������� ������������������  § CEP����������� ������������������  적용����������� ������������������  사례����������� ������������������  § CEP����������� ������������������  기술적����������� ������������������  이해����������� ������������������  § EDA����������� ������������������  소개����������� ������������������  § EDA����������� ������������������  처리����������� ������������������  스타일����������� ������������������  3����������� ������������������  가지����������� ������������������  § ESP����������� ������������������  vs.����������� ������������������  CEP����������� ������������������  § CEP����������� ������������������  Language����������� ������������������  Style����������� ������������������  

Event의����������� ������������������  정의����������� ������������������  02����������� ������������������  § Event의����������� ������������������  정의����������� ������������������  § Event����������� ������������������  Examples����������� ������������������  § Event����������� ������������������  Stream의����������� ������������������  개념����������� ������������������  

What����������� ������������������  is����������� ������������������  Event?����������� ������������������  

02 Event의 정의

Event란����������� ������������������  무엇인가?����������� ������������������  

무엇을����������� ������������������  Event로����������� ������������������  정의����������� ������������������  할����������� ������������������  수����������� ������������������  있는가?����������� ������������������  

Event의����������� ������������������  정의����������� ������������������  

02 Event의 정의

Something����������� ������������������  that����������� ������������������  happens����������� ������������������  

실제로����������� ������������������  발생한����������� ������������������  사건,����������� ������������������  일,����������� ������������������  메세지����������� ������������������  

Event란����������� ������������������  어떤����������� ������������������  것의����������� ������������������  변화이다!����������� ������������������  

Event의����������� ������������������  정의����������� ������������������  (계속)����������� ������������������  

02 Event의 정의

변화한다는����������� ������������������  것은����������� ������������������  어떠한����������� ������������������  상태를����������� ������������������  가지고����������� ������������������  있다는����������� ������������������  의미����������� ������������������  

상태를����������� ������������������  가지고����������� ������������������  변화하는����������� ������������������  모든����������� ������������������  것이����������� ������������������  Event로����������� ������������������  정의될����������� ������������������  수����������� ������������������  있다.����������� ������������������  

이����������� ������������������  세상의����������� ������������������  모든����������� ������������������  것은����������� ������������������  변화한다.����������� ������������������  

Event의����������� ������������������  정의����������� ������������������  (계속)����������� ������������������  

02 Event의 정의

Event����������� ������������������  Examples����������� ������������������  (계속)����������� ������������������  

Stock����������� ������������������  tick����������� ������������������  

비밀번호����������� ������������������  변경����������� ������������������  

10초마다����������� ������������������  실내����������� ������������������  온도����������� ������������������  측정����������� ������������������  

위치����������� ������������������  이동����������� ������������������  이벤트����������� ������������������  

02 Event의 정의

Event����������� ������������������  Stream의����������� ������������������  개념����������� ������������������  

정해진����������� ������������������  Channel을����������� ������������������  통해����������� ������������������  ����������� ������������������  

시간의����������� ������������������  순서대로����������� ������������������  연속되는����������� ������������������  Event의����������� ������������������  흐름����������� ������������������  

시작과����������� ������������������  끝이����������� ������������������  없는����������� ������������������  Event의����������� ������������������  연속된����������� ������������������  흐름����������� ������������������  

Examples:����������� ������������������  ����������� ������������������  수도관의����������� ������������������  물의����������� ������������������  흐름����������� ������������������  

����������� ������������������   ����������� ������������������  ����������� ������������������  차도의����������� ������������������  자동차의����������� ������������������  흐름����������� ������������������  

02 Event의 정의

Event의����������� ������������������  정의����������� ������������������  02����������� ������������������  § Event의����������� ������������������  정의����������� ������������������  § Event����������� ������������������  Examples����������� ������������������  § Event����������� ������������������  Stream의����������� ������������������  개념����������� ������������������  

Real-time����������� ������������������  이란?����������� ������������������  03����������� ������������������  § Real-time����������� ������������������  시스템의����������� ������������������  정의����������� ������������������  § Real-time����������� ������������������  3����������� ������������������  Class����������� ������������������  

Real-time����������� ������������������  시스템의����������� ������������������  정의����������� ������������������  

낮은����������� ������������������  수준의����������� ������������������  지연����������� ������������������  시간:����������� ������������������  Low����������� ������������������  latency����������� ������������������  

일정한����������� ������������������  응답����������� ������������������  속도의����������� ������������������  보장:����������� ������������������  Regularities����������� ������������������  in����������� ������������������  Response����������� ������������������  time����������� ������������������  

예측����������� ������������������  가능한����������� ������������������  성능����������� ������������������  제공:����������� ������������������  Providing����������� ������������������  predictable����������� ������������������  performance����������� ������������������  

결국 낮은 지연 시간을 일정하게 최대한 오래 유지 시켜주는 것이 핵심

03 Real-time 이란?

Real-time����������� ������������������  3����������� ������������������  Class����������� ������������������  

Near Real-time

구체적인 범위 정의는 비즈니스 SLA 요구 수준에 따라 결정됨

03 Real-time 이란?

Real Real-time

Real-time

Real-time����������� ������������������  3����������� ������������������  Class����������� ������������������  

Near Real-time ü Seconds����������� ������������������  수준의����������� ������������������  지연����������� ������������������  시간����������� ������������������  보장����������� ������������������  

Real-time ü Milliseconds����������� ������������������  수준����������� ������������������  보장����������� ������������������  

Real Real-time ü Microseconds����������� ������������������  수준����������� ������������������  보장����������� ������������������  

03 Real-time 이란?

Real-time����������� ������������������  이란?����������� ������������������  03����������� ������������������  § Real-time����������� ������������������  시스템의����������� ������������������  정의����������� ������������������  § Real-time����������� ������������������  3����������� ������������������  Class����������� ������������������  

CEP����������� ������������������  적용����������� ������������������  분야와����������� ������������������  상용����������� ������������������  제품����������� ������������������  04����������� ������������������  § CEP����������� ������������������  적용����������� ������������������  분야����������� ������������������  § CEP����������� ������������������  상용����������� ������������������  제품����������� ������������������  

CEP����������� ������������������  적용����������� ������������������  분야����������� ������������������  

분야 설명

Finance Algorithmic Stock-Trading 금융 관리, fraud detection

OI Operational Intelligence 장비 고장 예측 SLA 모니터링, 침입 탐지

Analytics Real-time analytics 데이터 분석

Predictive analytics 예측 분석

EBPM Event-driven business process management BPM 자동화

BAM Business Activity Monitoring 프로세스 모니터링

Computing Stream computing 스트림 컴퓨팅

ETL Extract, Transform, Load 데이터 전처리 작업

기존의����������� ������������������  영역에����������� ������������������  첨가됨으로써����������� ������������������  보다����������� ������������������  인텔리전트한����������� ������������������  시스템으로����������� ������������������  발전����������� ������������������  

04 CEP 적용 분야와 상용 제품

CEP����������� ������������������  상용����������� ������������������  제품����������� ������������������  

벤더 제품명 설명

TIBCO TIBCO BusinessEvents 업계 최고 제품

StreamBase Systems StreamBase CEP 정교한 CEP 제품

SAP Sybase Event Stream Processor Sybase 제품 인수

Oracle Oracle CEP Esper 기반

IBM InfoSphere Streams 테러 방지 목적으로 시작 멀티미디어 스트림 프로세싱 가능

WebSphere Business Events -

Microsoft StreamInsight -

Informatica RulePoint -

대부분의����������� ������������������  메이저����������� ������������������  벤더����������� ������������������  CEP����������� ������������������  제품����������� ������������������  보유����������� ������������������  

CEP����������� ������������������  제품은����������� ������������������  모두����������� ������������������  단순한����������� ������������������  동일한����������� ������������������  구조를����������� ������������������  가짐����������� ������������������  

04 CEP 적용 분야와 상용 제품

이제,����������� ������������������  실제����������� ������������������  구현의����������� ������������������  비밀에����������� ������������������  ����������� ������������������  

좀����������� ������������������  더����������� ������������������  가까이����������� ������������������  다가가����������� ������������������  볼까요?����������� ������������������  

CEP

오픈����������� ������������������  소스����������� ������������������  Esper����������� ������������������  활용하기����������� ������������������  05����������� ������������������  § Esper����������� ������������������  소개����������� ������������������  § 오픈����������� ������������������  소스����������� ������������������  Esper����������� ������������������  § Esper����������� ������������������  Architecture����������� ������������������  §  Input����������� ������������������  /����������� ������������������  Output����������� ������������������  Adapters����������� ������������������  § Esper����������� ������������������  Runtime����������� ������������������  선택����������� ������������������  § Virgo����������� ������������������  OSGi����������� ������������������  Server����������� ������������������  추천����������� ������������������  

Esper����������� ������������������  소개����������� ������������������  

가장����������� ������������������  유명한����������� ������������������  CEP����������� ������������������  오픈����������� ������������������  소스����������� ������������������  프로젝트����������� ������������������  

2004년����������� ������������������  토마스����������� ������������������  버나드(Thomas����������� ������������������  Bernhardt)가����������� ������������������  시작����������� ������������������  

Quick����������� ������������������  Start����������� ������������������  Project����������� ������������������  테스트����������� ������������������  추천����������� ������������������  

ü  https://github.com/tedwon/cep-esper-quick-start����������� ������������������  

05 오픈 소스 Esper 활용하기

Esper����������� ������������������  Quick����������� ������������������  Start����������� ������������������  Project����������� ������������������  

05 오픈 소스 Esper 활용하기

Esper����������� ������������������  Quick����������� ������������������  Start����������� ������������������  Project����������� ������������������  

05 오픈 소스 Esper 활용하기

EsperTech����������� ������������������  Esper����������� ������������������  

05 오픈 소스 Esper 활용하기

오픈����������� ������������������  소스����������� ������������������  Esper����������� ������������������  

ESP/CEP����������� ������������������  Engine����������� ������������������  제공����������� ������������������  

EPL(Event����������� ������������������  Processing����������� ������������������  Language)����������� ������������������  제공����������� ������������������  

잘����������� ������������������  정리된����������� ������������������  Reference����������� ������������������  Documentation����������� ������������������  

05 오픈 소스 Esper 활용하기

오픈����������� ������������������  소스����������� ������������������  Esper����������� ������������������  (계속)����������� ������������������  

In-memory����������� ������������������  기반����������� ������������������  시스템����������� ������������������  

Lightweight����������� ������������������  &����������� ������������������  Embeddable����������� ������������������  

No����������� ������������������  Runtime����������� ������������������  Support����������� ������������������  !!����������� ������������������  

05 오픈 소스 Esper 활용하기

우리의 공수가 필요한 부분

Esper����������� ������������������  Architecture����������� ������������������  

05 오픈 소스 Esper 활용하기

Esper����������� ������������������  Architecture����������� ������������������  (계속)����������� ������������������  

CEP����������� ������������������  애플리케이션����������� ������������������  아키텍처����������� ������������������  심플����������� ������������������  뷰����������� ������������������  

05 오픈 소스 Esper 활용하기

Esper����������� ������������������  Architecture����������� ������������������  (계속)����������� ������������������  

CEP����������� ������������������  애플리케이션����������� ������������������  아키텍처����������� ������������������  심플����������� ������������������  뷰����������� ������������������  

05 오픈 소스 Esper 활용하기

Esper����������� ������������������  Architecture����������� ������������������  (계속)����������� ������������������  

CEP����������� ������������������  애플리케이션����������� ������������������  아키텍처����������� ������������������  심플����������� ������������������  뷰����������� ������������������  

05 오픈 소스 Esper 활용하기

Input����������� ������������������  /����������� ������������������  Output����������� ������������������  Adapters����������� ������������������  

CSV File Reader Input CSV File Writer Output

Socket Reader Input Socket Writer Output

HTTP Reader Input HTTP Reader Output

JDBC Jabber Output Adapter

Email (IMAP) Reader Input Email Sender

Hadoop HDFS Input Adapter Hadoop HDFS Output Adapter

Twitter JMS Publish/Subscribe

XML File Writer Output XML over HTTP Writer Output

05 오픈 소스 Esper 활용하기

Esper����������� ������������������  Architecture����������� ������������������  

Hadoop FileSystem API 구현 Thrift Server 구현

ETL EPL 작성 (Extract, Transform, Load)

05 오픈 소스 Esper 활용하기

대용량����������� ������������������  로그����������� ������������������  실시간����������� ������������������  처리����������� ������������������  CEP����������� ������������������  애플리케이션����������� ������������������  아키텍처����������� ������������������  사례����������� ������������������  

ü 실시간����������� ������������������  ETL����������� ������������������  처리����������� ������������������  후����������� ������������������  HDFS����������� ������������������  저장����������� ������������������  

Esper����������� ������������������  Architecture����������� ������������������  

UpdateListener����������� ������������������  인터페이스를����������� ������������������  구현하여����������� ������������������  Output����������� ������������������  Adapter����������� ������������������  구현����������� ������������������  

05 오픈 소스 Esper 활용하기

1 N

UpdateListener����������� ������������������  API����������� ������������������  UpdateListener����������� ������������������  인터페이스를����������� ������������������  구현하여����������� ������������������  Output����������� ������������������  Adapter����������� ������������������  구현����������� ������������������  

05 오픈 소스 Esper 활용하기

Esper����������� ������������������  Runtime����������� ������������������  선택����������� ������������������  

임베디드����������� ������������������  모드����������� ������������������  or����������� ������������������  스탠드����������� ������������������  얼론����������� ������������������  모드����������� ������������������  선택����������� ������������������  필요����������� ������������������  

1.  Esper����������� ������������������  +����������� ������������������  Java����������� ������������������  EE����������� ������������������  Platform����������� ������������������  

2.  Java����������� ������������������  Standalone����������� ������������������  Instance����������� ������������������  

3.  Esper����������� ������������������  +����������� ������������������  OSGi����������� ������������������  Server����������� ������������������  

05 오픈 소스 Esper 활용하기

Esper����������� ������������������  Runtime����������� ������������������  선택����������� ������������������  

Esper + Java EE Platform 도입����������� ������������������  및����������� ������������������  유지보수����������� ������������������  용이����������� ������������������  

����������� ������������������  성능����������� ������������������  최적화����������� ������������������  어려움����������� ������������������  

Java Standalone Instance 가장����������� ������������������  가볍고����������� ������������������  최적화된����������� ������������������  구조로����������� ������������������  적용����������� ������������������  가능����������� ������������������  

����������� ������������������  복잡한����������� ������������������  CEP����������� ������������������  서비스����������� ������������������  구현에서����������� ������������������  한계����������� ������������������  

Esper + OSGi Server Esper와����������� ������������������  최적의����������� ������������������  궁합:����������� ������������������  Life����������� ������������������  cycle����������� ������������������  일치����������� ������������������  

����������� ������������������  라이브러리����������� ������������������  OSGi����������� ������������������  번들링����������� ������������������  이슈����������� ������������������  해결이����������� ������������������  관건����������� ������������������  

05 오픈 소스 Esper 활용하기

Runtime:����������� ������������������  Esper����������� ������������������  +����������� ������������������  OSGi����������� ������������������  Server����������� ������������������  

05 오픈 소스 Esper 활용하기

Zero-downtime����������� ������������������  구현����������� ������������������  가능����������� ������������������  

Virgo����������� ������������������  OSGi����������� ������������������  Server����������� ������������������  추천����������� ������������������  

가장����������� ������������������  완성도����������� ������������������  높은����������� ������������������  오픈����������� ������������������  소스����������� ������������������  Enterprise����������� ������������������  OSGi����������� ������������������  Server����������� ������������������  

Spring����������� ������������������  F/W����������� ������������������  와����������� ������������������  통합����������� ������������������  용이����������� ������������������  

Kernel,����������� ������������������  Tomcat,����������� ������������������  Jetty����������� ������������������  OSGi����������� ������������������  서버����������� ������������������  버전����������� ������������������  제공����������� ������������������  

SpringSource����������� ������������������  유료����������� ������������������  기술����������� ������������������  지원����������� ������������������  

05 오픈 소스 Esper 활용하기

Virgo����������� ������������������  OSGi����������� ������������������  Server����������� ������������������  추천����������� ������������������  

05 오픈 소스 Esper 활용하기

오픈����������� ������������������  소스����������� ������������������  Esper����������� ������������������  활용하기����������� ������������������  05����������� ������������������  § Esper����������� ������������������  소개����������� ������������������  § Esper����������� ������������������  Architecture����������� ������������������  §  Input����������� ������������������  /����������� ������������������  Output����������� ������������������  Adapters����������� ������������������  § Esper����������� ������������������  Runtime����������� ������������������  선택����������� ������������������  § Virgo����������� ������������������  OSGi����������� ������������������  Server����������� ������������������  추천����������� ������������������  

EPL과����������� ������������������  Adapter����������� ������������������  개발����������� ������������������  06����������� ������������������  § EPL����������� ������������������  소개����������� ������������������  § EPL����������� ������������������  기능����������� ������������������  § EPL의����������� ������������������  외부����������� ������������������  리소스����������� ������������������  참조����������� ������������������  기능����������� ������������������  § RFID����������� ������������������  도메인����������� ������������������  예제����������� ������������������  § EPL����������� ������������������  등록����������� ������������������  및����������� ������������������  Output����������� ������������������  Adapter����������� ������������������  구현하기����������� ������������������  §  Input����������� ������������������  Adapter����������� ������������������  구현하기����������� ������������������  

EPL����������� ������������������  소개����������� ������������������  

06 EPL과 Adapter 개발

SQL����������� ������������������  형식의����������� ������������������  Event����������� ������������������  처리����������� ������������������  스크립트����������� ������������������  언어����������� ������������������  

Data����������� ������������������  windows����������� ������������������  제공����������� ������������������  

Pattern����������� ������������������  matching����������� ������������������  기능����������� ������������������  제공����������� ������������������  

OrderEvent

EPL����������� ������������������  소개����������� ������������������  

온라인����������� ������������������  쇼핑몰����������� ������������������  

지난����������� ������������������  30분간의����������� ������������������  실시간����������� ������������������  주문����������� ������������������  통계����������� ������������������  

.win:time(30 min) from group by itemId

select itemId, count(*) as cnt

Top����������� ������������������  10����������� ������������������  

limit 10

06 EPL과 Adapter 개발

EPL����������� ������������������  소개����������� ������������������  

Continuous query

OrderEvent .win:time(30 min) from group by itemId

select itemId, count(*) as cnt

limit 10

06 EPL과 Adapter 개발

Event����������� ������������������  filtering����������� ������������������  

EPL����������� ������������������  기능����������� ������������������  

06 EPL과 Adapter 개발

Sliding����������� ������������������  data����������� ������������������  windows����������� ������������������  and����������� ������������������  aggregation����������� ������������������  

Grouped����������� ������������������  windows����������� ������������������  and����������� ������������������  output����������� ������������������  rate����������� ������������������  limiting����������� ������������������  

Joins����������� ������������������  and����������� ������������������  Outer����������� ������������������  Joins����������� ������������������  

Subquery����������� ������������������  

Historical����������� ������������������  or����������� ������������������  reference����������� ������������������  data����������� ������������������  

다양한����������� ������������������  외부����������� ������������������  리소스(RDBMS)와����������� ������������������  동시에����������� ������������������  조인����������� ������������������  가능����������� ������������������  

EPL의����������� ������������������  외부����������� ������������������  리소스����������� ������������������  참조����������� ������������������  기능����������� ������������������  

06 EPL과 Adapter 개발

장소 이름 마스터 테이블

MySQL 네이티브 쿼리

EPL 조인 조건

06 EPL과 Adapter 개발

고객 마스터 정보

상품 추천 정보 등등…

from LR.std:unique(assetId).win:time(1 hour) as lr, sql:db[select zone_name from ZoneName

where zone=${lr.zone}]

최근����������� ������������������  1시간내����������� ������������������  강남역에서����������� ������������������  사용자가����������� ������������������  찾은����������� ������������������  

where zone in (‘강남역 code’)

“장소의����������� ������������������  이름!!”����������� ������������������  

select assetId, zone_name

06 EPL과 Adapter 개발

활용����������� ������������������  예제!!����������� ������������������  좀����������� ������������������  더����������� ������������������  봅시다!!����������� ������������������  

RFID����������� ������������������  도메인����������� ������������������  예제����������� ������������������  

실시간으로����������� ������������������  Asset의����������� ������������������  움직임을����������� ������������������  추적하는����������� ������������������  예제����������� ������������������  

위치����������� ������������������  이동(LocationReport)����������� ������������������  이벤트����������� ������������������  정의����������� ������������������  

����������� ������������������  asset����������� ������������������  id����������� ������������������  속성 ����������� ������������������  :����������� ������������������  asset����������� ������������������  고유����������� ������������������  아이디����������� ������������������  ����������� ������������������  zone����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  속성 ����������� ������������������  :����������� ������������������  변화된����������� ������������������  위치����������� ������������������  값����������� ������������������  

06 EPL과 Adapter 개발

위치 이동 이벤트 정의

public class LocationReport { private String assetId; // Asset 아이디 private int zone; // 위치 값

… }

POJO����������� ������������������  스타일����������� ������������������  이벤트����������� ������������������  타입����������� ������������������  정의����������� ������������������  

06 EPL과 Adapter 개발

시나리오����������� ������������������  

“Asset이����������� ������������������  서로����������� ������������������  다른����������� ������������������  Zone으로����������� ������������������  이동����������� ������������������  후����������� ������������������  ����������� ������������������  

10초����������� ������������������  이상����������� ������������������  머무르면,����������� ������������������  

06 EPL과 Adapter 개발

경보를����������� ������������������  알려라”����������� ������������������  

시나리오����������� ������������������  “Asset이����������� ������������������  서로����������� ������������������  다른����������� ������������������  Zone으로����������� ������������������  이동����������� ������������������  후����������� ������������������  ����������� ������������������  

����������� ������������������   ����������� ������������������  10초����������� ������������������  이상����������� ������������������  머무르면,����������� ������������������  경보를����������� ������������������  알려라”����������� ������������������  

06 EPL과 Adapter 개발

EPL����������� ������������������  작성����������� ������������������  

“Asset이����������� ������������������  서로����������� ������������������  다른����������� ������������������  Zone으로����������� ������������������  이동����������� ������������������  후����������� ������������������  ����������� ������������������  

����������� ������������������   ����������� ������������������  10초����������� ������������������  이상����������� ������������������  머무르면,����������� ������������������  경보를����������� ������������������  알려라”����������� ������������������  

select Part.zone from pattern [ every Part=CountZone(cnt in (1, 2)) -> ( not CountZone(zone=Part.zone, cnt in (0, 3)) and timer:interval(10 sec) )]

06 EPL과 Adapter 개발

06 EPL과 Adapter 개발

구조를����������� ������������������  이해하고����������� ������������������  ����������� ������������������  

활용하면����������� ������������������  됩니다!����������� ������������������  

EPL����������� ������������������  구조����������� ������������������  

“Asset이����������� ������������������  서로����������� ������������������  다른����������� ������������������  Zone으로����������� ������������������  이동����������� ������������������  후����������� ������������������  ����������� ������������������  

����������� ������������������   ����������� ������������������  10초����������� ������������������  이상����������� ������������������  머무르면,����������� ������������������  경보를����������� ������������������  알려라”����������� ������������������  

select * from pattern [ ] expression

06 EPL과 Adapter 개발

EPL����������� ������������������  구조����������� ������������������  

“Event����������� ������������������  B가����������� ������������������  발생하고����������� ������������������  Event����������� ������������������  C가����������� ������������������  발생한����������� ������������������  이후에,����������� ������������������  ����������� ������������������  

Event����������� ������������������  A가����������� ������������������  발생한”����������� ������������������  패턴!����������� ������������������  

followed����������� ������������������  ����������� ������������������  by����������� ������������������  

Event����������� ������������������  Correlation,����������� ������������������  인과����������� ������������������  관계의����������� ������������������  정의����������� ������������������  

from pattern [ A -> (B and C)]

06 EPL과 Adapter 개발

EPL����������� ������������������  구조����������� ������������������  

“Asset이����������� ������������������  서로����������� ������������������  다른����������� ������������������  Zone으로����������� ������������������  이동����������� ������������������  후����������� ������������������  ����������� ������������������  

����������� ������������������   ����������� ������������������  10초����������� ������������������  이상����������� ������������������  머무르면,����������� ������������������  경보를����������� ������������������  알려라”����������� ������������������  

asset 부분 집합 zone -> ( not (nothing or asset 전체 집합) and 10초 유지 )

06 EPL과 Adapter 개발

그렇다면����������� ������������������  

����������� ������������������  ����������� ������������������  코딩은����������� ������������������  어떻게?����������� ������������������  

EPL����������� ������������������  등록����������� ������������������  및����������� ������������������  Output����������� ������������������  Adapter����������� ������������������  구현����������� ������������������  

쉽게!����������� ������������������  간단하게!����������� ������������������  3����������� ������������������  Step!����������� ������������������  

06 EPL과 Adapter 개발

EPL����������� ������������������  등록����������� ������������������  및����������� ������������������  Output����������� ������������������  Adapter����������� ������������������  구현����������� ������������������  

// Step 1. CEP 엔진 인스턴스 초기화

EPServiceProvider epEngine =

EPServiceProviderManager.getProvider(“MyID”, config);

Engine 아이디 등록

Engine 튜닝 값 정의

06 EPL과 Adapter 개발

EPL����������� ������������������  등록����������� ������������������  및����������� ������������������  Output����������� ������������������  Adapter����������� ������������������  구현����������� ������������������  

// Step 2. EPL 등록하기

EPStatement statement =

epEngine.getEPAdministrator().createEPL(“…”);

EPL 등록

06 EPL과 Adapter 개발

EPL����������� ������������������  등록����������� ������������������  및����������� ������������������  Output����������� ������������������  Adapter����������� ������������������  구현����������� ������������������  

// Step 3. Output Adapter 구현하기

statement.addListener(new UpdateListener() {

public void update(EventBean[] newEvents) { // 이벤트 처리 코드 file writing, email 발송등…

}

});

EPL 결과 처리 코드

06 EPL과 Adapter 개발

Input����������� ������������������  Adapter����������� ������������������  구현하기����������� ������������������  

Engine으로 Event 전달

06 EPL과 Adapter 개발

// Step 2. 이벤트 생성 및 전달

LocationReport event = new LocationReport(assetId, x, y, zone);

epEngine.getEPRuntime().sendEvent(event);

EPL과����������� ������������������  Adapter����������� ������������������  개발����������� ������������������  06����������� ������������������  § EPL����������� ������������������  소개����������� ������������������  § EPL����������� ������������������  기능����������� ������������������  § EPL의����������� ������������������  외부����������� ������������������  리소스����������� ������������������  참조����������� ������������������  기능����������� ������������������  § RFID����������� ������������������  도메인����������� ������������������  예제����������� ������������������  § EPL����������� ������������������  등록����������� ������������������  및����������� ������������������  Output����������� ������������������  Adapter����������� ������������������  구현하기����������� ������������������  §  Input����������� ������������������  Adapter����������� ������������������  구현하기����������� ������������������  

CEP����������� ������������������  개발����������� ������������������  전략����������� ������������������  07����������� ������������������  § CEP����������� ������������������  개발����������� ������������������  프로세스����������� ������������������  § CEP����������� ������������������  개발����������� ������������������  주요����������� ������������������  포인트����������� ������������������  § HTTP����������� ������������������  Input����������� ������������������  Adapter����������� ������������������  선택����������� ������������������  기준����������� ������������������  예시����������� ������������������  § CEP����������� ������������������  Monitoring����������� ������������������  방안����������� ������������������  § Performance����������� ������������������  측정����������� ������������������  기준����������� ������������������  

CEP����������� ������������������  개발����������� ������������������  프로세스����������� ������������������  

이벤트����������� ������������������  정의����������� ������������������  1

2

3

4

5

핵심����������� ������������������  과정����������� ������������������  

07 CEP 개발 전략

이벤트����������� ������������������  타입(포맷)����������� ������������������  정의����������� ������������������  

EPL����������� ������������������  정의����������� ������������������  

Output����������� ������������������  Adapter����������� ������������������  개발����������� ������������������  /����������� ������������������  등록����������� ������������������  

Input����������� ������������������  Adapter����������� ������������������  개발����������� ������������������  /����������� ������������������  등록����������� ������������������  

CEP����������� ������������������  개발����������� ������������������  주요����������� ������������������  포인트����������� ������������������  

Runtime����������� ������������������  환경����������� ������������������  결정����������� ������������������  

Zero-downtime����������� ������������������  지원����������� ������������������  여부����������� ������������������  결정����������� ������������������  

Runtime시����������� ������������������  EPL����������� ������������������  업데이트����������� ������������������  지원����������� ������������������  여부����������� ������������������  결정����������� ������������������  

Event의����������� ������������������  타입과����������� ������������������  용량����������� ������������������  결정����������� ������������������   성능과 밀접한 연관

Biz 요건과 연관

07 CEP 개발 전략

CEP����������� ������������������  개발����������� ������������������  주요����������� ������������������  포인트����������� ������������������  

CEP����������� ������������������  Engine����������� ������������������  성능����������� ������������������  튜닝����������� ������������������  

성능����������� ������������������  모니터링����������� ������������������  방안����������� ������������������  

Input����������� ������������������  /����������� ������������������  Output����������� ������������������  Adapter����������� ������������������  성능����������� ������������������  고려����������� ������������������  

Input����������� ������������������  Adapter의����������� ������������������  통신����������� ������������������  protocol����������� ������������������  결정����������� ������������������  중요����������� ������������������  

07 CEP 개발 전략

멀티 thread 카운트 조절

병목 현상 발생 방지

HTTP����������� ������������������  Input����������� ������������������  Adapter����������� ������������������  선택����������� ������������������  기준����������� ������������������  예시����������� ������������������  

Asynchronous����������� ������������������  non-blocking����������� ������������������  Http����������� ������������������  Web����������� ������������������  Server����������� ������������������  

Synchronous����������� ������������������  Blocking����������� ������������������  Http����������� ������������������  Web����������� ������������������  Server����������� ������������������  

Apache����������� ������������������  HttpCore����������� ������������������  NIO����������� ������������������  모듈����������� ������������������  추천����������� ������������������  

ü  https://github.com/tedwon/async-non-blocking-http-server����������� ������������������  

고성능����������� ������������������  확보의����������� ������������������  어려움����������� ������������������  

07 CEP 개발 전략

CEP����������� ������������������  Monitoring����������� ������������������  방안����������� ������������������  

Real-time����������� ������������������  시스템은����������� ������������������  장애에도����������� ������������������  즉각적으로����������� ������������������  대응이����������� ������������������  중요����������� ������������������  

주요����������� ������������������  모니터링����������� ������������������  팩터����������� ������������������  

ü  Availability����������� ������������������  ü  Total����������� ������������������  Input����������� ������������������  Event����������� ������������������  Count����������� ������������������  

ü  Throughput����������� ������������������  ü  Latency����������� ������������������  

07 CEP 개발 전략

모니터링까지����������� ������������������  개발하라구???����������� ������������������  

07 CEP 개발 전략

배보다����������� ������������������  배꼽이����������� ������������������  커지는����������� ������������������  수가����������� ������������������  있다구!!����������� ������������������  

JBoss RHQ 추천 07 CEP 개발 전략

JBoss RHQ 추천 (계속) 07 CEP 개발 전략

CEP Monitoring 방안 07 CEP 개발 전략

이제����������� ������������������  서비스����������� ������������������  론칭만����������� ������������������  남았다!!����������� ������������������  

07 CEP 개발 전략

Wait!!����������� ������������������  뭔가����������� ������������������  빠진����������� ������������������  이����������� ������������������  느낌은����������� ������������������  뭐지??����������� ������������������  

실시간����������� ������������������  서비스����������� ������������������  수준은����������� ������������������  정의했는가?����������� ������������������  

Latency����������� ������������������  statistics����������� ������������������  측정����������� ������������������  

ü  Throughput����������� ������������������  고정����������� ������������������  

ü CPU����������� ������������������  Usage����������� ������������������  100%����������� ������������������  수준까지����������� ������������������  진행����������� ������������������  

ü 성능����������� ������������������  수준����������� ������������������  결정:����������� ������������������  SLA����������� ������������������  정의����������� ������������������  

Performance 측정 기준 07 CEP 개발 전략

Throughput����������� ������������������  

ü  events/sec����������� ������������������  Latency����������� ������������������  

ü  us/event����������� ������������������  or����������� ������������������  ms/event����������� ������������������  ����������� ������������������  

Latency statistics Latency����������� ������������������  정규����������� ������������������  분포����������� ������������������  통계����������� ������������������  계산����������� ������������������  

Throughput 995900 (active 0 pending 0)

5 µs 수준의 성능

07 CEP 개발 전략

나노세컨드 단위 측정

CEP����������� ������������������  개발����������� ������������������  전략����������� ������������������  07����������� ������������������  § CEP����������� ������������������  개발����������� ������������������  프로세스����������� ������������������  § CEP����������� ������������������  개발����������� ������������������  주요����������� ������������������  포인트����������� ������������������  § HTTP����������� ������������������  Input����������� ������������������  Adapter����������� ������������������  선택����������� ������������������  기준����������� ������������������  예시����������� ������������������  § CEP����������� ������������������  Monitoring����������� ������������������  방안����������� ������������������  § Performance����������� ������������������  측정����������� ������������������  기준����������� ������������������  

CEP����������� ������������������  그리고����������� ������������������  ����������� ������������������  Big����������� ������������������  Data����������� ������������������  시대����������� ������������������  

마무리

로그����������� ������������������  수집����������� ������������������  및����������� ������������������  분배����������� ������������������  기술����������� ������������������  

마무리

진정한����������� ������������������  Big����������� ������������������  Data����������� ������������������  시대의����������� ������������������  기술����������� ������������������  요소����������� ������������������  

통합����������� ������������������  기술����������� ������������������  

대용량����������� ������������������  데이터의����������� ������������������  배치����������� ������������������  처리����������� ������������������  및����������� ������������������  분석����������� ������������������  기술����������� ������������������  

실시간����������� ������������������  이벤트����������� ������������������  처리����������� ������������������  기술����������� ������������������  

마무리

진정한����������� ������������������  Big����������� ������������������  Data����������� ������������������  시대의����������� ������������������  기술����������� ������������������  요소����������� ������������������  

Scribe,����������� ������������������  Flume����������� ������������������  분산����������� ������������������  로그����������� ������������������  수집기����������� ������������������  

개발자의����������� ������������������  기술력����������� ������������������  

Hadoop����������� ������������������  분산����������� ������������������  파일����������� ������������������  처리����������� ������������������  시스템����������� ������������������  

CEP����������� ������������������  Esper����������� ������������������  &����������� ������������������  분산����������� ������������������  ESP����������� ������������������  S4,����������� ������������������  Storm����������� ������������������  

Hadoop����������� ������������������  

진정한����������� ������������������  Big����������� ������������������  Data����������� ������������������  시대의����������� ������������������  기술����������� ������������������  요소����������� ������������������  

CEP����������� ������������������  Esper����������� ������������������  

분산����������� ������������������  ESP����������� ������������������  S4,����������� ������������������  Storm����������� ������������������  

q  http://en.wikipedia.org/wiki/Complex_event_processing

q  http://en.wikipedia.org/wiki/Event-driven_architecture

q  Complex Event Processing Blog http://www.complexevents.com/

q  thecepblog http://www.thecepblog.com/

q  Event Processing in Action http://www.manning.com/etzion/

q  ESP and CEP with Esper http://goo.gl/LodWe

q  EDA – ESP & CEP ... with Java http://goo.gl/KW72p

q  Event Processing in Java A Financial Services Case Study http://goo.gl/6iPbt

q  실시간 빅 데이터(Real-time Big Data) 프로세싱 맛보기 http://goo.gl/IGaHB

q  Esper Documentation http://goo.gl/isNb6

q  JBoss Drools Fusion http://goo.gl/XIoGJ

q  Applying CEP Drools Fusion http://goo.gl/MsYCH

q  JBoss RHQ https://docs.jboss.org/author/display/RHQ

References

감사합니다. 개발실 / 데이터지능팀 / 원종석

tedwon@kthcorp.com @tedwon