SlideShare a Scribd company logo
1 of 46
Download to read offline
ksqlDB로 시작하는 스트림 프로세싱
Jupil Hwang
요즘 세상은 모두 실시간으로 움직이는 데이터 위에 있다
2
실시간 이벤트
그러면 우리는 다양하게 생성되는 실시간 데이터를
어떻게 처리하고 있나?
실시간 이벤트 데이터 스트림 프로세싱
5
데이터베이스, 스트림 프로세싱,
Analytics
실시간 이벤트 데이터 스트림 프로세싱
6
Big Data solves Volume and Variety – not Velocity
7
File
DB
DB
Extract
Enterprise
DW
BI Tools
Search /
Explore
SQL Export
SQL
Search
Service
Data Sources Big Data Platform
Raw
Refined
Storage
Storage Result
Parallel Processing
File Import / SQL Import
Apps
API
Logic
https://www.youtube.com/watch?v=vFshGQ2ndeg&list=WL&index=2&t=231s
Big Data solves Volume and Variety – not Velocity
8
Data Sources
File
DB
DB
Extract
Enterprise
DW
BI Tools
Search /
Explore
SQL Export
SQL
Search
Service
Event Sources
IoT Data
Mobile
Data
Location
Stream
Data
Telemetry
Event Hub
- Machine Learning
- Graph Algorithms
- Natural Language Processing
Big Data Platform
Raw
Refined
Storage
Storage Result
Parallel Processing
File Import / SQL Import
Apps
API
Logic
Event Stream
https://www.youtube.com/watch?v=vFshGQ2ndeg&list=WL&index=2&t=231s
다양한 데이터 소스
Stream Processing Architecture solves Velocity
9
Data Sources
File
DB
DB
Extract
Enterprise
DW
BI Tools
Search /
Explore
Event Sources
IoT Data
Mobile
Data
Location
Stream
Data
Telemetry
Event Hub
Stream Analytics Platform
Reference / Models
Stream Analytics
Result
Dashboard
Event Stream
Event Stream
Export
SQL
Search
Service Apps
API
Logic
Event Stream
https://www.youtube.com/watch?v=vFshGQ2ndeg&list=WL&index=2&t=231s
Big Data for all historical data analysis
10
Data Sources
File
DB
DB
Extract
Enterprise
DW
BI Tools
Search /
Explore
Event Sources
IoT Data
Mobile
Data
Location
Stream
Data
Telemetry
Event Stream
Stream Analytics Platform
Reference / Models
Stream Analytics
Result
Dashboard
Event Stream
Event Stream
Event Hub
Big Data Platform
Raw
Refined
Storage
Storage Result
Parallel Processing
Data Flow
File Import / SQL Import
Export
SQL
Search
Service
Apps
API
Logic
https://www.youtube.com/watch?v=vFshGQ2ndeg&list=WL&index=2&t=231s
Big Data for all historical data analysis
11
Data Sources
File
DB
DB
Extract
Enterprise
DW
BI Tools
Search /
Explore
Event Sources
IoT Data
Mobile
Data
Location
Stream
Data
Telemetry
Event Stream
Stream Analytics Platform
Reference / Models
Stream Analytics
Result
Dashboard
Event Stream
Event Stream
Event Hub
Big Data Platform
Raw
Refined
Storage
Storage Result
Parallel Processing
Data Flow
Export
SQL
Search
Service
Apps
API
Logic
File Import / SQL Import
Change Data Capture
https://www.youtube.com/watch?v=vFshGQ2ndeg&list=WL&index=2&t=231s
Confluent
커넥터와 ksqlDB로 데이터 사용 및 가치 증대
12
Microservices
Web
Custom Apps
Monitoring
Analytics
3rd Party Apps
Databases
Data Warehouses
AWS, Azure, GCP
Mainframes
ksqlDB
Kafka Streams
Kafka 기반의 실시간 앱은 데이터를 이벤
트 스트리밍 플랫폼에서 처리
커넥터는 다른 앱이나 데이터 시스템과 연계
하여, 데이터를 가져오거나 대상 시스템에 적
재
스트림 프로세싱은 데이터를 실시간으로 가
공/처리하여 스트림 제공
1 2
3
Kafka 를 통한 스트림 프로세싱
DB
CONNECTOR
CONNECTOR
APP
APP
DB
STREAM
PROCESSING
CONNECTOR APP
DB
ksqlDB ?
DB
APP
APP
DB
PULL
PUSH
커넥터
스트림 프로세싱
MATERIALIZED VIEWS
ksqlDB
APP
스트림 프로세싱 툴 장단점 비교
17
Kafka Producer &
Consumer
Kafka
Streams
ksqlDB
ConsumerRecords<String, String> records =
consumer.poll(100);
Map<String, Integer> counts = new DefaultMap<String,
Integer>();
for (ConsumerRecord<String, Integer> record : records) {
String key = record.key();
int c = counts.get(key)
c += record.value()
counts.put(key, c)
}
for (Map.Entry<String, Integer> entry : counts.entrySet()) {
int stateCount;
int attempts;
while (attempts++ < MAX_RETRIES) {
try {
stateCount = stateStore.getValue(entry.getKey())
stateStore.setValue(entry.getKey(), entry.getValue() +
stateCount)
break;
} catch (StateStoreException e) {
RetryUtils.backoff(attempts);
}
}
}
builder
.stream("input-stream",
Consumed.with(Serdes.String(),
Serdes.String()))
.groupBy((key, value) -> value)
.count()
.toStream()
.to("counts",
Produced.with(Serdes.String(),
Serdes.Long()));
SELECT x, count(*) FROM stream GROUP BY
x EMIT CHANGES;
스트림 프로세싱 툴 장단점 비교
18
Kafka Producer &
Consumer
Kafka
Streams
ksqlDB
ConsumerRecords<String, String> records =
consumer.poll(100);
Map<String, Integer> counts = new DefaultMap<String,
Integer>();
for (ConsumerRecord<String, Integer> record : records) {
String key = record.key();
int c = counts.get(key)
c += record.value()
counts.put(key, c)
}
for (Map.Entry<String, Integer> entry : counts.entrySet()) {
int stateCount;
int attempts;
while (attempts++ < MAX_RETRIES) {
try {
stateCount = stateStore.getValue(entry.getKey())
stateStore.setValue(entry.getKey(), entry.getValue() +
stateCount)
break;
} catch (StateStoreException e) {
RetryUtils.backoff(attempts);
}
}
}
builder
.stream("input-stream",
Consumed.with(Serdes.String(),
Serdes.String()))
.groupBy((key, value) -> value)
.count()
.toStream()
.to("counts",
Produced.with(Serdes.String(),
Serdes.Long()));
SELECT x, count(*) FROM stream GROUP BY
x EMIT CHANGES;
Code Base
(DevOps)
Low Code
ksqlDB의 기본 개념
Copyright 2020, Confluent, Inc. All rights reserved. This document may not be reproduced in any manner without the express written permission of Confluent, Inc.
스트림(Stream)과 테이블(Table)
20
Topic Stream
Topic
+
Structure
=
Table
RocksDB
+
=
Stream
Data Type : Streams 은 불변의 추가 전용의 연속적인 이벤트
21
Streams
● Useful for representing a historical
series of events
● “Data in motion”
Tables
● Represent the latest version of each
value per key
● Serve queries to applications
Data Type : Tables 은 변경가능한 이벤트 컬렉션
22
Persistent queries
● Execute continuous computations
over unbounded streams of events
● Derive new collections or
materialized views that are
incrementally updated
Query Type: Persistent queries 는 데이터를 처리하는데 사용
23
Query Type: Pull queries 는 materialized view의 현재
상태를 가져온다.
24
Pull queries
● Run with predictably low latency
● Good fit for request/response flows
Query Types : Push queries 는 실시간으로 변경되는 것을
구독할 수 있다
25
Push queries
● Emit refinements that quickly react
to new information
● Perfect fit for asynchronous
applications flows
ksqlDB의 사용사례
ksqlDB 의 다양한 사용사례
• 이상 징후 및 패턴 감지
• Customer360
• 사이버 보안
• 예측 분석
• 실시간 분석
• 물류 및 IoT 관리
• 실시간 경고 및 알림
• 인프라 현대화
https://developer.confluent.io/tutorials
Pattern : 생명/보험 - Updating Dashboards
29
Insurance
DB
INSERT INTO app_pipeline
SELECT
COUNT(*)
FROM proposal prop
INNER JOIN application app
ON prop.plan_id = app.plan_id
WHERE app.status IS NOT ‘pending’
GROUP BY prop.id
WINDOW TUMBLING (SIZE 1 hour)
EMIT CHANGES;
Sales
Dashboard
proposal
application
KSQL
app_pipeline
KSQL
hourly_close
INSERT INTO hourly_close
SELECT
SUM(amount)
COUNT(*)
FROM application
GROUP BY id
WHERE app.status IS ‘signed’
WINDOW TUMBLING (SIZE 1 hour)
EMIT CHANGES;
app_pipeline
hourly_close
stream
table
process
각 판매 채널은 실시간 판매 예측을 원하지만 제안
및 응용 프로그램에 대한 데이터는 야간 배치
작업으로 정책 관리자에게 전송된다. 판매
시스템은 이미 구식의 모놀리식 애플리케이션이기
때문에 외부 서비스와 통합되는 기능을 추가하는
데 비용이 많이 든다.
• 데이터베이스 레코드 변경 사항을 스트림으로
캡처 - 앱 또는 기존 데이터베이스에 영향을
주지 않는다.
• 서로 다른 엔터티 처리 - 제안 및 애플리케이션
테이블은 구조적으로 다르다. 처리 수를
추출하는 로직은 별도의 쿼리로 정의할 수 있다.
• 결과는 쉽게 창으로 표시할 수 있다.
Materialized View를 대시보드에서
가져오거나 정기적으로 업데이트로 푸시할 수
있다.
Pattern : Payment - Fraud Detection
30
transaction
KSQL
FREQUENCY
bad_trans
Store
INSERT INTO bad_trans
SELECT
account_id,
‘over_limit’,
SUM(amount)
FROM transactions
GROUP BY account_id
HAVING SUM(amount) > 1000000
WINDOW TUMBLING (SIZE 1 HOUR)
EMIT CHANGES;
Admin
Customer
Portal
KSQL
LIMIT
INSERT INTO bad_trans
SELECT
account_id,
‘too_frequent’,
COUNT(*)
FROM transactions
GROUP BY account_id
HAVING COUNT(*) > 10
WINDOW TUMBLING (SIZE 1 DAY)
EMIT CHANGES;
stream
table
process
트랜잭션에서 비정상적인 계정 행동을 실시간으로
감지하여 사기 위험을 최소화한다.
• 하나의 트랜잭션 스트림은 서로 다른 규칙에 따라
별도로 대기되며 의심스러운 트랜잭션의 단일
소스로 요약된다.
• 각 규칙은 기존 규칙(시간별 트랜잭션 합계, 일별
트랜잭션 수 등)에 영향을 주지 않고 독립적으로
정의할 수 있다.
• 동일한 의심스러운 활동 이벤트는 영업 운영
대시보드에 요약, 최종 사용자 고객의 모바일 앱에
직접 푸시 등 다양한 용도로 사용할 수 있다.
Pattern : Payment - Fraud Detection ver.2
31
transaction
KSQL
Detect
fishy_account
Store
CREATE STREAM fishy_account AS
SELECT
account.id,
COUNT(*)
FROM transaction trans
INNER JOIN account
ON trans.account_id = account.id
GROUP BY account.id
HAVING COUNT(*) >= 10
WINDOW TUMBLING (SIZE 30 MINUTES)
EMIT CHANGES;
Customer
Portal
account
KSQL
SUSPEND
CREATE STREAM suspended AS
SELECT
transaction.id
account.id,
transaction.amount
FROM fishy_account
INNER JOIN transaction
ON bad_trans.account_id
= transaction.account.id
EMIT CHANGES;
Admin
Customer
Portal
suspended
stream
table
process
ksqlDB는 더 복잡한 조건을 채택할 수 있다 - 30분
이내에 10회 이상 트랜잭션을 업데이트되는 계정을
감지한다.
• 계정정도는 계정정보가 업데이트될 때만 변경됨 -
계정 정보를 변경하지 않는 자주 사용하는 사용자는
캡처되지 않는다.
• 모바일 앱을 통해 사용자에게 즉시 계정 알림
• 의심스러운 계정은 일시 중단된다. 백엔드에서 최종
사용자 확인 또는 관리 작업이 필요하다.
Pattern : SIEM – 비용 최적화
32
KSQL
Filter
device_logs
KSQL
FIrewall
KSQL
DNS
KSQL
Auth
firewall
dns
auth
KSQL
De-noise
firewall_clean
login
Devices
SIEM
Admin
KSQL
User Map
access_auth
Audit Store
Long-Term Store
Auth
CREATE STREAM device_logs AS
SELECT
event_id,
event_type,
EXPRODE (event)
timestamp,
....
FROM all_logs
WHERE event_type = ‘firewall’
OR event_type = ‘dns’
OR event_type = ‘auth’
EMIT CHANGES;
CREATE STREAM auth AS
SELECT
event,
event_type,
timestamp,
....
FROM device_logs
WHERE event_type = ‘firewall’
EMIT CHANGES;
CREATE STREAM dns AS
SELECT
event,
event_type,
timestamp,
....
FROM device_logs
WHERE event_type = ‘firewall’
EMIT CHANGES;
CREATE STREAM firewall AS
SELECT
event_type,
port,
message,
timestamp,
....
FROM device_logs
WHERE event_type = ‘firewall’
EMIT CHANGES;
CREATE STREAM access_auth AS
SELECT
auth.auth_id,
auth.auth_type,
auth.timestamp,
login.authorized_by
login.timestamp,
....
FROM auth
OUTER_JOIN login
ON auth.login_id = login.login_id
EMIT CHANGES;
all_logs
stream
table
process
SIEM 시스템에 들어가는 로그의 양을 제한한다.
• 다대다 연결(장치-시스템)에서 다대다(장치-유연한
시스템)로 전환하여 연결 수를 최소화한다.
• SIEM 시스템에 도달하기 전에 로그를 정리, 필터링
및 집계한다.
• 로그는 더 저렴한 객체 스토리지에 장기간 저장되며
필요할 때 필요에 따라 추출된다.
Pattern : Site Access Analysis
33
stream
table
process
pageviews
KSQL
Female
View
Site
users
Admin
female_per_region
female_views
KSQL
Per
Region
KSQL
Top
Viewer
KSQL
Region
8&9
female_top_viewer
female_region_89
CREATE STREAM female_views AS
SELECT
USERS.ID USERID,
PAGEVIEWS.PAGEID PAGEID,
USERS.REGIONID REGIONID,
USERS.GENDER GENDER
FROM pageviews
LEFT OUTER JOIN USERS users ON
((pageviews.USERID = users.ID))
WHERE (users.GENDER = 'FEMALE')
EMIT CHANGES;
CREATE TABLE female_per_region AS
SELECT
views.GENDER GENDER,
views.REGIONID REGIONID,
COUNT(*) NUMUSERS
FROM FEMALE_VIEWS views
WINDOW TUMBLING ( SIZE 30 SECONDS
)
GROUP BY views.GENDER,
views.REGIONID
HAVING (COUNT(*) > 1)
;
CREATE STREAM female_top_viewer AS
SELECT *
FROM female_views views
WHERE (CAST(SPLIT(views.PAGEID,
'_')[2] AS INTEGER) >= 50)
EMIT CHANGES;
CREATE STREAM female_region_89 AS
SELECT *
FROM female_views views
WHERE ((views.REGIONID LIKE '%_8') OR
(views.REGIONID LIKE '%_9'))
EMIT CHANGES;
실시간 사이트 액세스 분석
• 한 시스템에서 두 개의 다른 스트림을
추출한다. 하나는 페이지 뷰용이고 다른
하나는 사용자 로그인용이다.
• 데이터를 결합하고 필터링한 다음 결과를
다양한 분석 사용 사례에 사용할 수 있다.
• 필요에 따라 결과를 구체화하거나
애플리케이션 시스템으로 스트리밍할 수
있다.
Pattern : Gaming - Leaderboard
34
stream
table
process
CREATE TABLE LOSSES_PER_USER AS
SELECT
USER,
COUNT(USER) AS TOTAL_LOSSES
FROM USER_LOSSES
GROUP BY USER;
CREATE TABLE STATS_PER_USER AS
SELECT
UG.USER AS USER,
MAX(UG.GAME->SCORE) AS HIGHEST_SCORE,
MAX(UG.GAME->LEVEL) AS HIGHEST_LEVEL,
MAX(CASE WHEN LPU.TOTAL_LOSSES IS NULL THEN
CAST(0 AS BIGINT) ELSE LPU.TOTAL_LOSSES END) AS TOTAL_LOSSES
FROM USER_GAME UG
LEFT JOIN LOSSES_PER_USER LPU
ON UG.USER = LPU.USER
GROUP BY UG.USER;
Player user_game
user_losses
KSQL
Loss per
User
losses_per_user
KSQL
User
Stats
stats_per_user
Leaderboard
CREATE TABLE SUMMARY_STATS AS
SELECT
'SUMMARY_KEY' AS SUMMARY_KEY,
MAX(GAME->SCORE) AS HIGHEST_SCORE_VALUE,
COLLECT_SET(USER) AS USERS_SET_VALUE
FROM USER_GAME
GROUP BY 'SUMMARY_KEY';
KSQL
Summary
Stats
summary_stats
Pattern : Customer 360
35
Customers
create table user as select *
from customers c
inner join marketing_yn m on
c.rowkey=m.rowkey
where
c.age>=20 and
c.gender='M' and
((c.add='SEOUL' or c.add='INCHEON') or
c.add='BUSAN')
emit changes;
사용자 정보
마케팅 동의 정보
stream
table
process
마케팅 동의한 사용자 중 20대의
서울/인천/부산에 거주중인 남성
create stream events_enrich as select *
from events e
inner join user u on e.user_id=u.rowkey
where category_code='electronics.tablet'
partition by e.user_id
emit changes;
create table events_windowed as select
user_id,
array_distinct(collect_list(product_id)) product_id,
timestamptostring(windowstart,'yyyy-MM-
dd','UTC') event_date
from events_enrich
window tumbling(size 24 hours)
group by user_id
having
array_length(array_distinct(collect_list(product_id
)))>=5
emit changes;
이벤트 (거래내역, 구매내역, 사용자 액티비티)
특정 사용자 그룹의 이벤트
하루에 주문거래 5건 이산의 사용자
ksqlDB의 사용하기
ksqlDB 사용하기
스트림이나 테이블에 데이터 입력
UI
Native Java
Client
ksql> INSERT INTO people VALUES('Mary', 'Smith');
CLI
ksqlDB
KsqlObject row = new KsqlObject()
.put(“PERSON”, “robin”)
.put(“LOCATION”, “Manchester”);
//insert data into stream
client.insertInto(“MOVEMENTS”, row).get();
RESTFul API
Kafka 에 데이터 읽고 / 쓰기
people_topic
ksqlDB
Kafka 에 데이터 읽고 / 쓰기
people_topic
CREATE STREAM people
WITH(KAFKA_TOPIC='people_topic',
VALUE_FORMAT='AVRO');
ksqlDB
Kafka 에 데이터 읽고 / 쓰기
people_topic
CREATE STREAM people
WITH(KAFKA_TOPIC=‘people_topic',
VALUE_FORMAT='AVRO');
CREATE TABLE departments(
id INT PRIMARY KEY,
name VARCHAR)
WITH(KAFKA_TOPIC='dept_topic',
PARTITIONS=3,
VALUE_FORMAT='AVRO');
ksqlDB
Kafka 에 데이터 읽고 / 쓰기
people_topic
CREATE STREAM people
WITH(KAFKA_TOPIC=‘people_topic',
VALUE_FORMAT='AVRO');
CREATE TABLE departments(
id INT PRIMARY KEY,
name VARCHAR)
WITH(KAFKA_TOPIC='dept_topic',
PARTITIONS=3,
VALUE_FORMAT='AVRO');
dept_topic
ksqlDB
Connect to Data Systems Right from ksqlDB
Data Diode
ksqlDB 에서 다른 시스템 연계하기
ksqlDB 에서 다른 시스템 연계하기
CREATE SOURCE CONNECTOR SOURCE_MYSQL_01
WITH (
‘connector.class’ = ‘MySqlConnector’,
‘database.hostname’ = ‘mysql’,
‘table.whitelist’ = ‘demo.customers’);
SOURCES
ksqlDB 에서 다른 시스템 연계하기
SINKS
Amazon S3
Google
BigQuer
y
CREATE SINK CONNECTOR
SINK_ELASTIC_01
WITH (
‘connector.class’ =
‘ElasticsearchConnector’,
‘connection.url’ =
‘http://elasticsearch:9200’,
‘topics’ = ‘orders’);
스트림 리니지 (Stream Lineage)
Confluent 는 단순히 오픈소스 Apache Kafka 의 엔터프라이즈
버전이 아니다.
49
Fully
Managed
Connectors
Stream
Processing
Enterprise
Security &
Governance
…100s more
features
Confluent Server
Multi-cloud SaaS & Private Cloud
Kafka 는 Cloud Native(클라우드
네이티브)로 완전히 재설계됨
Complete, 엔터프라이즈 급 Data-in-
Motion 플랫폼
완전 관리형 서비스 및 소프트웨어로 언제
어디서나(Everywhere) 사용 가능
ksqlDB로 시작하는 스트림 프로세싱

More Related Content

What's hot

Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 SeoulElastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 SeoulSeungYong Oh
 
Using ClickHouse for Experimentation
Using ClickHouse for ExperimentationUsing ClickHouse for Experimentation
Using ClickHouse for ExperimentationGleb Kanterov
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...Amazon Web Services Korea
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기AWSKRUG - AWS한국사용자모임
 
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
Aws glue를 통한 손쉬운 데이터 전처리 작업하기Aws glue를 통한 손쉬운 데이터 전처리 작업하기
Aws glue를 통한 손쉬운 데이터 전처리 작업하기Amazon Web Services Korea
 
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdfDeep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdfAltinity Ltd
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) Amazon Web Services Korea
 
How Uber scaled its Real Time Infrastructure to Trillion events per day
How Uber scaled its Real Time Infrastructure to Trillion events per dayHow Uber scaled its Real Time Infrastructure to Trillion events per day
How Uber scaled its Real Time Infrastructure to Trillion events per dayDataWorks Summit
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)I Goo Lee.
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정Arawn Park
 
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon Web Services Korea
 
Disaster Recovery Plans for Apache Kafka
Disaster Recovery Plans for Apache KafkaDisaster Recovery Plans for Apache Kafka
Disaster Recovery Plans for Apache Kafkaconfluent
 
Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?confluent
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?VMware Tanzu Korea
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영NAVER D2
 
Amazon Timestream 시계열 데이터 전용 DB 소개 :: 변규현 - AWS Community Day 2019
Amazon Timestream 시계열 데이터 전용 DB 소개 :: 변규현 - AWS Community Day 2019Amazon Timestream 시계열 데이터 전용 DB 소개 :: 변규현 - AWS Community Day 2019
Amazon Timestream 시계열 데이터 전용 DB 소개 :: 변규현 - AWS Community Day 2019AWSKRUG - AWS한국사용자모임
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
 
Spring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise PlatformSpring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise PlatformVMware Tanzu
 

What's hot (20)

Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 SeoulElastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
 
Using ClickHouse for Experimentation
Using ClickHouse for ExperimentationUsing ClickHouse for Experimentation
Using ClickHouse for Experimentation
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
 
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
게임의 성공을 위한 Scalable 한 데이터 플랫폼 사례 공유 - 오승용, 데이터 플랫폼 리더, 데브시스터즈 ::: Games on AW...
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
 
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
Aws glue를 통한 손쉬운 데이터 전처리 작업하기Aws glue를 통한 손쉬운 데이터 전처리 작업하기
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
 
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdfDeep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
 
How Uber scaled its Real Time Infrastructure to Trillion events per day
How Uber scaled its Real Time Infrastructure to Trillion events per dayHow Uber scaled its Real Time Infrastructure to Trillion events per day
How Uber scaled its Real Time Infrastructure to Trillion events per day
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
Amazon RDS Proxy 집중 탐구 - 윤석찬 :: AWS Unboxing 온라인 세미나
 
Disaster Recovery Plans for Apache Kafka
Disaster Recovery Plans for Apache KafkaDisaster Recovery Plans for Apache Kafka
Disaster Recovery Plans for Apache Kafka
 
Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영
 
Amazon Timestream 시계열 데이터 전용 DB 소개 :: 변규현 - AWS Community Day 2019
Amazon Timestream 시계열 데이터 전용 DB 소개 :: 변규현 - AWS Community Day 2019Amazon Timestream 시계열 데이터 전용 DB 소개 :: 변규현 - AWS Community Day 2019
Amazon Timestream 시계열 데이터 전용 DB 소개 :: 변규현 - AWS Community Day 2019
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
Spring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise PlatformSpring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise Platform
 

Similar to ksqlDB로 시작하는 스트림 프로세싱

20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)Amazon Web Services Korea
 
2022년 07월 21일 Confluent+Imply 웨비나 발표자료
2022년 07월 21일 Confluent+Imply 웨비나 발표자료2022년 07월 21일 Confluent+Imply 웨비나 발표자료
2022년 07월 21일 Confluent+Imply 웨비나 발표자료confluent
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingAmazon Web Services Korea
 
고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...
고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...
고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...Amazon Web Services Korea
 
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...Amazon Web Services Korea
 
AWS 기반의 대용량 실시간 스트리밍 데이터 분석 아키텍처 패턴::김필중::AWS Summit Seoul 2018
AWS 기반의 대용량 실시간 스트리밍 데이터 분석 아키텍처 패턴::김필중::AWS Summit Seoul 2018 AWS 기반의 대용량 실시간 스트리밍 데이터 분석 아키텍처 패턴::김필중::AWS Summit Seoul 2018
AWS 기반의 대용량 실시간 스트리밍 데이터 분석 아키텍처 패턴::김필중::AWS Summit Seoul 2018 Amazon Web Services Korea
 
From event storming to spring cloud implementation
From event storming to spring cloud implementationFrom event storming to spring cloud implementation
From event storming to spring cloud implementationuEngine Solutions
 
Stream Processing 과 Confluent Cloud 시작하기
Stream Processing 과 Confluent Cloud 시작하기Stream Processing 과 Confluent Cloud 시작하기
Stream Processing 과 Confluent Cloud 시작하기confluent
 
디자인 패턴과 고객 사례로 살펴보는 현대적 어플리케이션 개발 – 배영부, 강성일, AWS애플리케이션 아키텍트:: AWS Summit On...
디자인 패턴과 고객 사례로 살펴보는 현대적 어플리케이션 개발 – 배영부, 강성일, AWS애플리케이션 아키텍트::  AWS Summit On...디자인 패턴과 고객 사례로 살펴보는 현대적 어플리케이션 개발 – 배영부, 강성일, AWS애플리케이션 아키텍트::  AWS Summit On...
디자인 패턴과 고객 사례로 살펴보는 현대적 어플리케이션 개발 – 배영부, 강성일, AWS애플리케이션 아키텍트:: AWS Summit On...Amazon Web Services Korea
 
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018Amazon Web Services Korea
 
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석Amazon Web Services Korea
 
(120128) #fitalk sql server forensics
(120128) #fitalk   sql server forensics(120128) #fitalk   sql server forensics
(120128) #fitalk sql server forensicsINSIGHT FORENSIC
 
RealDisplay Platform V1.5 소개
RealDisplay Platform V1.5 소개RealDisplay Platform V1.5 소개
RealDisplay Platform V1.5 소개Lee Sangboo
 
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...Amazon Web Services Korea
 
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIDo IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIHyunghun Cho
 
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)uEngine Solutions
 
AI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.IAI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.ILowy Shin
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)정명훈 Jerry Jeong
 

Similar to ksqlDB로 시작하는 스트림 프로세싱 (20)

20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
 
2022년 07월 21일 Confluent+Imply 웨비나 발표자료
2022년 07월 21일 Confluent+Imply 웨비나 발표자료2022년 07월 21일 Confluent+Imply 웨비나 발표자료
2022년 07월 21일 Confluent+Imply 웨비나 발표자료
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...
고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...
고객 중심 서비스 출시를 위한 준비 “온오프라인 고객 데이터 통합” – 김준형 AWS 솔루션즈 아키텍트, 김수진 아모레퍼시픽:: AWS C...
 
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
 
AWS 기반의 대용량 실시간 스트리밍 데이터 분석 아키텍처 패턴::김필중::AWS Summit Seoul 2018
AWS 기반의 대용량 실시간 스트리밍 데이터 분석 아키텍처 패턴::김필중::AWS Summit Seoul 2018 AWS 기반의 대용량 실시간 스트리밍 데이터 분석 아키텍처 패턴::김필중::AWS Summit Seoul 2018
AWS 기반의 대용량 실시간 스트리밍 데이터 분석 아키텍처 패턴::김필중::AWS Summit Seoul 2018
 
From event storming to spring cloud implementation
From event storming to spring cloud implementationFrom event storming to spring cloud implementation
From event storming to spring cloud implementation
 
Stream Processing 과 Confluent Cloud 시작하기
Stream Processing 과 Confluent Cloud 시작하기Stream Processing 과 Confluent Cloud 시작하기
Stream Processing 과 Confluent Cloud 시작하기
 
디자인 패턴과 고객 사례로 살펴보는 현대적 어플리케이션 개발 – 배영부, 강성일, AWS애플리케이션 아키텍트:: AWS Summit On...
디자인 패턴과 고객 사례로 살펴보는 현대적 어플리케이션 개발 – 배영부, 강성일, AWS애플리케이션 아키텍트::  AWS Summit On...디자인 패턴과 고객 사례로 살펴보는 현대적 어플리케이션 개발 – 배영부, 강성일, AWS애플리케이션 아키텍트::  AWS Summit On...
디자인 패턴과 고객 사례로 살펴보는 현대적 어플리케이션 개발 – 배영부, 강성일, AWS애플리케이션 아키텍트:: AWS Summit On...
 
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
 
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
 
(120128) #fitalk sql server forensics
(120128) #fitalk   sql server forensics(120128) #fitalk   sql server forensics
(120128) #fitalk sql server forensics
 
INFRASTRUCTURE
INFRASTRUCTUREINFRASTRUCTURE
INFRASTRUCTURE
 
RealDisplay Platform V1.5 소개
RealDisplay Platform V1.5 소개RealDisplay Platform V1.5 소개
RealDisplay Platform V1.5 소개
 
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
 
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIDo IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
 
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
 
AI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.IAI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.I
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)
 

More from confluent

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flinkconfluent
 
Unlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsUnlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsconfluent
 
Workshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con FlinkWorkshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con Flinkconfluent
 
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...confluent
 
AWS Immersion Day Mapfre - Confluent
AWS Immersion Day Mapfre   -   ConfluentAWS Immersion Day Mapfre   -   Confluent
AWS Immersion Day Mapfre - Confluentconfluent
 
Eventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkEventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkconfluent
 
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent CloudQ&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent Cloudconfluent
 
Citi TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Diveconfluent
 
Build real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with ConfluentBuild real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with Confluentconfluent
 
Q&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service MeshQ&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service Meshconfluent
 
Citi Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka MicroservicesCiti Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka Microservicesconfluent
 
Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3confluent
 
Citi Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging ModernizationCiti Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging Modernizationconfluent
 
Citi Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataCiti Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataconfluent
 
Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2confluent
 
Data In Motion Paris 2023
Data In Motion Paris 2023Data In Motion Paris 2023
Data In Motion Paris 2023confluent
 
Confluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with SynthesisConfluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with Synthesisconfluent
 
The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023confluent
 
The Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data StreamsThe Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data Streamsconfluent
 

More from confluent (20)

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flink
 
Unlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsUnlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insights
 
Workshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con FlinkWorkshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con Flink
 
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
 
AWS Immersion Day Mapfre - Confluent
AWS Immersion Day Mapfre   -   ConfluentAWS Immersion Day Mapfre   -   Confluent
AWS Immersion Day Mapfre - Confluent
 
Eventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkEventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalk
 
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent CloudQ&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
 
Citi TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Dive
 
Build real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with ConfluentBuild real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with Confluent
 
Q&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service MeshQ&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service Mesh
 
Citi Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka MicroservicesCiti Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka Microservices
 
Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3
 
Citi Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging ModernizationCiti Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging Modernization
 
Citi Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataCiti Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time data
 
Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2
 
Data In Motion Paris 2023
Data In Motion Paris 2023Data In Motion Paris 2023
Data In Motion Paris 2023
 
Confluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with SynthesisConfluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with Synthesis
 
The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023
 
The Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data StreamsThe Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data Streams
 

ksqlDB로 시작하는 스트림 프로세싱

  • 1. ksqlDB로 시작하는 스트림 프로세싱 Jupil Hwang
  • 2. 요즘 세상은 모두 실시간으로 움직이는 데이터 위에 있다 2
  • 3. 실시간 이벤트 그러면 우리는 다양하게 생성되는 실시간 데이터를 어떻게 처리하고 있나?
  • 4. 실시간 이벤트 데이터 스트림 프로세싱 5 데이터베이스, 스트림 프로세싱, Analytics
  • 5. 실시간 이벤트 데이터 스트림 프로세싱 6
  • 6. Big Data solves Volume and Variety – not Velocity 7 File DB DB Extract Enterprise DW BI Tools Search / Explore SQL Export SQL Search Service Data Sources Big Data Platform Raw Refined Storage Storage Result Parallel Processing File Import / SQL Import Apps API Logic https://www.youtube.com/watch?v=vFshGQ2ndeg&list=WL&index=2&t=231s
  • 7. Big Data solves Volume and Variety – not Velocity 8 Data Sources File DB DB Extract Enterprise DW BI Tools Search / Explore SQL Export SQL Search Service Event Sources IoT Data Mobile Data Location Stream Data Telemetry Event Hub - Machine Learning - Graph Algorithms - Natural Language Processing Big Data Platform Raw Refined Storage Storage Result Parallel Processing File Import / SQL Import Apps API Logic Event Stream https://www.youtube.com/watch?v=vFshGQ2ndeg&list=WL&index=2&t=231s 다양한 데이터 소스
  • 8. Stream Processing Architecture solves Velocity 9 Data Sources File DB DB Extract Enterprise DW BI Tools Search / Explore Event Sources IoT Data Mobile Data Location Stream Data Telemetry Event Hub Stream Analytics Platform Reference / Models Stream Analytics Result Dashboard Event Stream Event Stream Export SQL Search Service Apps API Logic Event Stream https://www.youtube.com/watch?v=vFshGQ2ndeg&list=WL&index=2&t=231s
  • 9. Big Data for all historical data analysis 10 Data Sources File DB DB Extract Enterprise DW BI Tools Search / Explore Event Sources IoT Data Mobile Data Location Stream Data Telemetry Event Stream Stream Analytics Platform Reference / Models Stream Analytics Result Dashboard Event Stream Event Stream Event Hub Big Data Platform Raw Refined Storage Storage Result Parallel Processing Data Flow File Import / SQL Import Export SQL Search Service Apps API Logic https://www.youtube.com/watch?v=vFshGQ2ndeg&list=WL&index=2&t=231s
  • 10. Big Data for all historical data analysis 11 Data Sources File DB DB Extract Enterprise DW BI Tools Search / Explore Event Sources IoT Data Mobile Data Location Stream Data Telemetry Event Stream Stream Analytics Platform Reference / Models Stream Analytics Result Dashboard Event Stream Event Stream Event Hub Big Data Platform Raw Refined Storage Storage Result Parallel Processing Data Flow Export SQL Search Service Apps API Logic File Import / SQL Import Change Data Capture https://www.youtube.com/watch?v=vFshGQ2ndeg&list=WL&index=2&t=231s Confluent
  • 11. 커넥터와 ksqlDB로 데이터 사용 및 가치 증대 12 Microservices Web Custom Apps Monitoring Analytics 3rd Party Apps Databases Data Warehouses AWS, Azure, GCP Mainframes ksqlDB Kafka Streams Kafka 기반의 실시간 앱은 데이터를 이벤 트 스트리밍 플랫폼에서 처리 커넥터는 다른 앱이나 데이터 시스템과 연계 하여, 데이터를 가져오거나 대상 시스템에 적 재 스트림 프로세싱은 데이터를 실시간으로 가 공/처리하여 스트림 제공 1 2 3
  • 12. Kafka 를 통한 스트림 프로세싱 DB CONNECTOR CONNECTOR APP APP DB STREAM PROCESSING CONNECTOR APP DB
  • 14. 스트림 프로세싱 툴 장단점 비교 17 Kafka Producer & Consumer Kafka Streams ksqlDB ConsumerRecords<String, String> records = consumer.poll(100); Map<String, Integer> counts = new DefaultMap<String, Integer>(); for (ConsumerRecord<String, Integer> record : records) { String key = record.key(); int c = counts.get(key) c += record.value() counts.put(key, c) } for (Map.Entry<String, Integer> entry : counts.entrySet()) { int stateCount; int attempts; while (attempts++ < MAX_RETRIES) { try { stateCount = stateStore.getValue(entry.getKey()) stateStore.setValue(entry.getKey(), entry.getValue() + stateCount) break; } catch (StateStoreException e) { RetryUtils.backoff(attempts); } } } builder .stream("input-stream", Consumed.with(Serdes.String(), Serdes.String())) .groupBy((key, value) -> value) .count() .toStream() .to("counts", Produced.with(Serdes.String(), Serdes.Long())); SELECT x, count(*) FROM stream GROUP BY x EMIT CHANGES;
  • 15. 스트림 프로세싱 툴 장단점 비교 18 Kafka Producer & Consumer Kafka Streams ksqlDB ConsumerRecords<String, String> records = consumer.poll(100); Map<String, Integer> counts = new DefaultMap<String, Integer>(); for (ConsumerRecord<String, Integer> record : records) { String key = record.key(); int c = counts.get(key) c += record.value() counts.put(key, c) } for (Map.Entry<String, Integer> entry : counts.entrySet()) { int stateCount; int attempts; while (attempts++ < MAX_RETRIES) { try { stateCount = stateStore.getValue(entry.getKey()) stateStore.setValue(entry.getKey(), entry.getValue() + stateCount) break; } catch (StateStoreException e) { RetryUtils.backoff(attempts); } } } builder .stream("input-stream", Consumed.with(Serdes.String(), Serdes.String())) .groupBy((key, value) -> value) .count() .toStream() .to("counts", Produced.with(Serdes.String(), Serdes.Long())); SELECT x, count(*) FROM stream GROUP BY x EMIT CHANGES; Code Base (DevOps) Low Code
  • 17. Copyright 2020, Confluent, Inc. All rights reserved. This document may not be reproduced in any manner without the express written permission of Confluent, Inc. 스트림(Stream)과 테이블(Table) 20 Topic Stream Topic + Structure = Table RocksDB + = Stream
  • 18. Data Type : Streams 은 불변의 추가 전용의 연속적인 이벤트 21 Streams ● Useful for representing a historical series of events ● “Data in motion”
  • 19. Tables ● Represent the latest version of each value per key ● Serve queries to applications Data Type : Tables 은 변경가능한 이벤트 컬렉션 22
  • 20. Persistent queries ● Execute continuous computations over unbounded streams of events ● Derive new collections or materialized views that are incrementally updated Query Type: Persistent queries 는 데이터를 처리하는데 사용 23
  • 21. Query Type: Pull queries 는 materialized view의 현재 상태를 가져온다. 24 Pull queries ● Run with predictably low latency ● Good fit for request/response flows
  • 22. Query Types : Push queries 는 실시간으로 변경되는 것을 구독할 수 있다 25 Push queries ● Emit refinements that quickly react to new information ● Perfect fit for asynchronous applications flows
  • 24. ksqlDB 의 다양한 사용사례 • 이상 징후 및 패턴 감지 • Customer360 • 사이버 보안 • 예측 분석 • 실시간 분석 • 물류 및 IoT 관리 • 실시간 경고 및 알림 • 인프라 현대화 https://developer.confluent.io/tutorials
  • 25. Pattern : 생명/보험 - Updating Dashboards 29 Insurance DB INSERT INTO app_pipeline SELECT COUNT(*) FROM proposal prop INNER JOIN application app ON prop.plan_id = app.plan_id WHERE app.status IS NOT ‘pending’ GROUP BY prop.id WINDOW TUMBLING (SIZE 1 hour) EMIT CHANGES; Sales Dashboard proposal application KSQL app_pipeline KSQL hourly_close INSERT INTO hourly_close SELECT SUM(amount) COUNT(*) FROM application GROUP BY id WHERE app.status IS ‘signed’ WINDOW TUMBLING (SIZE 1 hour) EMIT CHANGES; app_pipeline hourly_close stream table process 각 판매 채널은 실시간 판매 예측을 원하지만 제안 및 응용 프로그램에 대한 데이터는 야간 배치 작업으로 정책 관리자에게 전송된다. 판매 시스템은 이미 구식의 모놀리식 애플리케이션이기 때문에 외부 서비스와 통합되는 기능을 추가하는 데 비용이 많이 든다. • 데이터베이스 레코드 변경 사항을 스트림으로 캡처 - 앱 또는 기존 데이터베이스에 영향을 주지 않는다. • 서로 다른 엔터티 처리 - 제안 및 애플리케이션 테이블은 구조적으로 다르다. 처리 수를 추출하는 로직은 별도의 쿼리로 정의할 수 있다. • 결과는 쉽게 창으로 표시할 수 있다. Materialized View를 대시보드에서 가져오거나 정기적으로 업데이트로 푸시할 수 있다.
  • 26. Pattern : Payment - Fraud Detection 30 transaction KSQL FREQUENCY bad_trans Store INSERT INTO bad_trans SELECT account_id, ‘over_limit’, SUM(amount) FROM transactions GROUP BY account_id HAVING SUM(amount) > 1000000 WINDOW TUMBLING (SIZE 1 HOUR) EMIT CHANGES; Admin Customer Portal KSQL LIMIT INSERT INTO bad_trans SELECT account_id, ‘too_frequent’, COUNT(*) FROM transactions GROUP BY account_id HAVING COUNT(*) > 10 WINDOW TUMBLING (SIZE 1 DAY) EMIT CHANGES; stream table process 트랜잭션에서 비정상적인 계정 행동을 실시간으로 감지하여 사기 위험을 최소화한다. • 하나의 트랜잭션 스트림은 서로 다른 규칙에 따라 별도로 대기되며 의심스러운 트랜잭션의 단일 소스로 요약된다. • 각 규칙은 기존 규칙(시간별 트랜잭션 합계, 일별 트랜잭션 수 등)에 영향을 주지 않고 독립적으로 정의할 수 있다. • 동일한 의심스러운 활동 이벤트는 영업 운영 대시보드에 요약, 최종 사용자 고객의 모바일 앱에 직접 푸시 등 다양한 용도로 사용할 수 있다.
  • 27. Pattern : Payment - Fraud Detection ver.2 31 transaction KSQL Detect fishy_account Store CREATE STREAM fishy_account AS SELECT account.id, COUNT(*) FROM transaction trans INNER JOIN account ON trans.account_id = account.id GROUP BY account.id HAVING COUNT(*) >= 10 WINDOW TUMBLING (SIZE 30 MINUTES) EMIT CHANGES; Customer Portal account KSQL SUSPEND CREATE STREAM suspended AS SELECT transaction.id account.id, transaction.amount FROM fishy_account INNER JOIN transaction ON bad_trans.account_id = transaction.account.id EMIT CHANGES; Admin Customer Portal suspended stream table process ksqlDB는 더 복잡한 조건을 채택할 수 있다 - 30분 이내에 10회 이상 트랜잭션을 업데이트되는 계정을 감지한다. • 계정정도는 계정정보가 업데이트될 때만 변경됨 - 계정 정보를 변경하지 않는 자주 사용하는 사용자는 캡처되지 않는다. • 모바일 앱을 통해 사용자에게 즉시 계정 알림 • 의심스러운 계정은 일시 중단된다. 백엔드에서 최종 사용자 확인 또는 관리 작업이 필요하다.
  • 28. Pattern : SIEM – 비용 최적화 32 KSQL Filter device_logs KSQL FIrewall KSQL DNS KSQL Auth firewall dns auth KSQL De-noise firewall_clean login Devices SIEM Admin KSQL User Map access_auth Audit Store Long-Term Store Auth CREATE STREAM device_logs AS SELECT event_id, event_type, EXPRODE (event) timestamp, .... FROM all_logs WHERE event_type = ‘firewall’ OR event_type = ‘dns’ OR event_type = ‘auth’ EMIT CHANGES; CREATE STREAM auth AS SELECT event, event_type, timestamp, .... FROM device_logs WHERE event_type = ‘firewall’ EMIT CHANGES; CREATE STREAM dns AS SELECT event, event_type, timestamp, .... FROM device_logs WHERE event_type = ‘firewall’ EMIT CHANGES; CREATE STREAM firewall AS SELECT event_type, port, message, timestamp, .... FROM device_logs WHERE event_type = ‘firewall’ EMIT CHANGES; CREATE STREAM access_auth AS SELECT auth.auth_id, auth.auth_type, auth.timestamp, login.authorized_by login.timestamp, .... FROM auth OUTER_JOIN login ON auth.login_id = login.login_id EMIT CHANGES; all_logs stream table process SIEM 시스템에 들어가는 로그의 양을 제한한다. • 다대다 연결(장치-시스템)에서 다대다(장치-유연한 시스템)로 전환하여 연결 수를 최소화한다. • SIEM 시스템에 도달하기 전에 로그를 정리, 필터링 및 집계한다. • 로그는 더 저렴한 객체 스토리지에 장기간 저장되며 필요할 때 필요에 따라 추출된다.
  • 29. Pattern : Site Access Analysis 33 stream table process pageviews KSQL Female View Site users Admin female_per_region female_views KSQL Per Region KSQL Top Viewer KSQL Region 8&9 female_top_viewer female_region_89 CREATE STREAM female_views AS SELECT USERS.ID USERID, PAGEVIEWS.PAGEID PAGEID, USERS.REGIONID REGIONID, USERS.GENDER GENDER FROM pageviews LEFT OUTER JOIN USERS users ON ((pageviews.USERID = users.ID)) WHERE (users.GENDER = 'FEMALE') EMIT CHANGES; CREATE TABLE female_per_region AS SELECT views.GENDER GENDER, views.REGIONID REGIONID, COUNT(*) NUMUSERS FROM FEMALE_VIEWS views WINDOW TUMBLING ( SIZE 30 SECONDS ) GROUP BY views.GENDER, views.REGIONID HAVING (COUNT(*) > 1) ; CREATE STREAM female_top_viewer AS SELECT * FROM female_views views WHERE (CAST(SPLIT(views.PAGEID, '_')[2] AS INTEGER) >= 50) EMIT CHANGES; CREATE STREAM female_region_89 AS SELECT * FROM female_views views WHERE ((views.REGIONID LIKE '%_8') OR (views.REGIONID LIKE '%_9')) EMIT CHANGES; 실시간 사이트 액세스 분석 • 한 시스템에서 두 개의 다른 스트림을 추출한다. 하나는 페이지 뷰용이고 다른 하나는 사용자 로그인용이다. • 데이터를 결합하고 필터링한 다음 결과를 다양한 분석 사용 사례에 사용할 수 있다. • 필요에 따라 결과를 구체화하거나 애플리케이션 시스템으로 스트리밍할 수 있다.
  • 30. Pattern : Gaming - Leaderboard 34 stream table process CREATE TABLE LOSSES_PER_USER AS SELECT USER, COUNT(USER) AS TOTAL_LOSSES FROM USER_LOSSES GROUP BY USER; CREATE TABLE STATS_PER_USER AS SELECT UG.USER AS USER, MAX(UG.GAME->SCORE) AS HIGHEST_SCORE, MAX(UG.GAME->LEVEL) AS HIGHEST_LEVEL, MAX(CASE WHEN LPU.TOTAL_LOSSES IS NULL THEN CAST(0 AS BIGINT) ELSE LPU.TOTAL_LOSSES END) AS TOTAL_LOSSES FROM USER_GAME UG LEFT JOIN LOSSES_PER_USER LPU ON UG.USER = LPU.USER GROUP BY UG.USER; Player user_game user_losses KSQL Loss per User losses_per_user KSQL User Stats stats_per_user Leaderboard CREATE TABLE SUMMARY_STATS AS SELECT 'SUMMARY_KEY' AS SUMMARY_KEY, MAX(GAME->SCORE) AS HIGHEST_SCORE_VALUE, COLLECT_SET(USER) AS USERS_SET_VALUE FROM USER_GAME GROUP BY 'SUMMARY_KEY'; KSQL Summary Stats summary_stats
  • 31. Pattern : Customer 360 35 Customers create table user as select * from customers c inner join marketing_yn m on c.rowkey=m.rowkey where c.age>=20 and c.gender='M' and ((c.add='SEOUL' or c.add='INCHEON') or c.add='BUSAN') emit changes; 사용자 정보 마케팅 동의 정보 stream table process 마케팅 동의한 사용자 중 20대의 서울/인천/부산에 거주중인 남성 create stream events_enrich as select * from events e inner join user u on e.user_id=u.rowkey where category_code='electronics.tablet' partition by e.user_id emit changes; create table events_windowed as select user_id, array_distinct(collect_list(product_id)) product_id, timestamptostring(windowstart,'yyyy-MM- dd','UTC') event_date from events_enrich window tumbling(size 24 hours) group by user_id having array_length(array_distinct(collect_list(product_id )))>=5 emit changes; 이벤트 (거래내역, 구매내역, 사용자 액티비티) 특정 사용자 그룹의 이벤트 하루에 주문거래 5건 이산의 사용자
  • 34. 스트림이나 테이블에 데이터 입력 UI Native Java Client ksql> INSERT INTO people VALUES('Mary', 'Smith'); CLI ksqlDB KsqlObject row = new KsqlObject() .put(“PERSON”, “robin”) .put(“LOCATION”, “Manchester”); //insert data into stream client.insertInto(“MOVEMENTS”, row).get(); RESTFul API
  • 35. Kafka 에 데이터 읽고 / 쓰기 people_topic ksqlDB
  • 36. Kafka 에 데이터 읽고 / 쓰기 people_topic CREATE STREAM people WITH(KAFKA_TOPIC='people_topic', VALUE_FORMAT='AVRO'); ksqlDB
  • 37. Kafka 에 데이터 읽고 / 쓰기 people_topic CREATE STREAM people WITH(KAFKA_TOPIC=‘people_topic', VALUE_FORMAT='AVRO'); CREATE TABLE departments( id INT PRIMARY KEY, name VARCHAR) WITH(KAFKA_TOPIC='dept_topic', PARTITIONS=3, VALUE_FORMAT='AVRO'); ksqlDB
  • 38. Kafka 에 데이터 읽고 / 쓰기 people_topic CREATE STREAM people WITH(KAFKA_TOPIC=‘people_topic', VALUE_FORMAT='AVRO'); CREATE TABLE departments( id INT PRIMARY KEY, name VARCHAR) WITH(KAFKA_TOPIC='dept_topic', PARTITIONS=3, VALUE_FORMAT='AVRO'); dept_topic ksqlDB
  • 39. Connect to Data Systems Right from ksqlDB Data Diode
  • 40. ksqlDB 에서 다른 시스템 연계하기
  • 41. ksqlDB 에서 다른 시스템 연계하기 CREATE SOURCE CONNECTOR SOURCE_MYSQL_01 WITH ( ‘connector.class’ = ‘MySqlConnector’, ‘database.hostname’ = ‘mysql’, ‘table.whitelist’ = ‘demo.customers’); SOURCES
  • 42. ksqlDB 에서 다른 시스템 연계하기 SINKS Amazon S3 Google BigQuer y CREATE SINK CONNECTOR SINK_ELASTIC_01 WITH ( ‘connector.class’ = ‘ElasticsearchConnector’, ‘connection.url’ = ‘http://elasticsearch:9200’, ‘topics’ = ‘orders’);
  • 44.
  • 45. Confluent 는 단순히 오픈소스 Apache Kafka 의 엔터프라이즈 버전이 아니다. 49 Fully Managed Connectors Stream Processing Enterprise Security & Governance …100s more features Confluent Server Multi-cloud SaaS & Private Cloud Kafka 는 Cloud Native(클라우드 네이티브)로 완전히 재설계됨 Complete, 엔터프라이즈 급 Data-in- Motion 플랫폼 완전 관리형 서비스 및 소프트웨어로 언제 어디서나(Everywhere) 사용 가능