cep 소개 - for developers
DESCRIPTION
이 슬라이드는 개발자를 대상으로 CEP(Complex Event Processing) 소개하기 위한 것입니다. 소프트웨어 공학적인 입장에서 3가지 관점, 즉 범용성, 재사용성, 즉시응답성을 기준으로 CEP의 개념과 기능을 설명하고, 이를 구현한 Data Stream Query 기반 CEP 엔진의 작동방식을 설명합니다. CEP는 새로운 개념이 아니고, 태초(?)부터 프로그래머들이 계속 해오던 일들입니다. CEP에 대해서 공부하고자 하는 개발자들에게 도움이 되었으면 합니다.TRANSCRIPT
CEP 소개
2013.12.12
이주현B-Platform Team Manager, Embian.
([email protected], [email protected])
Embian© 2013
- 개발자를위한 -
I. CEP의시작 – 3가지요소
II. 범용성 – CEP의개념들
III. 재사용성 – 독립컴포넌트의구축
IV. 즉시응답성 – 패러다임의변화
V. CEP Engine - 구현체들
VI. 결론
Embian© 20132
Agenda
I. CEP의시작- 3가지요소
Embian© 20133
1. 도대체 “지금” “무슨일”이일어나고있는거야?
2. 예상한일이 “일어나면”, “즉시” 무엇인가 “해라”
Embian© 20134
1. 두 가지 요구사항 I. CEP의 시작
1. 도대체 “지금” “무슨일”이일어나고있는거야?
• 최근 30분동안로그인고객수의평균은?
• 모든서버들이잘돌아가고있나?
• 현재주가가오르고있는거야, 내려가고있는거야?
Embian© 20135
1. 두 가지 요구사항 I. CEP의 시작
2. 예상한일이 “일어나면”, “즉시” 무엇인가 “해라”
• 최근 30분동안의로그인고객수의평균을 1초단위로보여달라.
• 작동중이지않는서버가있다면, 관리자에게즉시 SMS를보내라.
• 주가가오르고있다면, 해당주식을즉시팔아라/사라.
Embian© 20136
1. 두 가지 요구사항 I. CEP의 시작
• 네트워크모니터링 Network Monitoring ToolsEx) 서버상태들의모니터링및특정상태에서경고등
• 비즈니스모니터링액티브데이터베이스 or 자체구현Ex) 최근 30분동안의로그인고객수의평균, 특정웹페이지의 Hit Ratio,
고객원장내의잔고액수등
• 알고리즘주식거래특정제품 or 자체구현Ex) 알고리즘주식거래등
Embian© 20137
2. 어떻게 대처하지? I. CEP의 시작
기존시스템으로대처할수있다.
그런데,
1. 특정도메인에는맞다. 하지만, 범용성을가진것이필요하다.
2. 이거할때마다만들어야해? 재사용못하나?
3. 처리속도가느리면안되는데…
Embian© 20138
3. 대처 방법의 문제점 I. CEP의 시작
1. (개념의) 범용성도메인에관계없는범용적개념의정립
2. (컴포넌트의) 재사용성재사용가능한독립된소프트웨어컴포넌트의구축
3. 즉시응답성패러다임의변화
Embian© 20139
4. 3가지 요소 I. CEP의 시작
Embian© 201310
5. 3가지 요소를 만족하는 그 무엇 I. CEP의 시작
범용성 재사용성 즉시반응성
CEP(Complex Event Processing)
도대체 “지금” “무슨일”이일어나고있는거야? 예상한일이 “일어나면”, “즉시” 무엇인가 “해라”
기능요소
비기능요소
II. 범용성- CEP의개념들
Embian© 201311
Embian© 201312
0. 개요 II. 범용성
1. Event
2. Event Processing
3. Complex Event
4. Complex Event Processing
도메인에관계없는범용성추구개념들의추상화
Embian© 201313
0. 개요 II. 범용성
1.1. Event Type
2.2. Event Processor
2.4. Filtering by Event Type
2.1. Event Stream
1.2. Event Instance
1. Event
2. Event Processing
3. Complex Event
4. Complex Event Processing
CEP에서의핵심개념들
4.2. (Simple) Event Processing
4.3. Drill Down
4.4. Pattern Matching
4.5. Causality
2.6. Counting & Negation
2.7. Data Extraction
2.8. Filtering by Data
2.9. Aggregation
2.5. Window4.1. Abstraction
2.3. Event Processing Network
Embian© 201314
1. Event II. 범용성
Event (I) :도메인에상관없이, 발생되는 “무슨일
Log in
1초마다
로그인할때마다
모든주가 Tick마다
서버상태메시지(IP 주소, 측정시간, 부하율등)
로그인성공기록(고객 ID, 로그인시각등)
주가 Tick(종목명, Tick 시각, 주가등)
Embian© 201315
1. Event II. 범용성
Event (II) : Event(I)에감지시각(Detection Time)을부가- Event Stream 내에서 Event들이감지시각을기준으로정렬됨
(이하에서 Event라함은 Event(II)를의미)
Log in
1초마다
로그인할때마다
모든주가 Tick마다
감지시각 : t-2초 감지시각 : t-1초 감지시각 : t-0초
감지시각 : tx 감지시각 : ty 감지시각 : t0
감지시각 : ta 감지시각 : tc 감지시각 : t0감지시각 : tb
서버상태 Event
IP 주소측정시각CPU 사용율Memory 사용율부하율
Embian© 201316
1.1. Event Type II. 범용성
Event Type
Type Name
Attribute
Event는 Event Type으로유형화Event Type은 Type Name과 Attributes로구성
로그인 Event
고객 ID로그인시각
주가 Event
종목명Tick 시각주가
OOP에서클래스(Class)와유사
개별 Event는 Event Instance라고도불림
Embian© 201317
1.2. Event Instance II. 범용성
주가 Event
종목명Tick 시각주가
Event Instances
Attribute Value(Data)
. . .
Attribute
주가 EventDetection Time = yyyy
종목명 = “Google”Tick 시각 = 20131210135513주가 = $1100
주가 EventDetection Time = xxxx
종목명 = “Google”Tick 시각 = 20131210135512주가 = $1101
주가 EventDetection Time = zzzz
종목명 = “Google”Tick 시각 = 20131210135525주가 = $1099
감지시각
Event Type
OOP에서객체(Object or Instance)와유사
Embian© 201318
2. Event Processing II. 범용성
2.3. Event Processing Network2.4. Filtering by Event Type2.5. Window2.6. Counting & Negation• Etc.
2.7. Data Extraction (Access)
2.8. Filtering by Data2.9. Aggregation (Min, Max, Sum, Avg, Etc.)
• Etc. (Joining, Grouping, … )
Event 자체에대한연산 Event의속성값에대한연산
Event Processor
2.1. Event Stream2.2. Event Processor
Event들이한방향으로계속유입/유출되는것(감지시각에의하여정렬된 Event들의무한집합)
Embian© 201319
2.1. Event Stream II. 범용성
Event Stream
흐름의방향 & 감시시각
Event Stream의한쪽방향에서 Event에대한연산을수행하는
소프트웨어컴포넌트
Embian© 201320
2.2. Event Processor II. 범용성
Event Processor
Event Processing을위하여 Event Stream과 Event Processor의Processing Topology를구성한것
Embian© 201321
2.3. Event Processing Network (EPN) II. 범용성
Event Type을기준으로 Event들을추출ex) Event Stream 내의 Event 중에서그 Type이 “로그인 Event”인것만을 Filtering
Embian© 201322
2.4. Filtering by Event Type – Event 자체에 대한 연산 II. 범용성
Input Stream Output Stream
Event Type == 로그인 Event
Embian© 201323
2.5. Window – Event 자체에 대한 연산 II. 범용성
now – 5sec now
0개n개
Time Window
Tuple Window
Event 감지시각(Event Detection Time)을사용
Event 카운터를사용
• Counting : Event Stream 내의 Event들개수를세는것
ex) 최근 1분동안웹페이지 Hit 수를 1초마다모니터링
• Negation : Event Stream 내에조건에맞는 Event들이없는것을판단 (count==0)
ex) 1분동안특정서버로부터의상태메시지(Event)가수신되지않는경우
Embian© 201324
2.6. Counting & Negation – Event 자체에 대한 연산 II. 범용성
Event의특정속성의값(Data)을추출
Embian© 201325
2.7. Data Extraction (Access) – Event 속성에 대한 연산 II. 범용성
Input Stream
Google Samsung Samsung Google
“종목명” 속성의값을추출
Event의특정속성의값을기준으로 Event를추출예) “주가 Event” 중에서그속성인 “종목명”의값이 “google”인 Event들만추출
Embian© 201326
2.8. Filtering by Data – Event 속성에 대한 연산 II. 범용성
Input Stream Output Stream
종목명 == “Google”
Event의속성값에대한 Min, Max, Sum, Avg 등의연산
Embian© 201327
2.9. Aggregation – Event 속성에 대한 연산 II. 범용성
Input Stream
1452
“주가” 속성의최대값추출
“복잡한” 무슨일은어떻게하지?
예) “로그인해킹시도이벤트”가최근 1시간동안가장많았던고객 ID를감지
여기서 “로그인해킹시도”란동일한고객 ID로 5초동안에 5번이상의 “로그인실패 Event”가발생한경우로정의한다.
Embian© 201328
3.1. Complex Event II. 범용성
Complex Event
Embian© 201329
3.1. Complex Event II. 범용성
. . .
고객 ID = “tiger”
최초시도시각시도회수
로그인해킹시도 Event
Simple Events Complex Event
Abstraction
Drill Down
4.1. Abstraction (Complex Event의생성)
4.2. (Simple) Event Processing
4.3. Drill Down (Complex Event의분해)
4.4. Pattern Matching
4.5. Causality
Embian© 201330
4. Complex Event Processing II. 범용성
Embian© 201331
4.1. Abstraction (Conjunction)
6 2 3
고객 ID = “tiger”
최초시도시각 = xxx시도회수 = 6
로그인해킹시도 Event
1-1. 최근 5초동안의 Window에서 “로그인실패 Event”를추출
1-2. “로그인실패 Event” 의속성인 “고객 ID”를기준으로 Grouping하여 Event를 Count
1-3. 5개이상인경우, 해당 ID를기준으로 “로그인해킹시도 Event”를생성
Complex Event
now – 5sec now
(Simple) Events Complex Event
Embian© 201332
4.2. (Simple) Event Processing II. 범용성
2-1. 최근 1시간동안의 Window에서 “로그인해킹시도 Event”를추출
2-2. “로그인해킹시도 Event”의속성인 “고객 ID” 별로 Grouping하여 Event를 Count
2 1
2-3. Count 결과가최대인 Event에서속성인 “고객 ID”의값을출력
now – 1hour now
생성된 Complex Event에대한처리 (Simple) Event와동일
tiger
Embian© 201333
4.3. Drill Down (Disjunction) II. 범용성
Complex Event Simple Events
고객 ID = “tiger”
최초시도시각 = xxx시도회수 = 6
로그인해킹시도 Event
Embian© 201334
4.4. Pattern Matching II. 범용성
예) 총알배송쇼핑몰
정상적인흐름
지연 Pattern 시스템비정상 Pattern
Embian© 201335
4.4. Pattern Matching II. 범용성
예) 주가변화에서 W 패턴을찾음
1. x초동안의 “주가 Tick Event”에서 “주가상승 Event”와 “주가하락 Event”를생성2. y초동안의 “주가 Tick Event”에서 “주가평균 Event”를생성3. “주가하락 Event”와 “주가상승 Event”를조합하여 “개별 W패턴 Event”를생성4. “개별 W패턴 Event”에서그진폭이 “주가평균 Event”를넘는 Event만추출하여 “W패턴 Event” 생성
2
1
3
4
범용성을위하여
도메인을포괄할수있는개념들을추상화
Embian© 201336
5. Summary II. 범용성
1. Event
2. Event Processing
3. Complex Event
4. Complex Event Processing
Complex Event Processing
III. 재사용성- 독립컴포넌트의구축
Embian© 201337
기존대응방안들의문제점재사용성미비
• 일반언어(C++, Java 등)로구현저수준코딩을초래 (CEP를위한데이터구조및알고리즘을하위레벨에서직접구현)
• 해당도메인에특화됨해당도메인외의분야에서는사용할수없는구조적한계
Embian© 201338
1. Custom-coding is Evil. III. 재사용성
Knightmare 사건 (Knight Capital Group 사건)
고속으로입력되는많은양의고객의주문(parent order)을자체알고리즘을통해 child orders로분할하여자동으로주식매매 CEP의한종류
2012년 8월, 기존알고리즘을변경. 그러나, 코드에 Bug 존재 (이관과정에서 Target 간코드불일치)45분만에 5000억이상의손실발생, 15억원의벌금부과, 결국 GETCO에합병
1. 추상화된 CEP의개념요소들을위한공통의기능을구현 Event 생성, Filtering, Aggregation, 등
2. 구현된기능들에대한인터페이스를제공기능들에대한인터페이스를일반언어에서사용할수있는함수형태로제공또는 EPL(Event Processing Language) 형태로제공
3. 위기능을독립된소프트웨어컴포넌트로구축 CEP Engine들이확산되고있음
Embian© 201339
2. 재사용성의 확보 III. 재사용성
Embian© 201340
3. 현재 재사용성 확보 단계 III. 재사용성
개별프로그램에서데이터구조및알고리즘
직접구현
데이터구조및알고리즘을개인라이브러리화
공통라이브러리의확산
공통기능의독립컴포넌트화
컴포넌트간표준인터페이스확립
RDBMS
Standard SQL
표준화
재사용성
현재 EPL 표준화진행중
CEP Engine
Embian© 201341
4. CEP Engine III. 재사용성
Log in
Legacy Systems
CEP Engine
Event Consumer
BAM, Mailer, Etc.
공통기능
EPLStatement
EPLStatement
EPLStatement
Filtering
EPL (Event Processing Language) 비즈니스로직인터페이스
비즈니스로직 (EPL 문장)
Etc.Aggregation Abstraction
• 기존대응방식들은재사용성이미흡
• 재사용성을확보하기위하여• 공통의기능을구현
• 인터페이스제공
• 독립된소프트웨어컴포넌트로구축
• 독립된소프트웨어컴포넌트로서다양한 CEP Engine들이구축되어왔음
Embian© 201342
5. 요약 III. 재사용성
IV. 즉시응답성- 패러다임의변화
Embian© 201343
Embian© 201344
1. Process Now IV. 즉시응답성
Log in
Conventional Model : Store Now, Process Later.
Event Processing Model : Process Now.
로그인성공기록
Log in로그인성공기록
Step 1. Storing Data Step 2. Batch Processing
Just Only 1 Step.
• Event 탐지시간(detection time)을최소화
• 데이터(Event)가변하는모든때에연산을수행
So,
속도가느린외부장치에데이터를저장하지않음
메모리내에서직접 Event Processing 수행
Embian© 201345
2. 메모리 기반 처리 IV. 즉시응답성
• 필요성- 하나의 CEP Engine에서처리할수있는양을초과
- Event 탐지시간을최소화
• 현상황- 대부분의 CEP Engine은분산처리지원못함
• 대안- Esper + Storm
- 분산환경에서 Composition-operator를활용하기위한 Query Optimizer의구현
Embian© 201346
3. 분산 처리 IV. 즉시응답성
• 즉시응답성을위하여
기존의 “Store Now, Process Later” 모델대신,
“Process Now” 모델을사용
• Process Now 모델을위하여메모리기반처리
• 현단계에서대부분의 CEP Engine이분산처리미지원
Embian© 201347
4. 요약 IV. 즉시응답성
V. CEP 엔진- 구현체들
Embian© 201348
지원하는 EPL(Even Processing Language)에따른구분
• Data Stream Query 기반 CEP- Data(Event)의 Stream을 Query하기위하여, 관계형 Query 언어를사용
• Production Rule 기반 CEP- Production Rule Engine 내의 Working Memory를활용
• Composition Operator 기반 CEP- 단순한쿼리들을조합하여복잡한쿼리를수행
(Engine 별로 CEP의개념요소들에대한구현여부및방식이상이함)
Embian© 201349
1. CEP Engine의 종류 V. CEP 엔진
{ ø } 또는 { }
Event Stream은계속변화
Event 간의관계에대한연산은불가능
Embian© 201350
2. Data Stream Query 기반 CEP V. CEP 엔진
Stream
특정시각 t에서바라본 Stream 내의 Event들
t
따라서특정시각 t에서 Event들간의관계는표현될수없음
3가지의연산을통해 Event 간의관계연산수행
Embian© 201351
2. Data Stream Query 기반 CEP V. CEP 엔진
Event Stream (INPUT)
1. Stream to Relation
2. Relation to Relation
3. Relation to Stream
Event Stream (OUTPUT)
1. Stream to Relation 연산
- Event Stream의스냅샷을 Event Relation으로변환
Embian© 201352
2. Data Stream Query 기반 CEP V. CEP 엔진
Event Stream
감지시각 종목명 Tick 시각 주가
1386695097100 Samsung 201312100158 1451
1386695097230 Samsung 201312100158 1452
1386695098200 Google 201312100168 1015
1386695099998 Samsung 201312100170 1451
Event RelationTake a Snapshot-대부분Window를사용하여Snapshot을생성
2. Relation to Relation 연산- Event Relation에대하여 Event들간의관계형연산수행
Embian© 201353
2. Data Stream Query 기반 CEP V. CEP 엔진
감지시각 종목명 Tick 시각 주가
1386695097100 Samsung 201312100158 1451
1386695097230 Samsung 201312100158 1452
1386695098200 Google 201312100168 1015
1386695099998 Samsung 201312100170 1451
SELECT AVG(주가) FROM …SELECT 종목명, AVG(주가)
FROM …GROUP BY 종목명
SELECT AVG(주가) FROM …GROUP BY 종목명
HAVING 주가 > 1400
감지시각 AVG(주가)
1386695100000 1342
감지시각 종목명 AVG(주가)
1386695100000 Google 1015
1386695100001 Samsung 1451
감지시각 종목명 AVG(주가)
1386695100001 Samsung 1451
3. Relation to Stream 연산- 처리된 Event Relation을 Event Stream으로변환
Embian© 201354
2. Data Stream Query 기반 CEP V. CEP 엔진
감지시각 AVG(주가)
1386695100000 1342
감지시각 종목명 AVG(주가)
1386695100000 Google 1015
1386695100001 Samsung 1451
감지시각 종목명 AVG(주가)
1386695100001 Samsung 1451
STREAM (STanford stREam datA Manager)
• Stanford 대학에서연구프로젝트로개발됨.
• Data Stream Query 기반의 CEP 엔진
• SQL과유사한문법의 CQL(Continuous Query Language) 사용
• Esper와 Coral8, Oracle Event Processing 11g 등의기반이됨
Embian© 201355
3. 구현체들 V. CEP 엔진
Borealis
• Brandeis 대학, Brown 대학, MIT 대학에서개발한연구용 CEP Engine
• CEP Engine인 Aurora와분산스트림처리프로젝트인 Medusa를결합
• Data Stream Query 기반. 그러나, Boxes-and-Arrows 접근방법을활용
• Query 언어로서 XML을사용
Embian© 201356
3. 구현체들 V. CEP 엔진
예시쿼리다이어그램 (출처 : Borealis Team. Borealis Application Programmer’s Guide. 2006)
Esper
• Esper Tech에의하여개발되었으며, Open Source(GPL v2)
• Data Stream Query 기반. 패턴매칭및 Composition-operator 기능추가
• SQL과유사한문법의 EPL이라는언어제공
• Event에대한연산은 Event Tuple이 Engine에입력/출력되는모든시점에수행됨 (STREAM은정해진시간마다수행)
Embian© 201357
3. 구현체들 V. CEP 엔진
Oracle Event Processing 11g• STREAM을기반으로 BEA에의하여개발되고, Oracle에서인수함
StreamBase• TIBICO에서개발됨
Drools• Jboss Rules.
• Production Rule 기반
SASE+• University of Massachusetts Amherst의연구프로젝트
• Composition Operator 기반
Embian© 201358
3. 구현체들 V. CEP 엔진
• CEP Engine의종류• Data Stream Query 기반 : STREAM, Esper, Oracle Event Process 11g 등
• Production Rule 기반 : Drools 등
• Composition Operator 기반 : SASE+ 등
• Data Stream Query 기반 CEP의작동방식• Stream to Relation 연산
• Relation to Relation 연산
• Relation to Stream 연산
• 구현체들• STREAM 기반의 Esper가주목받고있음
Embian© 201359
4. 요약 V. CEP 엔진
VI. 결론
Embian© 201360
Embian© 201361
CEP는 새로운 것이 아니다
Complex Event Processing이
하는일Complex Event Processing이
갖추어야할요소
Event에대한즉각적감지개념의범용성
만족하는조건에대한즉각적반응
컴포넌트로서의재사용성
즉시응답성
처음부터프로그래머가원래하던업무
소프트웨어발전단계에서자연스러운요소
Embian© 2013 62
참고자료
• David Luckham. A Brief Overview of the Concepts of CEP. (http://complexevents.com/wp-content/uploads/2008/07/overview-of-concepts-of-cep.pdf), 2008.
• David Luckham. A Short History of Complex Event Processing, Part 1 & Part2. (http://complexevents.com/wp-content/uploads/2008/02/1-a-short-history-of-cep-part-1.pdf), 2007.
• David Luckham, Roy Schulte. Event Processing Glossary (http://complexevents.com/wp-content/uploads/2008/08/epts-glossary-v11.pdf), 2008.
• Hai-Lam Bui. Survey and Comparison of Event Query Languages Using Practical Examples. (http://www.en.pms.ifi.lmu.de/publications/diplomarbeiten/Hai-Lam.Bui/DA_Hai-Lam.Bui.pdf ) 2008.
• Arvind Arasu, Shivnath Babu, and Jennifer Widom. The CQL Continuous Query Language: Semantic Foundations and Query Execution. Technical report, VLDB Journal, 2003.
• Alexander Alves, Robin J. Smith, Lloyd Williams. Getting Started with Oracle Event Processing 11g. Packt Publishing, 2013.
• Esper EQL Reference. (http://esper.sourceforge.net/esper-0.7.5/doc/reference/en/html/EQL.html)
• STREAM Homepage. (http://infolab.stanford.edu/stream/)• STREAM Query Repository (http://infolab.stanford.edu/stream/sqr/)
• TIBICO StreamBase Homepage (http://www.streambase.com/)
• Borealis Team. Borealis Application Programmer’s Guide. 2006.
감사합니다.
Embian© 201363