SlideShare a Scribd company logo
1 of 63
Download to read offline
CEP 소개
- 개발자를 위한 -

2013.12.12

이주현
B-Platform Team Manager, Embian.
(lee@embian.com, leejuhyeon@gmail.com)

Embian© 2013
Agenda
I.

CEP의 시작 – 3가지 요소

II. 범용성 – CEP의 개념들
III. 재사용성 – 독립 컴포넌트의 구축
IV. 즉시응답성 – 패러다임의 변화
V. CEP Engine - 구현체들
VI. 결론

2

Embian© 2013
I. CEP의 시작
- 3가지 요소
3

Embian© 2013
1. 두 가지 요구사항

I. CEP의 시작

1. 도대체 “지금” “무슨 일”이 일어나고 있는 거야?

2. 예상한 일이 “일어나면”, “즉시” 무엇인가 “해라”

4

Embian© 2013
1. 두 가지 요구사항

I. CEP의 시작

1. 도대체 “지금” “무슨 일”이 일어나고 있는 거야?
• 최근 30분 동안 로그인 고객 수의 평균은?
• 모든 서버들이 잘 돌아가고 있나?
• 현재 주가가 오르고 있는거야, 내려가고 있는 거야?

5

Embian© 2013
1. 두 가지 요구사항

I. CEP의 시작

2. 예상한 일이 “일어나면”, “즉시” 무엇인가 “해라”
• 최근 30분 동안의 로그인 고객 수의 평균을 1초 단위로 보여달라.
• 작동 중이지 않는 서버가 있다면, 관리자에게 즉시 SMS를 보내라.
• 주가가 오르고 있다면, 해당 주식을 즉시 팔아라/사라.

6

Embian© 2013
2. 어떻게 대처하지?

I. CEP의 시작

• 네트워크 모니터링  Network Monitoring Tools
Ex) 서버 상태들의 모니터링 및 특정 상태에서 경고 등

• 비즈니스 모니터링  액티브 데이터베이스 or 자체 구현
Ex) 최근 30분 동안의 로그인 고객 수의 평균, 특정 웹페이지의 Hit Ratio,
고객 원장 내의 잔고 액수 등

• 알고리즘 주식 거래  특정 제품 or 자체 구현
Ex) 알고리즘 주식 거래 등

7

Embian© 2013
3. 대처 방법의 문제점

I. CEP의 시작

기존 시스템으로 대처할 수 있다.
그런데,

1. 특정 도메인에는 맞다.
하지만, 범용성을 가진 것이 필요하다.
2. 이거 할 때마다 만들어야 해? 재사용 못하나?

3. 처리 속도가 느리면 안 되는데…

8

Embian© 2013
4. 3가지 요소

I. CEP의 시작

1. (개념의) 범용성
 도메인에 관계 없는 범용적 개념의 정립

2. (컴포넌트의) 재사용성
 재사용 가능한 독립된 소프트웨어 컴포넌트의 구축

3. 즉시응답성
 패러다임의 변화

9

Embian© 2013
5. 3가지 요소를 만족하는 그 무엇

범용성

재사용성

I. CEP의 시작

즉시반응성

기능요소

CEP
(Complex Event Processing)

도대체 “지금” “무슨 일”이 일어나고 있는 거야?

예상한 일이 “일어나면”, “즉시” 무엇인가 “해라”

비기능요소

10

Embian© 2013
II. 범용성
- CEP의 개념들
11

Embian© 2013
0. 개요

II. 범용성

도메인에 관계 없는 범용성 추구  개념들의 추상화
1. Event

2. Event Processing
3. Complex Event

4. Complex Event
Processing

12

Embian© 2013
0. 개요

II. 범용성

CEP에서의 핵심 개념들
1.1. Event Type
2.1. Event Stream

1. Event
1.2. Event Instance

2.2. Event Processor
2.3. Event Processing Network

2. Event Processing
4.1. Abstraction

3. Complex Event

2.5. Window

2.6. Counting & Negation

4.2. (Simple) Event Processing

2.7. Data Extraction

4.3. Drill Down
4.4. Pattern Matching

2.4. Filtering by Event Type

4. Complex Event
Processing

2.8. Filtering by Data
2.9. Aggregation

4.5. Causality

13

Embian© 2013
1. Event

II. 범용성

Event (I) :도메인에 상관없이, 발생되는 “무슨 일

서버 상태 메시지

(IP 주소, 측정 시간, 부하율 등)
1초 마다

로그인 성공 기록

Log in

로그인할 때 마다

(고객 ID, 로그인 시각 등)

주가 Tick

(종목명, Tick 시각, 주가 등)
모든 주가 Tick마다

14

Embian© 2013
1. Event

II. 범용성

Event (II) : Event(I)에 감지시각(Detection Time)을 부가
- Event Stream 내에서 Event들이 감지시각을 기준으로 정렬됨
(이하에서 Event라 함은 Event(II)를 의미)

감지시각 : t-2초

감지시각 : t-1초

감지시각 : t-0초

1초 마다

감지시각 : tx

Log in

감지시각 : ty

감지시각 : t0

로그인할 때 마다

감지시각 : ta

감지시각 : tb

감지시각 : tc

감지시각 : t0

모든 주가 Tick마다

15

Embian© 2013
1.1. Event Type

II. 범용성

Event는 Event Type으로 유형화
Event Type은 Type Name과 Attributes로 구성

Event Type

서버상태 Event

Type Name

IP 주소
측정 시각
CPU 사용율
Memory 사용율
부하율

로그인 Event
고객 ID
로그인 시각

주가 Event
종목명
Tick 시각
주가

Attribute

OOP에서 클래스(Class)와 유사

16

Embian© 2013
1.2. Event Instance

II. 범용성

개별 Event는 Event Instance라고도 불림
Event Instances
주가 Event
Detection Time = xxxx
종목명 = “Google”
Tick 시각 = 20131210135512
주가 = $1101

Event Type
주가 Event

감지시각

주가 Event
Detection Time = yyyy
종목명 = “Google”
Tick 시각 = 20131210135513
주가 = $1100

종목명
Tick 시각
주가

...

Attribute

주가 Event
Detection Time = zzzz
종목명 = “Google”
Tick 시각 = 20131210135525
주가 = $1099

Attribute Value
(Data)

OOP에서 객체(Object or Instance)와 유사

17

Embian© 2013
2. Event Processing

II. 범용성

Event Processor

2.2. Event Processor
2.1. Event Stream

Event 자체에 대한 연산

Event의 속성값에 대한 연산

2.3. Event Processing Network
2.4. Filtering by Event Type
2.5. Window
2.6. Counting & Negation
• Etc.

2.7. Data Extraction (Access)
2.8. Filtering by Data
2.9. Aggregation (Min, Max, Sum, Avg, Etc.)
• Etc. (Joining, Grouping, … )

18

Embian© 2013
2.1. Event Stream

II. 범용성

Event들이 한 방향으로 계속 유입/유출되는 것
(감지시각에 의하여 정렬된 Event들의 무한집합)

흐름의 방향 & 감시시각

Event Stream

19

Embian© 2013
2.2. Event Processor

II. 범용성

Event Stream의 한쪽 방향에서 Event에 대한 연산을 수행하는
소프트웨어 컴포넌트

Event Processor

20

Embian© 2013
2.3. Event Processing Network (EPN)

II. 범용성

Event Processing을 위하여 Event Stream과 Event Processor의
Processing Topology를 구성한 것

21

Embian© 2013
2.4. Filtering by Event Type – Event 자체에 대한 연산

II. 범용성

Event Type을 기준으로 Event들을 추출
ex) Event Stream 내의 Event 중에서 그 Type이 “로그인 Event”인 것만을 Filtering

Input Stream

Output Stream

Event Type == 로그인 Event

22

Embian© 2013
2.5. Window – Event 자체에 대한 연산

II. 범용성

Time Window

now – 5sec

now

Event 감지시각(Event Detection Time)을 사용

Tuple Window

n개

Event 카운터를 사용

23

0개

Embian© 2013
2.6. Counting & Negation

– Event 자체에 대한 연산

II. 범용성

• Counting : Event Stream 내의 Event들 개수를 세는 것
ex) 최근 1분 동안 웹페이지 Hit 수를 1초마다 모니터링

• Negation : Event Stream 내에 조건에 맞는 Event들이 없는 것을 판단 (count==0)
ex) 1분 동안 특정 서버로부터의 상태 메시지(Event)가 수신되지 않는 경우

24

Embian© 2013
2.7. Data Extraction (Access) – Event 속성에 대한 연산

II. 범용성

Event의 특정 속성의 값(Data)을 추출

Input Stream
“종목명” 속성의 값을
추출
Google

25

Samsung

Samsung

Google

Embian© 2013
2.8. Filtering by Data – Event 속성에 대한 연산

II. 범용성

Event의 특정 속성의 값을 기준으로 Event를 추출
예) “주가 Event” 중에서 그 속성인 “종목명”의 값이 “google”인 Event들만 추출

Input Stream

Output Stream

종목명 == “Google”

26

Embian© 2013
2.9. Aggregation – Event 속성에 대한 연산

II. 범용성

Event의 속성 값에 대한 Min, Max, Sum, Avg 등의 연산

Input Stream

“주가” 속성의 최대값 추출

1452

27

Embian© 2013
3.1. Complex Event

II. 범용성

“복잡한” 무슨 일은 어떻게 하지?
Complex Event

예) “로그인 해킹 시도 이벤트”가 최근 1시간 동안 가장 많았던 고객 ID를 감지
여기서 “로그인 해킹 시도”란 동일한 고객 ID로 5초 동안에 5번 이상의 “로그인 실패 Event”가
발생한 경우로 정의한다.

28

Embian© 2013
3.1. Complex Event

II. 범용성

Simple Events

Complex Event
Abstraction
로그인 해킹 시도 Event
고객 ID = “tiger”
최초 시도 시각
시도 회수

...

Drill Down

29

Embian© 2013
4. Complex Event Processing

II. 범용성

4.1. Abstraction (Complex Event의 생성)
4.2. (Simple) Event Processing
4.3. Drill Down (Complex Event의 분해)
4.4. Pattern Matching
4.5. Causality

30

Embian© 2013
4.1. Abstraction (Conjunction)
(Simple) Events  Complex Event
1-1. 최근 5초 동안의 Window에서 “로그인 실패 Event”를 추출

now – 5sec

now

1-2. “로그인 실패 Event” 의 속성인 “고객 ID”를 기준으로 Grouping하여 Event를 Count

6

2

3

1-3. 5개 이상인 경우, 해당 ID를 기준으로 “로그인 해킹 시도 Event”를 생성
로그인 해킹 시도 Event
고객 ID = “tiger”
최초 시도 시각 = xxx
시도 회수 = 6

31

Complex Event
Embian© 2013
4.2. (Simple) Event Processing

II. 범용성

생성된 Complex Event에 대한 처리  (Simple) Event와 동일
2-1. 최근 1시간 동안의 Window에서 “로그인 해킹 시도 Event”를 추출

now – 1hour

now

2-2. “로그인 해킹 시도 Event”의 속성인 “고객 ID” 별로 Grouping하여 Event를 Count

2

1

2-3. Count 결과가 최대인 Event에서 속성인 “고객 ID”의 값을 출력

tiger

32

Embian© 2013
4.3. Drill Down

(Disjunction)

II. 범용성

Complex Event  Simple Events
로그인 해킹 시도 Event
고객 ID = “tiger”
최초 시도 시각 = xxx
시도 회수 = 6

33

Embian© 2013
4.4. Pattern Matching

II. 범용성

예) 총알 배송 쇼핑몰
정상적인 흐름

지연 Pattern

시스템 비정상 Pattern

34

Embian© 2013
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” 생성

3
1

4

2

35

Embian© 2013
5. Summary

II. 범용성

범용성을 위하여
도메인을 포괄할 수 있는 개념들을 추상화
Complex Event Processing
1. Event

2. Event Processing
3. Complex Event

4. Complex Event
Processing

36

Embian© 2013
III. 재사용성
- 독립 컴포넌트의 구축
37

Embian© 2013
1. Custom-coding is Evil.

III. 재사용성

기존 대응 방안들의 문제점  재사용성 미비
• 일반언어(C++, Java 등)로 구현
저수준 코딩을 초래 (CEP를 위한 데이터 구조 및 알고리즘을 하위레벨에서 직접 구현)

• 해당 도메인에 특화됨
해당 도메인 외의 분야에서는 사용할 수 없는 구조적 한계

Knightmare 사건 (Knight Capital Group 사건)
고속으로 입력되는 많은 양의 고객의 주문(parent order)을
자체 알고리즘을 통해 child orders로 분할하여 자동으로 주식 매매  CEP의 한 종류
2012년 8월, 기존 알고리즘을 변경. 그러나, 코드에 Bug 존재 (이관 과정에서 Target 간 코드 불일치)
45분만에 5000억 이상의 손실 발생, 15억원의 벌금 부과, 결국 GETCO에 합병

38

Embian© 2013
2. 재사용성의 확보

III. 재사용성

1. 추상화된 CEP의 개념요소들을 위한 공통의 기능을 구현
 Event 생성, Filtering, Aggregation, 등

2. 구현된 기능들에 대한 인터페이스를 제공
 기능들에 대한 인터페이스를
일반 언어에서 사용할 수 있는 함수 형태로 제공
또는 EPL(Event Processing Language) 형태로 제공

3. 위 기능을 독립된 소프트웨어 컴포넌트로 구축
 CEP Engine들이 확산되고 있음

39

Embian© 2013
3. 현재 재사용성 확보 단계

III. 재사용성

현재 EPL 표준화 진행 중
재사용성
컴포넌트 간 표준 인터페이스
확립

CEP Engine

공통 기능의
독립 컴포넌트화

공통 라이브러리의
확산

Standard SQL

RDBMS

데이터 구조 및 알고리즘을
개인 라이브러리화
개별 프로그램에서
데이터 구조 및 알고리즘
직접 구현

표준화

40

Embian© 2013
4. CEP Engine

III. 재사용성

Legacy Systems

Event Consumer

Log in
BAM, Mailer, Etc.

CEP Engine

Filtering

Aggregation

Abstraction

Etc.

비즈니스 로직 인터페이스

EPL (Event Processing Language)

EPL
Statement

EPL
Statement

EPL
Statement

41

공통 기능

비즈니스 로직 (EPL 문장)

Embian© 2013
5. 요약

III. 재사용성

• 기존 대응 방식들은 재사용성이 미흡

• 재사용성을 확보하기 위하여
• 공통의 기능을 구현
• 인터페이스 제공
• 독립된 소프트웨어 컴포넌트로 구축

• 독립된 소프트웨어 컴포넌트로서
다양한 CEP Engine들이 구축되어 왔음

42

Embian© 2013
IV. 즉시응답성
- 패러다임의 변화
43

Embian© 2013
1. Process Now

IV. 즉시응답성

Conventional Model : Store Now, Process Later.

로그인 성공 기록

Log in

Step 1. Storing Data

Step 2. Batch Processing

Event Processing Model : Process Now.

Log in

로그인 성공 기록

Just Only 1 Step.

44

Embian© 2013
2. 메모리 기반 처리

IV. 즉시응답성

• Event 탐지시간(detection time)을 최소화
• 데이터(Event)가 변하는 모든 때에 연산을 수행

So,
속도가 느린 외부 장치에 데이터를 저장하지 않음

 메모리 내에서 직접 Event Processing 수행

45

Embian© 2013
3. 분산 처리

IV. 즉시응답성

• 필요성
- 하나의 CEP Engine에서 처리할 수 있는 양을 초과
- Event 탐지시간을 최소화

• 현상황
- 대부분의 CEP Engine은 분산처리 지원 못함

• 대안
- Esper + Storm
- 분산환경에서 Composition-operator를 활용하기 위한 Query Optimizer의 구현

46

Embian© 2013
4. 요약

IV. 즉시응답성

• 즉시응답성을 위하여
기존의 “Store Now, Process Later” 모델 대신,
“Process Now” 모델을 사용
• Process Now 모델을 위하여 메모리 기반 처리
• 현단계에서 대부분의 CEP Engine이 분산처리 미지원

47

Embian© 2013
V. CEP 엔진
- 구현체들
48

Embian© 2013
1. CEP Engine의 종류

V. CEP 엔진

지원하는 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의 개념요소들에 대한 구현 여부 및 방식이 상이함)

49

Embian© 2013
2. Data Stream Query 기반 CEP

V. CEP 엔진

Event Stream은 계속 변화
 Event 간의 관계에 대한 연산은 불가능

t

Stream

{ ø } 또는 {

}

특정 시각 t에서 바라본 Stream 내의 Event들

 따라서 특정 시각 t에서 Event들 간의 관계는 표현될 수 없음

50

Embian© 2013
2. Data Stream Query 기반 CEP

V. CEP 엔진

3가지의 연산을 통해 Event 간의 관계 연산 수행
Event Stream (INPUT)

1. Stream to Relation

2. Relation to Relation
Event Stream (OUTPUT)

3. Relation to Stream

51

Embian© 2013
2. Data Stream Query 기반 CEP

V. CEP 엔진

1. Stream to Relation 연산
- Event Stream의 스냅샷을 Event Relation으로 변환
Event Stream

Take a Snapshot

Event Relation

-대부분Window를사용하여Snapshot을생성

감지시각

Tick 시각

1386695097100

Samsung

201312100158

1451

1386695097230

Samsung

201312100158

1452

1386695098200

Google

201312100168

1015

1386695099998

52

종목명

주가

Samsung

201312100170

1451

Embian© 2013
2. Data Stream Query 기반 CEP

V. CEP 엔진

2. Relation to Relation 연산
- Event Relation에 대하여 Event들 간의 관계형 연산 수행
감지시각

종목명

Tick 시각

1386695097100

Samsung

201312100158

1451

1386695097230

Samsung

201312100158

1452

1386695098200

Google

201312100168

1015

1386695099998

Samsung

201312100170

1451

SELECT AVG(주가) FROM …

감지시각
1386695100000

AVG(주가)
1342

SELECT 종목명, AVG(주가)
FROM …
GROUP BY 종목명

감지시각

종목명

AVG(주가)

1386695100000

Google

1015

1386695100001

Samsung

주가

SELECT AVG(주가) FROM …
GROUP BY 종목명
HAVING 주가 > 1400

감지시각

종목명

AVG(주가)

1451

53

1386695100001

Samsung

1451

Embian© 2013
2. Data Stream Query 기반 CEP

V. CEP 엔진

3. Relation to Stream 연산
- 처리된 Event Relation을 Event Stream으로 변환

감지시각

AVG(주가)

1386695100000

감지시각

1342

종목명

AVG(주가)

1386695100000

Google

1015

1386695100001

Samsung

1451

감지시각
1386695100001

종목명
Samsung

AVG(주가)
1451

54

Embian© 2013
3. 구현체들

V. CEP 엔진

STREAM (STanford stREam datA Manager)
• Stanford 대학에서 연구 프로젝트로 개발됨.
• Data Stream Query 기반의 CEP 엔진
• SQL과 유사한 문법의 CQL(Continuous Query Language) 사용
• Esper와 Coral8, Oracle Event Processing 11g 등의 기반이 됨

55

Embian© 2013
3. 구현체들

V. CEP 엔진

Borealis
• Brandeis 대학, Brown 대학, MIT 대학에서 개발한 연구용 CEP Engine
• CEP Engine인 Aurora와 분산 스트림 처리 프로젝트인 Medusa를 결합
• Data Stream Query 기반. 그러나, Boxes-and-Arrows 접근방법을 활용
• Query 언어로서 XML을 사용

예시 쿼리 다이어그램 (출처 : Borealis Team. Borealis Application Programmer’s Guide. 2006)

56

Embian© 2013
3. 구현체들

V. CEP 엔진

Esper
• Esper Tech에 의하여 개발되었으며, Open Source(GPL v2)
• Data Stream Query 기반. 패턴매칭 및 Composition-operator 기능 추가
• SQL과 유사한 문법의 EPL이라는 언어 제공
• Event에 대한 연산은 Event Tuple이 Engine에 입력/출력되는 모든 시점에 수
행됨 (STREAM은 정해진 시간마다 수행)

57

Embian© 2013
3. 구현체들

V. CEP 엔진

Oracle Event Processing 11g
• STREAM을 기반으로 BEA에 의하여 개발되고, Oracle에서 인수함

StreamBase
• TIBICO에서 개발됨

Drools
• Jboss Rules.
• Production Rule 기반

SASE+
• University of Massachusetts Amherst의 연구 프로젝트
• Composition Operator 기반

58

Embian© 2013
4. 요약

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가 주목받고 있음

59

Embian© 2013
VI. 결론

60

Embian© 2013
CEP는 새로운 것이 아니다
Complex Event Processing이

Complex Event Processing이

하는 일

갖추어야 할 요소
개념의 범용성

Event에 대한 즉각적 감지

컴포넌트로서의 재사용성

만족하는 조건에 대한 즉각적 반응

즉시응답성

처음부터 프로그래머가
원래 하던 업무

소프트웨어 발전 단계에서
자연스러운 요소

61

Embian© 2013
참고자료

•
•
•
•
•

David Luckham. A Brief Overview of the Concepts of CEP. (http://complexevents.com/wp-content/uploads/2008/07/overview-ofconcepts-of-cep.pdf), 2008.
David Luckham. A Short History of Complex Event Processing, Part 1 & Part2. (http://complexevents.com/wpcontent/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-glossaryv11.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© 2013

62
감사합니다.

63

Embian© 2013

More Related Content

What's hot

Implementation of RBAC and Data Classification onto a Mainframe system (v1.5)
Implementation of RBAC and Data Classification onto a Mainframe system (v1.5)Implementation of RBAC and Data Classification onto a Mainframe system (v1.5)
Implementation of RBAC and Data Classification onto a Mainframe system (v1.5)Rui Miguel Feio
 
Spring boot Under Da Hood
Spring boot Under Da HoodSpring boot Under Da Hood
Spring boot Under Da HoodMichel Schudel
 
Bug bounty null_owasp_2k17
Bug bounty null_owasp_2k17Bug bounty null_owasp_2k17
Bug bounty null_owasp_2k17Sagar M Parmar
 
Spring Security 5.5 From Taxi to Takeoff
Spring Security 5.5 From Taxi to TakeoffSpring Security 5.5 From Taxi to Takeoff
Spring Security 5.5 From Taxi to TakeoffVMware Tanzu
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03Changyol BAEK
 
Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」
Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」
Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」Tatsuo Kudo
 
Oracle SOA Suite Everywhere
Oracle SOA Suite EverywhereOracle SOA Suite Everywhere
Oracle SOA Suite EverywhereRupesh Das
 
Privleged Access Management
Privleged Access ManagementPrivleged Access Management
Privleged Access ManagementLance Peterman
 
Weaponizing Your DevOps Pipeline
Weaponizing Your DevOps PipelineWeaponizing Your DevOps Pipeline
Weaponizing Your DevOps PipelinePuma Security, LLC
 
Fault Tolerance 소프트웨어 패턴
Fault Tolerance 소프트웨어 패턴Fault Tolerance 소프트웨어 패턴
Fault Tolerance 소프트웨어 패턴IMQA
 
apidays LIVE Singapore - Engineering Open Banking with Singpass for Financial...
apidays LIVE Singapore - Engineering Open Banking with Singpass for Financial...apidays LIVE Singapore - Engineering Open Banking with Singpass for Financial...
apidays LIVE Singapore - Engineering Open Banking with Singpass for Financial...apidays
 
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...Tatsuo Kudo
 
Sql Injection - Vulnerability and Security
Sql Injection - Vulnerability and SecuritySql Injection - Vulnerability and Security
Sql Injection - Vulnerability and SecuritySandip Chaudhari
 
10 Stages in the Loan Origination Process.pdf
10 Stages in the Loan Origination Process.pdf10 Stages in the Loan Origination Process.pdf
10 Stages in the Loan Origination Process.pdfHabile Technologies
 
OWASP Top 10 API Security Risks
OWASP Top 10 API Security RisksOWASP Top 10 API Security Risks
OWASP Top 10 API Security RisksIndusfacePvtLtd
 
Idcon25 FIDO2 の概要と YubiKey の実装
Idcon25 FIDO2 の概要と YubiKey の実装Idcon25 FIDO2 の概要と YubiKey の実装
Idcon25 FIDO2 の概要と YubiKey の実装Haniyama Wataru
 

What's hot (20)

Identity access management
Identity access managementIdentity access management
Identity access management
 
Implementation of RBAC and Data Classification onto a Mainframe system (v1.5)
Implementation of RBAC and Data Classification onto a Mainframe system (v1.5)Implementation of RBAC and Data Classification onto a Mainframe system (v1.5)
Implementation of RBAC and Data Classification onto a Mainframe system (v1.5)
 
CISSP Summary V1.1
CISSP Summary V1.1CISSP Summary V1.1
CISSP Summary V1.1
 
Spring boot Under Da Hood
Spring boot Under Da HoodSpring boot Under Da Hood
Spring boot Under Da Hood
 
Spring security
Spring securitySpring security
Spring security
 
Bug bounty null_owasp_2k17
Bug bounty null_owasp_2k17Bug bounty null_owasp_2k17
Bug bounty null_owasp_2k17
 
Single Sign On - The Basics
Single Sign On - The BasicsSingle Sign On - The Basics
Single Sign On - The Basics
 
Spring Security 5.5 From Taxi to Takeoff
Spring Security 5.5 From Taxi to TakeoffSpring Security 5.5 From Taxi to Takeoff
Spring Security 5.5 From Taxi to Takeoff
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03
 
Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」
Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」
Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」
 
Oracle SOA Suite Everywhere
Oracle SOA Suite EverywhereOracle SOA Suite Everywhere
Oracle SOA Suite Everywhere
 
Privleged Access Management
Privleged Access ManagementPrivleged Access Management
Privleged Access Management
 
Weaponizing Your DevOps Pipeline
Weaponizing Your DevOps PipelineWeaponizing Your DevOps Pipeline
Weaponizing Your DevOps Pipeline
 
Fault Tolerance 소프트웨어 패턴
Fault Tolerance 소프트웨어 패턴Fault Tolerance 소프트웨어 패턴
Fault Tolerance 소프트웨어 패턴
 
apidays LIVE Singapore - Engineering Open Banking with Singpass for Financial...
apidays LIVE Singapore - Engineering Open Banking with Singpass for Financial...apidays LIVE Singapore - Engineering Open Banking with Singpass for Financial...
apidays LIVE Singapore - Engineering Open Banking with Singpass for Financial...
 
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
 
Sql Injection - Vulnerability and Security
Sql Injection - Vulnerability and SecuritySql Injection - Vulnerability and Security
Sql Injection - Vulnerability and Security
 
10 Stages in the Loan Origination Process.pdf
10 Stages in the Loan Origination Process.pdf10 Stages in the Loan Origination Process.pdf
10 Stages in the Loan Origination Process.pdf
 
OWASP Top 10 API Security Risks
OWASP Top 10 API Security RisksOWASP Top 10 API Security Risks
OWASP Top 10 API Security Risks
 
Idcon25 FIDO2 の概要と YubiKey の実装
Idcon25 FIDO2 の概要と YubiKey の実装Idcon25 FIDO2 の概要と YubiKey の実装
Idcon25 FIDO2 の概要と YubiKey の実装
 

Similar to Cep 소개 - for developers

[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유iFunFactory Inc.
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3uEngine Solutions
 
이벤트 드리븐.pptx
이벤트 드리븐.pptx이벤트 드리븐.pptx
이벤트 드리븐.pptxMUUMUMUMU
 
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?NAVER Engineering
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈NAVER D2
 
유엔진 BPM 커스터마이징 개발 방법
유엔진 BPM 커스터마이징 개발 방법유엔진 BPM 커스터마이징 개발 방법
유엔진 BPM 커스터마이징 개발 방법uEngine Solutions
 
windows via c++ Ch 5. Job
windows via c++ Ch 5. Jobwindows via c++ Ch 5. Job
windows via c++ Ch 5. JobHyosung Jeon
 
안드로이드 개발자에 필요한 오픈소스이야기
안드로이드 개발자에 필요한 오픈소스이야기안드로이드 개발자에 필요한 오픈소스이야기
안드로이드 개발자에 필요한 오픈소스이야기YoungSu Son
 
[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기NAVER D2
 
UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례SangIn Choung
 
아마존 웹서비스를 이용한 WebApp 제작 Attendee
아마존 웹서비스를 이용한 WebApp 제작 Attendee아마존 웹서비스를 이용한 WebApp 제작 Attendee
아마존 웹서비스를 이용한 WebApp 제작 AttendeeLEEDONGJOON1
 
[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트
[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트
[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트월간 IT 슬라이드
 
Aspect Oriented Programming_SYS4U I&C
Aspect Oriented Programming_SYS4U I&CAspect Oriented Programming_SYS4U I&C
Aspect Oriented Programming_SYS4U I&Csys4u
 
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기Kee Hoon Lee
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기YoungSu Son
 
02.개발환경 실습교재
02.개발환경 실습교재02.개발환경 실습교재
02.개발환경 실습교재Hankyo
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초Kwangyoun Jung
 
Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Paprikhan
 
Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Bansook Nam
 
[부스트캠프 Tech Talk] 이정현_Github Workflow 활용하기
[부스트캠프 Tech Talk] 이정현_Github Workflow 활용하기[부스트캠프 Tech Talk] 이정현_Github Workflow 활용하기
[부스트캠프 Tech Talk] 이정현_Github Workflow 활용하기CONNECT FOUNDATION
 

Similar to Cep 소개 - for developers (20)

[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3
 
이벤트 드리븐.pptx
이벤트 드리븐.pptx이벤트 드리븐.pptx
이벤트 드리븐.pptx
 
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
유엔진 BPM 커스터마이징 개발 방법
유엔진 BPM 커스터마이징 개발 방법유엔진 BPM 커스터마이징 개발 방법
유엔진 BPM 커스터마이징 개발 방법
 
windows via c++ Ch 5. Job
windows via c++ Ch 5. Jobwindows via c++ Ch 5. Job
windows via c++ Ch 5. Job
 
안드로이드 개발자에 필요한 오픈소스이야기
안드로이드 개발자에 필요한 오픈소스이야기안드로이드 개발자에 필요한 오픈소스이야기
안드로이드 개발자에 필요한 오픈소스이야기
 
[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기
 
UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례
 
아마존 웹서비스를 이용한 WebApp 제작 Attendee
아마존 웹서비스를 이용한 WebApp 제작 Attendee아마존 웹서비스를 이용한 WebApp 제작 Attendee
아마존 웹서비스를 이용한 WebApp 제작 Attendee
 
[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트
[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트
[월간 슬라이드] 한시간안에 게시판 만들기 with 스프링부트
 
Aspect Oriented Programming_SYS4U I&C
Aspect Oriented Programming_SYS4U I&CAspect Oriented Programming_SYS4U I&C
Aspect Oriented Programming_SYS4U I&C
 
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
 
02.개발환경 실습교재
02.개발환경 실습교재02.개발환경 실습교재
02.개발환경 실습교재
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 
Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Node.js + Websocket 삽질기
Node.js + Websocket 삽질기
 
Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지
 
[부스트캠프 Tech Talk] 이정현_Github Workflow 활용하기
[부스트캠프 Tech Talk] 이정현_Github Workflow 활용하기[부스트캠프 Tech Talk] 이정현_Github Workflow 활용하기
[부스트캠프 Tech Talk] 이정현_Github Workflow 활용하기
 

Cep 소개 - for developers

  • 1. CEP 소개 - 개발자를 위한 - 2013.12.12 이주현 B-Platform Team Manager, Embian. (lee@embian.com, leejuhyeon@gmail.com) Embian© 2013
  • 2. Agenda I. CEP의 시작 – 3가지 요소 II. 범용성 – CEP의 개념들 III. 재사용성 – 독립 컴포넌트의 구축 IV. 즉시응답성 – 패러다임의 변화 V. CEP Engine - 구현체들 VI. 결론 2 Embian© 2013
  • 3. I. CEP의 시작 - 3가지 요소 3 Embian© 2013
  • 4. 1. 두 가지 요구사항 I. CEP의 시작 1. 도대체 “지금” “무슨 일”이 일어나고 있는 거야? 2. 예상한 일이 “일어나면”, “즉시” 무엇인가 “해라” 4 Embian© 2013
  • 5. 1. 두 가지 요구사항 I. CEP의 시작 1. 도대체 “지금” “무슨 일”이 일어나고 있는 거야? • 최근 30분 동안 로그인 고객 수의 평균은? • 모든 서버들이 잘 돌아가고 있나? • 현재 주가가 오르고 있는거야, 내려가고 있는 거야? 5 Embian© 2013
  • 6. 1. 두 가지 요구사항 I. CEP의 시작 2. 예상한 일이 “일어나면”, “즉시” 무엇인가 “해라” • 최근 30분 동안의 로그인 고객 수의 평균을 1초 단위로 보여달라. • 작동 중이지 않는 서버가 있다면, 관리자에게 즉시 SMS를 보내라. • 주가가 오르고 있다면, 해당 주식을 즉시 팔아라/사라. 6 Embian© 2013
  • 7. 2. 어떻게 대처하지? I. CEP의 시작 • 네트워크 모니터링  Network Monitoring Tools Ex) 서버 상태들의 모니터링 및 특정 상태에서 경고 등 • 비즈니스 모니터링  액티브 데이터베이스 or 자체 구현 Ex) 최근 30분 동안의 로그인 고객 수의 평균, 특정 웹페이지의 Hit Ratio, 고객 원장 내의 잔고 액수 등 • 알고리즘 주식 거래  특정 제품 or 자체 구현 Ex) 알고리즘 주식 거래 등 7 Embian© 2013
  • 8. 3. 대처 방법의 문제점 I. CEP의 시작 기존 시스템으로 대처할 수 있다. 그런데, 1. 특정 도메인에는 맞다. 하지만, 범용성을 가진 것이 필요하다. 2. 이거 할 때마다 만들어야 해? 재사용 못하나? 3. 처리 속도가 느리면 안 되는데… 8 Embian© 2013
  • 9. 4. 3가지 요소 I. CEP의 시작 1. (개념의) 범용성  도메인에 관계 없는 범용적 개념의 정립 2. (컴포넌트의) 재사용성  재사용 가능한 독립된 소프트웨어 컴포넌트의 구축 3. 즉시응답성  패러다임의 변화 9 Embian© 2013
  • 10. 5. 3가지 요소를 만족하는 그 무엇 범용성 재사용성 I. CEP의 시작 즉시반응성 기능요소 CEP (Complex Event Processing) 도대체 “지금” “무슨 일”이 일어나고 있는 거야? 예상한 일이 “일어나면”, “즉시” 무엇인가 “해라” 비기능요소 10 Embian© 2013
  • 11. II. 범용성 - CEP의 개념들 11 Embian© 2013
  • 12. 0. 개요 II. 범용성 도메인에 관계 없는 범용성 추구  개념들의 추상화 1. Event 2. Event Processing 3. Complex Event 4. Complex Event Processing 12 Embian© 2013
  • 13. 0. 개요 II. 범용성 CEP에서의 핵심 개념들 1.1. Event Type 2.1. Event Stream 1. Event 1.2. Event Instance 2.2. Event Processor 2.3. Event Processing Network 2. Event Processing 4.1. Abstraction 3. Complex Event 2.5. Window 2.6. Counting & Negation 4.2. (Simple) Event Processing 2.7. Data Extraction 4.3. Drill Down 4.4. Pattern Matching 2.4. Filtering by Event Type 4. Complex Event Processing 2.8. Filtering by Data 2.9. Aggregation 4.5. Causality 13 Embian© 2013
  • 14. 1. Event II. 범용성 Event (I) :도메인에 상관없이, 발생되는 “무슨 일 서버 상태 메시지 (IP 주소, 측정 시간, 부하율 등) 1초 마다 로그인 성공 기록 Log in 로그인할 때 마다 (고객 ID, 로그인 시각 등) 주가 Tick (종목명, Tick 시각, 주가 등) 모든 주가 Tick마다 14 Embian© 2013
  • 15. 1. Event II. 범용성 Event (II) : Event(I)에 감지시각(Detection Time)을 부가 - Event Stream 내에서 Event들이 감지시각을 기준으로 정렬됨 (이하에서 Event라 함은 Event(II)를 의미) 감지시각 : t-2초 감지시각 : t-1초 감지시각 : t-0초 1초 마다 감지시각 : tx Log in 감지시각 : ty 감지시각 : t0 로그인할 때 마다 감지시각 : ta 감지시각 : tb 감지시각 : tc 감지시각 : t0 모든 주가 Tick마다 15 Embian© 2013
  • 16. 1.1. Event Type II. 범용성 Event는 Event Type으로 유형화 Event Type은 Type Name과 Attributes로 구성 Event Type 서버상태 Event Type Name IP 주소 측정 시각 CPU 사용율 Memory 사용율 부하율 로그인 Event 고객 ID 로그인 시각 주가 Event 종목명 Tick 시각 주가 Attribute OOP에서 클래스(Class)와 유사 16 Embian© 2013
  • 17. 1.2. Event Instance II. 범용성 개별 Event는 Event Instance라고도 불림 Event Instances 주가 Event Detection Time = xxxx 종목명 = “Google” Tick 시각 = 20131210135512 주가 = $1101 Event Type 주가 Event 감지시각 주가 Event Detection Time = yyyy 종목명 = “Google” Tick 시각 = 20131210135513 주가 = $1100 종목명 Tick 시각 주가 ... Attribute 주가 Event Detection Time = zzzz 종목명 = “Google” Tick 시각 = 20131210135525 주가 = $1099 Attribute Value (Data) OOP에서 객체(Object or Instance)와 유사 17 Embian© 2013
  • 18. 2. Event Processing II. 범용성 Event Processor 2.2. Event Processor 2.1. Event Stream Event 자체에 대한 연산 Event의 속성값에 대한 연산 2.3. Event Processing Network 2.4. Filtering by Event Type 2.5. Window 2.6. Counting & Negation • Etc. 2.7. Data Extraction (Access) 2.8. Filtering by Data 2.9. Aggregation (Min, Max, Sum, Avg, Etc.) • Etc. (Joining, Grouping, … ) 18 Embian© 2013
  • 19. 2.1. Event Stream II. 범용성 Event들이 한 방향으로 계속 유입/유출되는 것 (감지시각에 의하여 정렬된 Event들의 무한집합) 흐름의 방향 & 감시시각 Event Stream 19 Embian© 2013
  • 20. 2.2. Event Processor II. 범용성 Event Stream의 한쪽 방향에서 Event에 대한 연산을 수행하는 소프트웨어 컴포넌트 Event Processor 20 Embian© 2013
  • 21. 2.3. Event Processing Network (EPN) II. 범용성 Event Processing을 위하여 Event Stream과 Event Processor의 Processing Topology를 구성한 것 21 Embian© 2013
  • 22. 2.4. Filtering by Event Type – Event 자체에 대한 연산 II. 범용성 Event Type을 기준으로 Event들을 추출 ex) Event Stream 내의 Event 중에서 그 Type이 “로그인 Event”인 것만을 Filtering Input Stream Output Stream Event Type == 로그인 Event 22 Embian© 2013
  • 23. 2.5. Window – Event 자체에 대한 연산 II. 범용성 Time Window now – 5sec now Event 감지시각(Event Detection Time)을 사용 Tuple Window n개 Event 카운터를 사용 23 0개 Embian© 2013
  • 24. 2.6. Counting & Negation – Event 자체에 대한 연산 II. 범용성 • Counting : Event Stream 내의 Event들 개수를 세는 것 ex) 최근 1분 동안 웹페이지 Hit 수를 1초마다 모니터링 • Negation : Event Stream 내에 조건에 맞는 Event들이 없는 것을 판단 (count==0) ex) 1분 동안 특정 서버로부터의 상태 메시지(Event)가 수신되지 않는 경우 24 Embian© 2013
  • 25. 2.7. Data Extraction (Access) – Event 속성에 대한 연산 II. 범용성 Event의 특정 속성의 값(Data)을 추출 Input Stream “종목명” 속성의 값을 추출 Google 25 Samsung Samsung Google Embian© 2013
  • 26. 2.8. Filtering by Data – Event 속성에 대한 연산 II. 범용성 Event의 특정 속성의 값을 기준으로 Event를 추출 예) “주가 Event” 중에서 그 속성인 “종목명”의 값이 “google”인 Event들만 추출 Input Stream Output Stream 종목명 == “Google” 26 Embian© 2013
  • 27. 2.9. Aggregation – Event 속성에 대한 연산 II. 범용성 Event의 속성 값에 대한 Min, Max, Sum, Avg 등의 연산 Input Stream “주가” 속성의 최대값 추출 1452 27 Embian© 2013
  • 28. 3.1. Complex Event II. 범용성 “복잡한” 무슨 일은 어떻게 하지? Complex Event 예) “로그인 해킹 시도 이벤트”가 최근 1시간 동안 가장 많았던 고객 ID를 감지 여기서 “로그인 해킹 시도”란 동일한 고객 ID로 5초 동안에 5번 이상의 “로그인 실패 Event”가 발생한 경우로 정의한다. 28 Embian© 2013
  • 29. 3.1. Complex Event II. 범용성 Simple Events Complex Event Abstraction 로그인 해킹 시도 Event 고객 ID = “tiger” 최초 시도 시각 시도 회수 ... Drill Down 29 Embian© 2013
  • 30. 4. Complex Event Processing II. 범용성 4.1. Abstraction (Complex Event의 생성) 4.2. (Simple) Event Processing 4.3. Drill Down (Complex Event의 분해) 4.4. Pattern Matching 4.5. Causality 30 Embian© 2013
  • 31. 4.1. Abstraction (Conjunction) (Simple) Events  Complex Event 1-1. 최근 5초 동안의 Window에서 “로그인 실패 Event”를 추출 now – 5sec now 1-2. “로그인 실패 Event” 의 속성인 “고객 ID”를 기준으로 Grouping하여 Event를 Count 6 2 3 1-3. 5개 이상인 경우, 해당 ID를 기준으로 “로그인 해킹 시도 Event”를 생성 로그인 해킹 시도 Event 고객 ID = “tiger” 최초 시도 시각 = xxx 시도 회수 = 6 31 Complex Event Embian© 2013
  • 32. 4.2. (Simple) Event Processing II. 범용성 생성된 Complex Event에 대한 처리  (Simple) Event와 동일 2-1. 최근 1시간 동안의 Window에서 “로그인 해킹 시도 Event”를 추출 now – 1hour now 2-2. “로그인 해킹 시도 Event”의 속성인 “고객 ID” 별로 Grouping하여 Event를 Count 2 1 2-3. Count 결과가 최대인 Event에서 속성인 “고객 ID”의 값을 출력 tiger 32 Embian© 2013
  • 33. 4.3. Drill Down (Disjunction) II. 범용성 Complex Event  Simple Events 로그인 해킹 시도 Event 고객 ID = “tiger” 최초 시도 시각 = xxx 시도 회수 = 6 33 Embian© 2013
  • 34. 4.4. Pattern Matching II. 범용성 예) 총알 배송 쇼핑몰 정상적인 흐름 지연 Pattern 시스템 비정상 Pattern 34 Embian© 2013
  • 35. 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” 생성 3 1 4 2 35 Embian© 2013
  • 36. 5. Summary II. 범용성 범용성을 위하여 도메인을 포괄할 수 있는 개념들을 추상화 Complex Event Processing 1. Event 2. Event Processing 3. Complex Event 4. Complex Event Processing 36 Embian© 2013
  • 37. III. 재사용성 - 독립 컴포넌트의 구축 37 Embian© 2013
  • 38. 1. Custom-coding is Evil. III. 재사용성 기존 대응 방안들의 문제점  재사용성 미비 • 일반언어(C++, Java 등)로 구현 저수준 코딩을 초래 (CEP를 위한 데이터 구조 및 알고리즘을 하위레벨에서 직접 구현) • 해당 도메인에 특화됨 해당 도메인 외의 분야에서는 사용할 수 없는 구조적 한계 Knightmare 사건 (Knight Capital Group 사건) 고속으로 입력되는 많은 양의 고객의 주문(parent order)을 자체 알고리즘을 통해 child orders로 분할하여 자동으로 주식 매매  CEP의 한 종류 2012년 8월, 기존 알고리즘을 변경. 그러나, 코드에 Bug 존재 (이관 과정에서 Target 간 코드 불일치) 45분만에 5000억 이상의 손실 발생, 15억원의 벌금 부과, 결국 GETCO에 합병 38 Embian© 2013
  • 39. 2. 재사용성의 확보 III. 재사용성 1. 추상화된 CEP의 개념요소들을 위한 공통의 기능을 구현  Event 생성, Filtering, Aggregation, 등 2. 구현된 기능들에 대한 인터페이스를 제공  기능들에 대한 인터페이스를 일반 언어에서 사용할 수 있는 함수 형태로 제공 또는 EPL(Event Processing Language) 형태로 제공 3. 위 기능을 독립된 소프트웨어 컴포넌트로 구축  CEP Engine들이 확산되고 있음 39 Embian© 2013
  • 40. 3. 현재 재사용성 확보 단계 III. 재사용성 현재 EPL 표준화 진행 중 재사용성 컴포넌트 간 표준 인터페이스 확립 CEP Engine 공통 기능의 독립 컴포넌트화 공통 라이브러리의 확산 Standard SQL RDBMS 데이터 구조 및 알고리즘을 개인 라이브러리화 개별 프로그램에서 데이터 구조 및 알고리즘 직접 구현 표준화 40 Embian© 2013
  • 41. 4. CEP Engine III. 재사용성 Legacy Systems Event Consumer Log in BAM, Mailer, Etc. CEP Engine Filtering Aggregation Abstraction Etc. 비즈니스 로직 인터페이스 EPL (Event Processing Language) EPL Statement EPL Statement EPL Statement 41 공통 기능 비즈니스 로직 (EPL 문장) Embian© 2013
  • 42. 5. 요약 III. 재사용성 • 기존 대응 방식들은 재사용성이 미흡 • 재사용성을 확보하기 위하여 • 공통의 기능을 구현 • 인터페이스 제공 • 독립된 소프트웨어 컴포넌트로 구축 • 독립된 소프트웨어 컴포넌트로서 다양한 CEP Engine들이 구축되어 왔음 42 Embian© 2013
  • 43. IV. 즉시응답성 - 패러다임의 변화 43 Embian© 2013
  • 44. 1. Process Now IV. 즉시응답성 Conventional Model : Store Now, Process Later. 로그인 성공 기록 Log in Step 1. Storing Data Step 2. Batch Processing Event Processing Model : Process Now. Log in 로그인 성공 기록 Just Only 1 Step. 44 Embian© 2013
  • 45. 2. 메모리 기반 처리 IV. 즉시응답성 • Event 탐지시간(detection time)을 최소화 • 데이터(Event)가 변하는 모든 때에 연산을 수행 So, 속도가 느린 외부 장치에 데이터를 저장하지 않음  메모리 내에서 직접 Event Processing 수행 45 Embian© 2013
  • 46. 3. 분산 처리 IV. 즉시응답성 • 필요성 - 하나의 CEP Engine에서 처리할 수 있는 양을 초과 - Event 탐지시간을 최소화 • 현상황 - 대부분의 CEP Engine은 분산처리 지원 못함 • 대안 - Esper + Storm - 분산환경에서 Composition-operator를 활용하기 위한 Query Optimizer의 구현 46 Embian© 2013
  • 47. 4. 요약 IV. 즉시응답성 • 즉시응답성을 위하여 기존의 “Store Now, Process Later” 모델 대신, “Process Now” 모델을 사용 • Process Now 모델을 위하여 메모리 기반 처리 • 현단계에서 대부분의 CEP Engine이 분산처리 미지원 47 Embian© 2013
  • 48. V. CEP 엔진 - 구현체들 48 Embian© 2013
  • 49. 1. CEP Engine의 종류 V. CEP 엔진 지원하는 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의 개념요소들에 대한 구현 여부 및 방식이 상이함) 49 Embian© 2013
  • 50. 2. Data Stream Query 기반 CEP V. CEP 엔진 Event Stream은 계속 변화  Event 간의 관계에 대한 연산은 불가능 t Stream { ø } 또는 { } 특정 시각 t에서 바라본 Stream 내의 Event들  따라서 특정 시각 t에서 Event들 간의 관계는 표현될 수 없음 50 Embian© 2013
  • 51. 2. Data Stream Query 기반 CEP V. CEP 엔진 3가지의 연산을 통해 Event 간의 관계 연산 수행 Event Stream (INPUT) 1. Stream to Relation 2. Relation to Relation Event Stream (OUTPUT) 3. Relation to Stream 51 Embian© 2013
  • 52. 2. Data Stream Query 기반 CEP V. CEP 엔진 1. Stream to Relation 연산 - Event Stream의 스냅샷을 Event Relation으로 변환 Event Stream Take a Snapshot Event Relation -대부분Window를사용하여Snapshot을생성 감지시각 Tick 시각 1386695097100 Samsung 201312100158 1451 1386695097230 Samsung 201312100158 1452 1386695098200 Google 201312100168 1015 1386695099998 52 종목명 주가 Samsung 201312100170 1451 Embian© 2013
  • 53. 2. Data Stream Query 기반 CEP V. CEP 엔진 2. Relation to Relation 연산 - Event Relation에 대하여 Event들 간의 관계형 연산 수행 감지시각 종목명 Tick 시각 1386695097100 Samsung 201312100158 1451 1386695097230 Samsung 201312100158 1452 1386695098200 Google 201312100168 1015 1386695099998 Samsung 201312100170 1451 SELECT AVG(주가) FROM … 감지시각 1386695100000 AVG(주가) 1342 SELECT 종목명, AVG(주가) FROM … GROUP BY 종목명 감지시각 종목명 AVG(주가) 1386695100000 Google 1015 1386695100001 Samsung 주가 SELECT AVG(주가) FROM … GROUP BY 종목명 HAVING 주가 > 1400 감지시각 종목명 AVG(주가) 1451 53 1386695100001 Samsung 1451 Embian© 2013
  • 54. 2. Data Stream Query 기반 CEP V. CEP 엔진 3. Relation to Stream 연산 - 처리된 Event Relation을 Event Stream으로 변환 감지시각 AVG(주가) 1386695100000 감지시각 1342 종목명 AVG(주가) 1386695100000 Google 1015 1386695100001 Samsung 1451 감지시각 1386695100001 종목명 Samsung AVG(주가) 1451 54 Embian© 2013
  • 55. 3. 구현체들 V. CEP 엔진 STREAM (STanford stREam datA Manager) • Stanford 대학에서 연구 프로젝트로 개발됨. • Data Stream Query 기반의 CEP 엔진 • SQL과 유사한 문법의 CQL(Continuous Query Language) 사용 • Esper와 Coral8, Oracle Event Processing 11g 등의 기반이 됨 55 Embian© 2013
  • 56. 3. 구현체들 V. CEP 엔진 Borealis • Brandeis 대학, Brown 대학, MIT 대학에서 개발한 연구용 CEP Engine • CEP Engine인 Aurora와 분산 스트림 처리 프로젝트인 Medusa를 결합 • Data Stream Query 기반. 그러나, Boxes-and-Arrows 접근방법을 활용 • Query 언어로서 XML을 사용 예시 쿼리 다이어그램 (출처 : Borealis Team. Borealis Application Programmer’s Guide. 2006) 56 Embian© 2013
  • 57. 3. 구현체들 V. CEP 엔진 Esper • Esper Tech에 의하여 개발되었으며, Open Source(GPL v2) • Data Stream Query 기반. 패턴매칭 및 Composition-operator 기능 추가 • SQL과 유사한 문법의 EPL이라는 언어 제공 • Event에 대한 연산은 Event Tuple이 Engine에 입력/출력되는 모든 시점에 수 행됨 (STREAM은 정해진 시간마다 수행) 57 Embian© 2013
  • 58. 3. 구현체들 V. CEP 엔진 Oracle Event Processing 11g • STREAM을 기반으로 BEA에 의하여 개발되고, Oracle에서 인수함 StreamBase • TIBICO에서 개발됨 Drools • Jboss Rules. • Production Rule 기반 SASE+ • University of Massachusetts Amherst의 연구 프로젝트 • Composition Operator 기반 58 Embian© 2013
  • 59. 4. 요약 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가 주목받고 있음 59 Embian© 2013
  • 61. CEP는 새로운 것이 아니다 Complex Event Processing이 Complex Event Processing이 하는 일 갖추어야 할 요소 개념의 범용성 Event에 대한 즉각적 감지 컴포넌트로서의 재사용성 만족하는 조건에 대한 즉각적 반응 즉시응답성 처음부터 프로그래머가 원래 하던 업무 소프트웨어 발전 단계에서 자연스러운 요소 61 Embian© 2013
  • 62. 참고자료 • • • • • David Luckham. A Brief Overview of the Concepts of CEP. (http://complexevents.com/wp-content/uploads/2008/07/overview-ofconcepts-of-cep.pdf), 2008. David Luckham. A Short History of Complex Event Processing, Part 1 & Part2. (http://complexevents.com/wpcontent/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-glossaryv11.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© 2013 62