SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Kafka 확장과 응용
2021.11.12 서장원
Apache Kafka
Ⅰ
Ⅱ
Ⅲ
카프카를 이용한 데이터 파이프라인 구축
카프카 스트림즈
카프카 SQL
데이터 파이프라인이란?
▶ 서로 다른 여러 시스템 간의 데이터 이동과 흐름을 말함
▶ 어느 한 단계의 출력이 다음 단계의 입력으로 이어지는 연결된 구조로서 수집과 정제, 집계 등을
동시에 병렬로 수행해 전체 시스템의 효율성을 추구
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
데이터 파이프라인 구축 시 고려사항
▶ 적시성 : 시간 단위의 배치부터 실시간 처리까지 데이터 흐름의 다양한 적시성 요구사항을 만족
▶ 신뢰성 : 단일 장애점을 없애고 신속하고 자동화된 복구가 가능
‘최소 한번’(at-least-once), ‘정확히 한번’(exactly-once) 등 다양한 방식의 데이터 전달 보장
▶ 처리량 : 매우 높은 처리량을 갖도록 수시로 확장과 조정이 가능해야 함
▶ 데이터 형식 : 다양한 형식의 데이터를 지원하고 제약이 없어야 함
▶ 보안 : 파이프라인을 거치는 데이터의 암호화 기능
파이프라인에 데이터를 읽거나 쓸 때의 인증 기능 제공
▶ 변환 : ETL(추출-변환-적재) or ELT(추출-적재-변환)
▶ 장애처리 : 잘못된 데이터의 유입방지, 분석할 수 없는 데이터의 복구, 결함있는 데이터의 정정 등
▶ 결합방지 : 데이터를 제공하는 소스와 데이터를 받아 사용하는 대상의 결합방지 필요
NiFi, ElasticSearch, Spark, Hbase, Hive, Hue, etc…
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
▶ NiFi
- 분산 환경에서 대량의 데이터를 수집 및 처리할 수 있는 어플리케이션
- 웹 기반에 직관적인 인터페이스를 가지고 있어 접근성이 좋고 DataFlow를 쉽게 개발 가능
- 실시간 처리에 적합하고 데이터 추적이 쉬우며 NiFi 시스템 간 데이터 교환 가능
▶ ElasticSearch
- 아파치 루씬 기반의 분선형 RESTful 검색/분석 엔진
- 정형, 비정형, 위치정보, 메트릭 등 다양한 유형의 데이터를 원하는 방식으로 검색 및 결합 가능
- NoSQL 데이터베이스처럼 사용이 가능 및 내용 전체 색인해 특정 단어가 들어간 문서 검색 가능
▶ Spark
- 빅데이터 처리를 위한 오픈소스 병렬분산처리 플랫폼
- 인메모리 기반으로 고속 데이터 처리 가능하며, 일괄처리 작업 및 온라인 분석 처리에 유용
▶ Hbase
- 구글의 빅테이블을 모델로 개발된 column-based NoSQL DB
- 하둡의 HDS에서 동작하며 대량의 데이터를 안정적으로 다루는데 효과적임
▶ Hue
- 데이터를 탐색, 쿼리 및 시각화하기 위한 오픈소스 웹 기반 사용자 인터페이스
- 하둡과 하둡 에코시스템의 모니터링과 지원을 위한 인터페이스를 제공
▶ Hive
- 하둡을 기반으로 대용량 데이터를 질의하고 그 결과를 생성하는 SQL Query 엔진
- HiveQL 이라는 SQL 같은 언어를 제공하며 맵리듀스의 모든 기능을 제공함
카프카 활용 아키텍처 예시
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
카프카 활용 아키텍처 예시
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
Netfilx
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
▶ 실시간 모니터링 과 이벤트 처리를 위한 데이터 파이프라인의 백본 역할
▶ 초당 150만건 이상 생서외는 이용자의 로그 데이터를 카프카에 적재한 후 실시간 스트리밍 분석용
인프라를 이용해 이용자 반응에 실시간 대응
Uber
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
▶ 카프카를 이용해 분당 수백 번의 승차 관련 정보를 로그 데이터로 저장한 후 아마존 S3에 대량
로드하거나 하둡에 담아 스트리밍 처리
스포티파이
Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
▶ 카프카를 데이터 허브로 이용해 사용자의 각종 로그 정보를 수집하고 분석해 플레이리스트
자동 제공 서비스 등을 제공
카프카 스트림즈
Ⅱ. 카프카 스트림즈
▶ 카프카에 저장된 데이터를 처리하고 분석하기 위해 개발된 클라이언트 라이브러리
▶ 레코드별 스트림 처리를 milliseconds latency로 지원
▶ 자바나 스칼라 어플리케이션 안에서 카프카 스트림즈 API를 호출해 사용
▶ 손쉽게 스트림 프로세싱 프로그램을 만들 수 있도록 고수준의 스트림 DSL 지원
▶ DSL로 구혀한 프로세서들이 스트림 처리를 위해 서로 연결된 토폴로지를 만들어 처리
▶ 간단하고 가벼우며 시스템이나 카프카에 대한 의존성이 없음
▶ 카프카 브로커나 클라언트에 장애가 생겨도 스트림에 대해 1번만 처리되도록 보장
▶ 한 번에 한 레코드만 처리하며 이중화된 로컬 상태 저장소를 지원
카프카 스트림즈
▶ Kafka Stream DSL
- 스트림과 테이블에 대한 추상화 제공( Kstream, Ktable, GlobalKTable)
- 함수형 스타일의 다양한 transformation 제공(map, filter aggregation, join ,windowing)
- DSL을 사용해서 토폴로지를 구성할 수 있음
▶ DSL을 이용해 토폴로지를 구성하는 순서
1. 카프카 토픽으로부터 데이터를 읽어 들이는 input 스트림을 지정
- input topic -> Kstream : Kstream은 분할된 레코드 스트림을 나타낸다.
Input 토픽의 모든 파티션 데이터의 집합
- input topic -> Ktable : 키값의 중복여부에 따라 insert/update/delete로 해석됨
interactive queries를 지원 시 테이블 이름을 지정하지 않으면 사용불가
2. input 스트림의 Transformation 구성
- transformation operation 들은 하나 이상의 프로세서로 변형 및 체이닝되어 복잡한 토폴로지 구성
- KStream관련 Operation : 하나 이상의 KStream 이나 KTable을 생성
- KTable 관련 Operation : KTable 만 생성
3. output 스트림을 카프카 토픽에 기록
Ⅱ. 카프카 스트림즈
카프카 스트림즈
▶ Transformation
1. stateless transformation : 처리를 위해 상태를 저장할 필요가 없음(State Store 불필요)
- Branch : 조건에 따라 하나 이상의 Kstream으로 분리
- Filter : 특정 조건을 만족하면 output stream으로 전달
- FlatMap : 하나의 레코드로 0개 이상의 레코드를 생성할 때 사용
레코드의 Key, Value, Type을 바꿀 수 있음
- GroupByKey : 키를 이용해 레코드들을 그룹화. 테이블을 aggregation하기 위한 전제조건이며
후속 operation 들을 위해 레코드들이 Key로 적절히 분할되도록 함
- Map : 하나의 레코드를 다른 레코드로 만듬. Key, Value, Type을 수정할 수 있음
- MapValues : 하나의 레코드를 다른 레코드로 만듬. 이때 Key는 변하지 않고 Value만 변경
2. Stateful transformation : input 레코드를 처리하기 위해서 상태값에 의존(State Store 필요)
- Aggragating : 레코드들의 groupBy, groupByKey로 그룹화 되면 KGroupedStream 혹은
KGroupedTable로 표현됨.
또한 reduce, adder, subtractor 같은 연산을 통해 집계될 수 있음
- Joining : Stream과 Table의 조인, 데이터베이스의 변경된 데이터를 카프카로 보냄.
Stream API를 이용해 로컬 조인을 수행해서 원격 데이터베이스의 부하와 latency를
크게 줄일 수 있음
- Windowing : Windowing을 사용하면 aggregation이나 join같은 Stateful 연산을 할 때 같은
Key를 가지는 레코드들을 windows라고 불리는 그룹으로 그룹화할 수 있음.
Ⅱ. 카프카 스트림즈
카프카 SQL(KSQL)
▶ 카프카용 스트리밍 SQL 엔진
▶ 자바나 파이썬 같은 프로그래밍 언어로 코드를 만들 필요없이 간단한 유사 SQL문을 사용가능
▶ 필터링, 변환, 집계, 조인, 윈도우, 세션화 등의 강력한 기능을 사용할 수 있음
▶ 카프카 스트림즈 API와 마찬가지로 스트림과 테이블이라는 핵심적인 데이터 추상화 방법을 제공
▶ 자바나 스칼라에 익숙하지 않은 개발자나 데이터엔지니어, 아키텍트 등의 담당자에게 유용
▶ 현재는 KsqlDB라는 이름으로 변경되어 발전 중
Ⅲ. 카프카 SQL(KSQL)
카프카 SQL(KSQL)
▶ KSQL 아키텍처
- KSQL 엔진 : KSQL 쿼리가 실행되는 곳. KSQL 쿼리를 작성하고 실행하면 KSQL 서버 안에서
application을 빌드하고 실행함. 각 KSQL 서버는 KSQL 엔진을 인스턴트로 실행
- REST 인터페이스 : KSQL 엔진에 클라이언트로 접근할 수 있는 인터페이스
REST 서버는 KSQL 엔진과 통신하면서 어플리케이션과 REST 통신 시 사용
- KSQL CLI : 콘솔화면에서 Mysql이나 PostgresSQL의 CLI와 유사한 사용법으로 KSQL 엔진에
접근할 수 있도록 함
- KSQL UI : Confluent Control Center를 사용해 KSQL을 접근가능하게 도와줌
▶ KSQL 주요 용어
- STREAM : 구조화된 데이터의 연속된 흐름. 추가는 가능하지만 변경되거나 삭제되지 않음
스트림 데이터는 카프카 토픽이나 이미 존재하는 다른 스트림으로부터 파생하여 만듬
- TABLE : 전통적인 데이터베이스의 테이블과 거의 동일하며 스트림 혹은 windowing을 통해 더
효과적인 데이터를 얻을 수 있음. 업데이트/삭제할 수 있으며 카프카토픽이나 이미 존재하는
스트림 또는 테이블로부터 파생하여 만들 수 있음
- STRUCT : KSQL 5.0 보다 높은 버전을 사용하면 Avro 또는 JSON 형식의 데이터를 STRUCT 타입으로
stream 또는 table을 생성할 수 있음.
Ⅲ. 카프카 SQL(KSQL)
카프카 SQL(KSQL)
▶ KSQL 커스텀 function(UDF, UDAF)
- KSQL API를 사용해 커스텀 function들을 개발하여 추가할 수 있음
- Stateless scalar function(UDF)
-> User Defiend Function으로 불리는 scalar function은 1개의 row를 받으면 1개의 데이터를
output으로 리턴
Ⅲ. 카프카 SQL(KSQL)
카프카 SQL(KSQL) VS Kafka Streams
Ⅲ. 카프카 SQL(KSQL)
감사합니다.

Weitere ähnliche Inhalte

Was ist angesagt?

AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지Changje Jeong
 
Kafka 101 and Developer Best Practices
Kafka 101 and Developer Best PracticesKafka 101 and Developer Best Practices
Kafka 101 and Developer Best Practicesconfluent
 
Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring SANG WON PARK
 
AWS RDS Benchmark - Instance comparison
AWS RDS Benchmark - Instance comparisonAWS RDS Benchmark - Instance comparison
AWS RDS Benchmark - Instance comparisonRoberto Gaiser
 
ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!Guido Schmutz
 
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with KubernetesKubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with KubernetesSeungYong Oh
 
Apache Kafka Introduction
Apache Kafka IntroductionApache Kafka Introduction
Apache Kafka IntroductionAmita Mirajkar
 
Kafka at Peak Performance
Kafka at Peak PerformanceKafka at Peak Performance
Kafka at Peak PerformanceTodd Palino
 
Introduction to KSQL: Streaming SQL for Apache Kafka®
Introduction to KSQL: Streaming SQL for Apache Kafka®Introduction to KSQL: Streaming SQL for Apache Kafka®
Introduction to KSQL: Streaming SQL for Apache Kafka®confluent
 
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드confluent
 
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어NHN FORWARD
 
클라우드 네이티브를 위한 Confluent Cloud
클라우드 네이티브를 위한 Confluent Cloud클라우드 네이티브를 위한 Confluent Cloud
클라우드 네이티브를 위한 Confluent Cloudconfluent
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
 
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기Kee Hoon Lee
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?VMware Tanzu Korea
 

Was ist angesagt? (20)

AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
 
Kafka 101 and Developer Best Practices
Kafka 101 and Developer Best PracticesKafka 101 and Developer Best Practices
Kafka 101 and Developer Best Practices
 
Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring
 
AWS RDS Benchmark - Instance comparison
AWS RDS Benchmark - Instance comparisonAWS RDS Benchmark - Instance comparison
AWS RDS Benchmark - Instance comparison
 
ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!
 
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with KubernetesKubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
 
Apache Kafka Best Practices
Apache Kafka Best PracticesApache Kafka Best Practices
Apache Kafka Best Practices
 
Apache Kafka Introduction
Apache Kafka IntroductionApache Kafka Introduction
Apache Kafka Introduction
 
リペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudy
リペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudyリペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudy
リペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudy
 
Kafka on Pulsar
Kafka on Pulsar Kafka on Pulsar
Kafka on Pulsar
 
Kafka at Peak Performance
Kafka at Peak PerformanceKafka at Peak Performance
Kafka at Peak Performance
 
Introduction to KSQL: Streaming SQL for Apache Kafka®
Introduction to KSQL: Streaming SQL for Apache Kafka®Introduction to KSQL: Streaming SQL for Apache Kafka®
Introduction to KSQL: Streaming SQL for Apache Kafka®
 
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드
Confluent Workshop Series: ksqlDB로 스트리밍 앱 빌드
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
 
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
 
클라우드 네이티브를 위한 Confluent Cloud
클라우드 네이티브를 위한 Confluent Cloud클라우드 네이티브를 위한 Confluent Cloud
클라우드 네이티브를 위한 Confluent Cloud
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
 
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
실시간 이상탐지를 위한 머신러닝 모델에 Druid _ Imply 활용하기
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
 

Ähnlich wie Apache kafka 확장과 응용

Streaming platform Kafka in SK planet
Streaming platform Kafka in SK planetStreaming platform Kafka in SK planet
Streaming platform Kafka in SK planetByeongsu Kang
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기Ted Won
 
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
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache TajoGruter
 
spark database Service
spark database Servicespark database Service
spark database Service창언 정
 
Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지Kee Hoon Lee
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Catch, Traffic!] : 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Catch, Traffic!] : 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Catch, Traffic!] : 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Catch, Traffic!] : 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축BOAZ Bigdata
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인VMware Tanzu Korea
 
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista Community
 
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례SONG INSEOB
 
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)Ubuntu Korea Community
 
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017Amazon Web Services Korea
 
NetApp AI Control Plane
NetApp AI Control PlaneNetApp AI Control Plane
NetApp AI Control PlaneSeungYong Baek
 
OpenStack summit austin 2016
OpenStack summit austin 2016OpenStack summit austin 2016
OpenStack summit austin 2016Yongyoon Shin
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영NAVER D2
 
Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작Minchul Jung
 
AWS Cloud 환경으로​ DB Migration 전략 수립하기
AWS Cloud 환경으로​ DB Migration 전략 수립하기AWS Cloud 환경으로​ DB Migration 전략 수립하기
AWS Cloud 환경으로​ DB Migration 전략 수립하기BESPIN GLOBAL
 
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...Jemin Huh
 
AWS 9월 웨비나 | AWS 데이터베이스 마이그레이션 서비스 활용하기
AWS 9월 웨비나 | AWS 데이터베이스 마이그레이션 서비스 활용하기AWS 9월 웨비나 | AWS 데이터베이스 마이그레이션 서비스 활용하기
AWS 9월 웨비나 | AWS 데이터베이스 마이그레이션 서비스 활용하기Amazon Web Services Korea
 

Ähnlich wie Apache kafka 확장과 응용 (20)

Streaming platform Kafka in SK planet
Streaming platform Kafka in SK planetStreaming platform Kafka in SK planet
Streaming platform Kafka in SK planet
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
 
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)
SDDC(software defined data center)에서 NFV의 역할과 관리도구 (세미나 발표 자료)
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache Tajo
 
spark database Service
spark database Servicespark database Service
spark database Service
 
Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Catch, Traffic!] : 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Catch, Traffic!] : 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Catch, Traffic!] : 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Catch, Traffic!] : 지하철 혼잡도 및 키워드 분석 데이터 파이프라인 구축
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
 
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
 
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
 
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
 
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
NetApp AI Control Plane
NetApp AI Control PlaneNetApp AI Control Plane
NetApp AI Control Plane
 
OpenStack summit austin 2016
OpenStack summit austin 2016OpenStack summit austin 2016
OpenStack summit austin 2016
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영
 
Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작
 
AWS Cloud 환경으로​ DB Migration 전략 수립하기
AWS Cloud 환경으로​ DB Migration 전략 수립하기AWS Cloud 환경으로​ DB Migration 전략 수립하기
AWS Cloud 환경으로​ DB Migration 전략 수립하기
 
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
 
AWS 9월 웨비나 | AWS 데이터베이스 마이그레이션 서비스 활용하기
AWS 9월 웨비나 | AWS 데이터베이스 마이그레이션 서비스 활용하기AWS 9월 웨비나 | AWS 데이터베이스 마이그레이션 서비스 활용하기
AWS 9월 웨비나 | AWS 데이터베이스 마이그레이션 서비스 활용하기
 

Apache kafka 확장과 응용

  • 2. Apache Kafka Ⅰ Ⅱ Ⅲ 카프카를 이용한 데이터 파이프라인 구축 카프카 스트림즈 카프카 SQL
  • 3. 데이터 파이프라인이란? ▶ 서로 다른 여러 시스템 간의 데이터 이동과 흐름을 말함 ▶ 어느 한 단계의 출력이 다음 단계의 입력으로 이어지는 연결된 구조로서 수집과 정제, 집계 등을 동시에 병렬로 수행해 전체 시스템의 효율성을 추구 Ⅰ. 카프카를 이용한 데이터 파이프라인 구축 데이터 파이프라인 구축 시 고려사항 ▶ 적시성 : 시간 단위의 배치부터 실시간 처리까지 데이터 흐름의 다양한 적시성 요구사항을 만족 ▶ 신뢰성 : 단일 장애점을 없애고 신속하고 자동화된 복구가 가능 ‘최소 한번’(at-least-once), ‘정확히 한번’(exactly-once) 등 다양한 방식의 데이터 전달 보장 ▶ 처리량 : 매우 높은 처리량을 갖도록 수시로 확장과 조정이 가능해야 함 ▶ 데이터 형식 : 다양한 형식의 데이터를 지원하고 제약이 없어야 함 ▶ 보안 : 파이프라인을 거치는 데이터의 암호화 기능 파이프라인에 데이터를 읽거나 쓸 때의 인증 기능 제공 ▶ 변환 : ETL(추출-변환-적재) or ELT(추출-적재-변환) ▶ 장애처리 : 잘못된 데이터의 유입방지, 분석할 수 없는 데이터의 복구, 결함있는 데이터의 정정 등 ▶ 결합방지 : 데이터를 제공하는 소스와 데이터를 받아 사용하는 대상의 결합방지 필요
  • 4. NiFi, ElasticSearch, Spark, Hbase, Hive, Hue, etc… Ⅰ. 카프카를 이용한 데이터 파이프라인 구축 ▶ NiFi - 분산 환경에서 대량의 데이터를 수집 및 처리할 수 있는 어플리케이션 - 웹 기반에 직관적인 인터페이스를 가지고 있어 접근성이 좋고 DataFlow를 쉽게 개발 가능 - 실시간 처리에 적합하고 데이터 추적이 쉬우며 NiFi 시스템 간 데이터 교환 가능 ▶ ElasticSearch - 아파치 루씬 기반의 분선형 RESTful 검색/분석 엔진 - 정형, 비정형, 위치정보, 메트릭 등 다양한 유형의 데이터를 원하는 방식으로 검색 및 결합 가능 - NoSQL 데이터베이스처럼 사용이 가능 및 내용 전체 색인해 특정 단어가 들어간 문서 검색 가능 ▶ Spark - 빅데이터 처리를 위한 오픈소스 병렬분산처리 플랫폼 - 인메모리 기반으로 고속 데이터 처리 가능하며, 일괄처리 작업 및 온라인 분석 처리에 유용 ▶ Hbase - 구글의 빅테이블을 모델로 개발된 column-based NoSQL DB - 하둡의 HDS에서 동작하며 대량의 데이터를 안정적으로 다루는데 효과적임 ▶ Hue - 데이터를 탐색, 쿼리 및 시각화하기 위한 오픈소스 웹 기반 사용자 인터페이스 - 하둡과 하둡 에코시스템의 모니터링과 지원을 위한 인터페이스를 제공 ▶ Hive - 하둡을 기반으로 대용량 데이터를 질의하고 그 결과를 생성하는 SQL Query 엔진 - HiveQL 이라는 SQL 같은 언어를 제공하며 맵리듀스의 모든 기능을 제공함
  • 5. 카프카 활용 아키텍처 예시 Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
  • 6. 카프카 활용 아키텍처 예시 Ⅰ. 카프카를 이용한 데이터 파이프라인 구축
  • 7. Netfilx Ⅰ. 카프카를 이용한 데이터 파이프라인 구축 ▶ 실시간 모니터링 과 이벤트 처리를 위한 데이터 파이프라인의 백본 역할 ▶ 초당 150만건 이상 생서외는 이용자의 로그 데이터를 카프카에 적재한 후 실시간 스트리밍 분석용 인프라를 이용해 이용자 반응에 실시간 대응
  • 8. Uber Ⅰ. 카프카를 이용한 데이터 파이프라인 구축 ▶ 카프카를 이용해 분당 수백 번의 승차 관련 정보를 로그 데이터로 저장한 후 아마존 S3에 대량 로드하거나 하둡에 담아 스트리밍 처리
  • 9. 스포티파이 Ⅰ. 카프카를 이용한 데이터 파이프라인 구축 ▶ 카프카를 데이터 허브로 이용해 사용자의 각종 로그 정보를 수집하고 분석해 플레이리스트 자동 제공 서비스 등을 제공
  • 10. 카프카 스트림즈 Ⅱ. 카프카 스트림즈 ▶ 카프카에 저장된 데이터를 처리하고 분석하기 위해 개발된 클라이언트 라이브러리 ▶ 레코드별 스트림 처리를 milliseconds latency로 지원 ▶ 자바나 스칼라 어플리케이션 안에서 카프카 스트림즈 API를 호출해 사용 ▶ 손쉽게 스트림 프로세싱 프로그램을 만들 수 있도록 고수준의 스트림 DSL 지원 ▶ DSL로 구혀한 프로세서들이 스트림 처리를 위해 서로 연결된 토폴로지를 만들어 처리 ▶ 간단하고 가벼우며 시스템이나 카프카에 대한 의존성이 없음 ▶ 카프카 브로커나 클라언트에 장애가 생겨도 스트림에 대해 1번만 처리되도록 보장 ▶ 한 번에 한 레코드만 처리하며 이중화된 로컬 상태 저장소를 지원
  • 11. 카프카 스트림즈 ▶ Kafka Stream DSL - 스트림과 테이블에 대한 추상화 제공( Kstream, Ktable, GlobalKTable) - 함수형 스타일의 다양한 transformation 제공(map, filter aggregation, join ,windowing) - DSL을 사용해서 토폴로지를 구성할 수 있음 ▶ DSL을 이용해 토폴로지를 구성하는 순서 1. 카프카 토픽으로부터 데이터를 읽어 들이는 input 스트림을 지정 - input topic -> Kstream : Kstream은 분할된 레코드 스트림을 나타낸다. Input 토픽의 모든 파티션 데이터의 집합 - input topic -> Ktable : 키값의 중복여부에 따라 insert/update/delete로 해석됨 interactive queries를 지원 시 테이블 이름을 지정하지 않으면 사용불가 2. input 스트림의 Transformation 구성 - transformation operation 들은 하나 이상의 프로세서로 변형 및 체이닝되어 복잡한 토폴로지 구성 - KStream관련 Operation : 하나 이상의 KStream 이나 KTable을 생성 - KTable 관련 Operation : KTable 만 생성 3. output 스트림을 카프카 토픽에 기록 Ⅱ. 카프카 스트림즈
  • 12. 카프카 스트림즈 ▶ Transformation 1. stateless transformation : 처리를 위해 상태를 저장할 필요가 없음(State Store 불필요) - Branch : 조건에 따라 하나 이상의 Kstream으로 분리 - Filter : 특정 조건을 만족하면 output stream으로 전달 - FlatMap : 하나의 레코드로 0개 이상의 레코드를 생성할 때 사용 레코드의 Key, Value, Type을 바꿀 수 있음 - GroupByKey : 키를 이용해 레코드들을 그룹화. 테이블을 aggregation하기 위한 전제조건이며 후속 operation 들을 위해 레코드들이 Key로 적절히 분할되도록 함 - Map : 하나의 레코드를 다른 레코드로 만듬. Key, Value, Type을 수정할 수 있음 - MapValues : 하나의 레코드를 다른 레코드로 만듬. 이때 Key는 변하지 않고 Value만 변경 2. Stateful transformation : input 레코드를 처리하기 위해서 상태값에 의존(State Store 필요) - Aggragating : 레코드들의 groupBy, groupByKey로 그룹화 되면 KGroupedStream 혹은 KGroupedTable로 표현됨. 또한 reduce, adder, subtractor 같은 연산을 통해 집계될 수 있음 - Joining : Stream과 Table의 조인, 데이터베이스의 변경된 데이터를 카프카로 보냄. Stream API를 이용해 로컬 조인을 수행해서 원격 데이터베이스의 부하와 latency를 크게 줄일 수 있음 - Windowing : Windowing을 사용하면 aggregation이나 join같은 Stateful 연산을 할 때 같은 Key를 가지는 레코드들을 windows라고 불리는 그룹으로 그룹화할 수 있음. Ⅱ. 카프카 스트림즈
  • 13. 카프카 SQL(KSQL) ▶ 카프카용 스트리밍 SQL 엔진 ▶ 자바나 파이썬 같은 프로그래밍 언어로 코드를 만들 필요없이 간단한 유사 SQL문을 사용가능 ▶ 필터링, 변환, 집계, 조인, 윈도우, 세션화 등의 강력한 기능을 사용할 수 있음 ▶ 카프카 스트림즈 API와 마찬가지로 스트림과 테이블이라는 핵심적인 데이터 추상화 방법을 제공 ▶ 자바나 스칼라에 익숙하지 않은 개발자나 데이터엔지니어, 아키텍트 등의 담당자에게 유용 ▶ 현재는 KsqlDB라는 이름으로 변경되어 발전 중 Ⅲ. 카프카 SQL(KSQL)
  • 14. 카프카 SQL(KSQL) ▶ KSQL 아키텍처 - KSQL 엔진 : KSQL 쿼리가 실행되는 곳. KSQL 쿼리를 작성하고 실행하면 KSQL 서버 안에서 application을 빌드하고 실행함. 각 KSQL 서버는 KSQL 엔진을 인스턴트로 실행 - REST 인터페이스 : KSQL 엔진에 클라이언트로 접근할 수 있는 인터페이스 REST 서버는 KSQL 엔진과 통신하면서 어플리케이션과 REST 통신 시 사용 - KSQL CLI : 콘솔화면에서 Mysql이나 PostgresSQL의 CLI와 유사한 사용법으로 KSQL 엔진에 접근할 수 있도록 함 - KSQL UI : Confluent Control Center를 사용해 KSQL을 접근가능하게 도와줌 ▶ KSQL 주요 용어 - STREAM : 구조화된 데이터의 연속된 흐름. 추가는 가능하지만 변경되거나 삭제되지 않음 스트림 데이터는 카프카 토픽이나 이미 존재하는 다른 스트림으로부터 파생하여 만듬 - TABLE : 전통적인 데이터베이스의 테이블과 거의 동일하며 스트림 혹은 windowing을 통해 더 효과적인 데이터를 얻을 수 있음. 업데이트/삭제할 수 있으며 카프카토픽이나 이미 존재하는 스트림 또는 테이블로부터 파생하여 만들 수 있음 - STRUCT : KSQL 5.0 보다 높은 버전을 사용하면 Avro 또는 JSON 형식의 데이터를 STRUCT 타입으로 stream 또는 table을 생성할 수 있음. Ⅲ. 카프카 SQL(KSQL)
  • 15. 카프카 SQL(KSQL) ▶ KSQL 커스텀 function(UDF, UDAF) - KSQL API를 사용해 커스텀 function들을 개발하여 추가할 수 있음 - Stateless scalar function(UDF) -> User Defiend Function으로 불리는 scalar function은 1개의 row를 받으면 1개의 데이터를 output으로 리턴 Ⅲ. 카프카 SQL(KSQL)
  • 16. 카프카 SQL(KSQL) VS Kafka Streams Ⅲ. 카프카 SQL(KSQL)