SlideShare a Scribd company logo
1 of 13
Download to read offline
Apache Kafka e2e latency test
1
2020.12
freepsw
이벤트 발생시 얼마나 빠르게 데이터(1mb image)를 전달 할 수 있을까?
(REST API, Socket 통신보다 많이 느릴까?)
2
Kafka Latency Test 목표
AI(ML, DL)모델 서버에 실시간으로 영상/이미지(Drone, CCTV 등)을 빠르게 전달하는 용도로
Apache Kafka를 적용하는 것이 latency 측면에서 적절한지 검토
https://www.confluent.io/blog/optimizing-apache-kafka-deployment/
이번 테스트에서는 2가지 목표를 달성하기 위한 환경을 구성한다.
Latency 최소화에 집중 !
이미지 데이터 전송
(message size 1.3MB)
3
우리가 원하는 Apache Kafka의 역할은?
큰 용량의 이미지를 전달하면서, 가능한 빠르게(Low Latency) 전달
큰 용량의 이미지를 전달하려면? 빠르게(low latency) 전달하려면?
• Producer/Broker/Topic/Consumer가 한번에 많은 데이터 처리
• 하나의 message size가 큼 (1MB 이상)
• Socket Send/Receive Buffer 조정 à 많은 양을 더 빨리 전달
• Socket buffer가 부족하면,
• Kernel에서 데이터 전달을 지연시키거나,
• TCP에서 MTU(최대 전달 사이즈)를 줄여서, 전송이 늦어짐
• Producer : 기다림 없이 빨리 Broker로 전달
• Consumer : Broker에 저장된 즉시 데이터 수신
Send/Receive buffer size 최대화 Latency 최소화
4
요구하는 환경을 위한 Apache Kafka 설정은?
Latency는 producer/broker/consumer 전 과정에 영향
큰 사이즈의 이미지 전송을 위한 설정 Latency 최소화를 위한 설정
• Producer
• max.request.size=15000000(15Mb, 1개 메세지 최대 크기)
• send_buffer_bytes : 소켓 버퍼를 늘려서 NW 지연 방지
• Broker
• max.message.bytes=15000000
• Topic (Topic별 설정 필요함)
• max.message.bytes=15000000
• Consumer
• max.partition.fetch.bytes= 15000000
• Producer
• Linger.ms : 0 (기다리지 않고 가능한 빨리 전송)
• Consumer
• fetch.max.wait.ms : 0
• Broker에 데이터가 도착하면,
• 바로 consumer의 fetch request로 응답
5
[백업] 사용한 라이브러리의 기본(default) 설정 값 비교
아래 설정 값을 조정하면서 테스트를 진행하였으나, 성능개선 효과가 크지 않았음.
(라이브러리 자체의 성능을 넘어서지 못하는 것인지, 다른 옵션을 더 봐야하는지 확인이 필요함)
6
테스트 환경을 구성하자
Kafka의 최소 단위(partition 1개) 성능을 측정하기 위해 1대의 broker로 구성
• Socket/REST 방식이 중간에 거치는 과정이 없음
• Kafka의 경우 broker를 통해 2번의 통신 과정이 발생(latency 지연)
• Hardware
• GCP(asia-northeast3-a) : CentOS 7
• CPU : 8 cpus
• MEM : 32 GB
• DISK : pd-standard type (50G)
• hostname : kafka-test
• Software
• Apache Kafka (2.13-2.7.0)
• Python Library : kafka-python(v2.0.2), confluent-kafka(v1.5.0)
• Scala Library : kakfka client lib (org.apache.kafka.clients.*)
• JDK : 1.8.0
• Kafka
• Partition : 1
• Replica : 1
• Topic name : latency-test
• 총 20회의 메세지 전달
• Message Size : 1.3 mb (jpg)
테스트 환경 테스트 스펙
Kafka Cluster
Broker 1
Producer
Python-kafka
Python-confluent
Java-kafka
Consumer
Python-kafka
Python-confluent
Java-kafka
REST Client REST Server
Socket Client Socket Server
End to End Latency
7
[테스트 결과 - All] 특정 library를 제외하고는 0.5초 이내
Python-kafka 설정(producer/consumer)를 조정해 봤으나, latency가 줄지 않음.
Python-kafka의 성능이 너무 낮음
Seconds
8
[테스트 결과 – Top4] Socket/Rest가 역시 가장 빠르다.
Kakfa-confluent는 broker를 통해서 전달됨에도 성능이 나름 빠르게 나온다.
제일 처음 연결될 때 가장 latency가 높고,
이후 부터는 빠르게 줄어든다
Seconds
9
[테스트 결과 – Top4] 초기 연결을 제외한 평균 latency
첫번째 연결 시 latency를 제외하면, kafka-confluent 평균 latency가 조금 더 낮아짐
REST API 대비 2배 정도 느림
(0.003초 느림)
Seconds
10
Kafka library의 어느 구간에서 속도가 느리게 나올까?
Java E2E Latency
Producer latency
Consumer latency
Seconds
Kafka-confluent Latency
전체 기준으로 보면, producer의 latency를 줄이는 것이 중요하다.
(하지만, kafka-confluent의 성능을 개선하려면 consumer의 latency를 더 낮추기 위한 고민이 필요)
Producer 구간의 latency가 낮아지면서,
전체 latency가 개선됨
11
테스트 결과 정리
Kafka를 사용하는 것이 Socket/REST API 보다는 느리지만,
6ms 정도의 낮은 latency를 보장함
1mb 이상의 메세지 전송 낮은 latency 보장
[ 고려사항 ]
• 네트워크 대역폭 확보를 통한 대용량 메세지 전달 가능
한 환경 구성 필요
• Async 전송(Producer)을 위해서 socket buffer의 크기
증가 필요 (send_buffer_bytes)
• 너무 작으면 broker에 전달 되지 못하고 유실되는
현상
[ 고려사항 ]
• 너무 낮은 latency를 위한 설정은 전체 throughput이 감
소하는 현상 유발
• 비즈니스 목적에 따라 latency의 최대 허용 가능한 수준
을 정하고, 이에 맞는 설정이 필요
12
테스트에 사용한 코드들
https://github.com/freepsw/kafka-latency-test.git
13
END

More Related Content

What's hot

Stream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NETStream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NETconfluent
 
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaProducer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaJiangjie Qin
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)Hyojun Jeon
 
Apache kafka 확장과 응용
Apache kafka 확장과 응용Apache kafka 확장과 응용
Apache kafka 확장과 응용JANGWONSEO4
 
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )SANG WON PARK
 
스타트업을 위한 Confluent 웨비나 3탄
스타트업을 위한 Confluent 웨비나 3탄스타트업을 위한 Confluent 웨비나 3탄
스타트업을 위한 Confluent 웨비나 3탄confluent
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
 
[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자Oracle Korea
 
How Netflix Tunes EC2 Instances for Performance
How Netflix Tunes EC2 Instances for PerformanceHow Netflix Tunes EC2 Instances for Performance
How Netflix Tunes EC2 Instances for PerformanceBrendan Gregg
 
Handle Large Messages In Apache Kafka
Handle Large Messages In Apache KafkaHandle Large Messages In Apache Kafka
Handle Large Messages In Apache KafkaJiangjie Qin
 
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기YongSung Yoon
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
 
ksqlDB: A Stream-Relational Database System
ksqlDB: A Stream-Relational Database SystemksqlDB: A Stream-Relational Database System
ksqlDB: A Stream-Relational Database Systemconfluent
 
Microservices with event source and CQRS
Microservices with event source and CQRSMicroservices with event source and CQRS
Microservices with event source and CQRSMd Ayub Ali Sarker
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영NAVER D2
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 YoungSu Son
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법Open Source Consulting
 
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
Aws glue를 통한 손쉬운 데이터 전처리 작업하기Aws glue를 통한 손쉬운 데이터 전처리 작업하기
Aws glue를 통한 손쉬운 데이터 전처리 작업하기Amazon Web Services Korea
 

What's hot (20)

Stream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NETStream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NET
 
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaProducer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache Kafka
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
 
Apache kafka 확장과 응용
Apache kafka 확장과 응용Apache kafka 확장과 응용
Apache kafka 확장과 응용
 
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
 
스타트업을 위한 Confluent 웨비나 3탄
스타트업을 위한 Confluent 웨비나 3탄스타트업을 위한 Confluent 웨비나 3탄
스타트업을 위한 Confluent 웨비나 3탄
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자
 
How Netflix Tunes EC2 Instances for Performance
How Netflix Tunes EC2 Instances for PerformanceHow Netflix Tunes EC2 Instances for Performance
How Netflix Tunes EC2 Instances for Performance
 
Handle Large Messages In Apache Kafka
Handle Large Messages In Apache KafkaHandle Large Messages In Apache Kafka
Handle Large Messages In Apache Kafka
 
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
 
ksqlDB: A Stream-Relational Database System
ksqlDB: A Stream-Relational Database SystemksqlDB: A Stream-Relational Database System
ksqlDB: A Stream-Relational Database System
 
Microservices with event source and CQRS
Microservices with event source and CQRSMicroservices with event source and CQRS
Microservices with event source and CQRS
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우
 
Kafka 101
Kafka 101Kafka 101
Kafka 101
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
 
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
Aws glue를 통한 손쉬운 데이터 전처리 작업하기Aws glue를 통한 손쉬운 데이터 전처리 작업하기
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
 

Similar to Apache kafka performance(latency)_benchmark_v0.3

[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis ClusterNAVER D2
 
지금 핫한 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
 
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823Jongsoo Jeong
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...hoondong kim
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack CommunityOpen Source Consulting
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우jieunsys
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기Jinuk Kim
 
Streaming platform Kafka in SK planet
Streaming platform Kafka in SK planetStreaming platform Kafka in SK planet
Streaming platform Kafka in SK planetByeongsu Kang
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Esun Kim
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How ToJi-Woong Choi
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회JaM2in
 
ApacheCon2011 에서는 무슨일이
ApacheCon2011 에서는 무슨일이ApacheCon2011 에서는 무슨일이
ApacheCon2011 에서는 무슨일이Sangmin Lee
 
Advanced nGrinder 2nd Edition
Advanced nGrinder 2nd EditionAdvanced nGrinder 2nd Edition
Advanced nGrinder 2nd EditionJunHo Yoon
 

Similar to Apache kafka performance(latency)_benchmark_v0.3 (20)

[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
Warp
WarpWarp
Warp
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
 
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
 
Streaming platform Kafka in SK planet
Streaming platform Kafka in SK planetStreaming platform Kafka in SK planet
Streaming platform Kafka in SK planet
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
 
ApacheCon2011 에서는 무슨일이
ApacheCon2011 에서는 무슨일이ApacheCon2011 에서는 무슨일이
ApacheCon2011 에서는 무슨일이
 
NoSQL
NoSQLNoSQL
NoSQL
 
Advanced nGrinder 2nd Edition
Advanced nGrinder 2nd EditionAdvanced nGrinder 2nd Edition
Advanced nGrinder 2nd Edition
 

More from SANG WON PARK

Trends_of_MLOps_tech_in_business
Trends_of_MLOps_tech_in_businessTrends_of_MLOps_tech_in_business
Trends_of_MLOps_tech_in_businessSANG WON PARK
 
Cloud DW technology trends and considerations for enterprises to apply snowflake
Cloud DW technology trends and considerations for enterprises to apply snowflakeCloud DW technology trends and considerations for enterprises to apply snowflake
Cloud DW technology trends and considerations for enterprises to apply snowflakeSANG WON PARK
 
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)SANG WON PARK
 
AWS EMR Cost optimization
AWS EMR Cost optimizationAWS EMR Cost optimization
AWS EMR Cost optimizationSANG WON PARK
 
Optane DC Persistent Memory(DCPMM) 성능 테스트
Optane DC Persistent Memory(DCPMM) 성능 테스트Optane DC Persistent Memory(DCPMM) 성능 테스트
Optane DC Persistent Memory(DCPMM) 성능 테스트SANG WON PARK
 
boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)SANG WON PARK
 
Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리SANG WON PARK
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리SANG WON PARK
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)SANG WON PARK
 
코드로 이해하는 Back_propagation(cs231n)
코드로 이해하는 Back_propagation(cs231n)코드로 이해하는 Back_propagation(cs231n)
코드로 이해하는 Back_propagation(cs231n)SANG WON PARK
 
Rancher Simple User Guide
Rancher Simple User GuideRancher Simple User Guide
Rancher Simple User GuideSANG WON PARK
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)SANG WON PARK
 
Reinforcement learning v0.5
Reinforcement learning v0.5Reinforcement learning v0.5
Reinforcement learning v0.5SANG WON PARK
 
Code로 이해하는 RNN
Code로 이해하는 RNNCode로 이해하는 RNN
Code로 이해하는 RNNSANG WON PARK
 
Hadoop eco story 이해
Hadoop eco story 이해Hadoop eco story 이해
Hadoop eco story 이해SANG WON PARK
 

More from SANG WON PARK (15)

Trends_of_MLOps_tech_in_business
Trends_of_MLOps_tech_in_businessTrends_of_MLOps_tech_in_business
Trends_of_MLOps_tech_in_business
 
Cloud DW technology trends and considerations for enterprises to apply snowflake
Cloud DW technology trends and considerations for enterprises to apply snowflakeCloud DW technology trends and considerations for enterprises to apply snowflake
Cloud DW technology trends and considerations for enterprises to apply snowflake
 
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)
 
AWS EMR Cost optimization
AWS EMR Cost optimizationAWS EMR Cost optimization
AWS EMR Cost optimization
 
Optane DC Persistent Memory(DCPMM) 성능 테스트
Optane DC Persistent Memory(DCPMM) 성능 테스트Optane DC Persistent Memory(DCPMM) 성능 테스트
Optane DC Persistent Memory(DCPMM) 성능 테스트
 
boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)
 
Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
 
코드로 이해하는 Back_propagation(cs231n)
코드로 이해하는 Back_propagation(cs231n)코드로 이해하는 Back_propagation(cs231n)
코드로 이해하는 Back_propagation(cs231n)
 
Rancher Simple User Guide
Rancher Simple User GuideRancher Simple User Guide
Rancher Simple User Guide
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
 
Reinforcement learning v0.5
Reinforcement learning v0.5Reinforcement learning v0.5
Reinforcement learning v0.5
 
Code로 이해하는 RNN
Code로 이해하는 RNNCode로 이해하는 RNN
Code로 이해하는 RNN
 
Hadoop eco story 이해
Hadoop eco story 이해Hadoop eco story 이해
Hadoop eco story 이해
 

Apache kafka performance(latency)_benchmark_v0.3

  • 1. Apache Kafka e2e latency test 1 2020.12 freepsw 이벤트 발생시 얼마나 빠르게 데이터(1mb image)를 전달 할 수 있을까? (REST API, Socket 통신보다 많이 느릴까?)
  • 2. 2 Kafka Latency Test 목표 AI(ML, DL)모델 서버에 실시간으로 영상/이미지(Drone, CCTV 등)을 빠르게 전달하는 용도로 Apache Kafka를 적용하는 것이 latency 측면에서 적절한지 검토 https://www.confluent.io/blog/optimizing-apache-kafka-deployment/ 이번 테스트에서는 2가지 목표를 달성하기 위한 환경을 구성한다. Latency 최소화에 집중 ! 이미지 데이터 전송 (message size 1.3MB)
  • 3. 3 우리가 원하는 Apache Kafka의 역할은? 큰 용량의 이미지를 전달하면서, 가능한 빠르게(Low Latency) 전달 큰 용량의 이미지를 전달하려면? 빠르게(low latency) 전달하려면? • Producer/Broker/Topic/Consumer가 한번에 많은 데이터 처리 • 하나의 message size가 큼 (1MB 이상) • Socket Send/Receive Buffer 조정 à 많은 양을 더 빨리 전달 • Socket buffer가 부족하면, • Kernel에서 데이터 전달을 지연시키거나, • TCP에서 MTU(최대 전달 사이즈)를 줄여서, 전송이 늦어짐 • Producer : 기다림 없이 빨리 Broker로 전달 • Consumer : Broker에 저장된 즉시 데이터 수신 Send/Receive buffer size 최대화 Latency 최소화
  • 4. 4 요구하는 환경을 위한 Apache Kafka 설정은? Latency는 producer/broker/consumer 전 과정에 영향 큰 사이즈의 이미지 전송을 위한 설정 Latency 최소화를 위한 설정 • Producer • max.request.size=15000000(15Mb, 1개 메세지 최대 크기) • send_buffer_bytes : 소켓 버퍼를 늘려서 NW 지연 방지 • Broker • max.message.bytes=15000000 • Topic (Topic별 설정 필요함) • max.message.bytes=15000000 • Consumer • max.partition.fetch.bytes= 15000000 • Producer • Linger.ms : 0 (기다리지 않고 가능한 빨리 전송) • Consumer • fetch.max.wait.ms : 0 • Broker에 데이터가 도착하면, • 바로 consumer의 fetch request로 응답
  • 5. 5 [백업] 사용한 라이브러리의 기본(default) 설정 값 비교 아래 설정 값을 조정하면서 테스트를 진행하였으나, 성능개선 효과가 크지 않았음. (라이브러리 자체의 성능을 넘어서지 못하는 것인지, 다른 옵션을 더 봐야하는지 확인이 필요함)
  • 6. 6 테스트 환경을 구성하자 Kafka의 최소 단위(partition 1개) 성능을 측정하기 위해 1대의 broker로 구성 • Socket/REST 방식이 중간에 거치는 과정이 없음 • Kafka의 경우 broker를 통해 2번의 통신 과정이 발생(latency 지연) • Hardware • GCP(asia-northeast3-a) : CentOS 7 • CPU : 8 cpus • MEM : 32 GB • DISK : pd-standard type (50G) • hostname : kafka-test • Software • Apache Kafka (2.13-2.7.0) • Python Library : kafka-python(v2.0.2), confluent-kafka(v1.5.0) • Scala Library : kakfka client lib (org.apache.kafka.clients.*) • JDK : 1.8.0 • Kafka • Partition : 1 • Replica : 1 • Topic name : latency-test • 총 20회의 메세지 전달 • Message Size : 1.3 mb (jpg) 테스트 환경 테스트 스펙 Kafka Cluster Broker 1 Producer Python-kafka Python-confluent Java-kafka Consumer Python-kafka Python-confluent Java-kafka REST Client REST Server Socket Client Socket Server End to End Latency
  • 7. 7 [테스트 결과 - All] 특정 library를 제외하고는 0.5초 이내 Python-kafka 설정(producer/consumer)를 조정해 봤으나, latency가 줄지 않음. Python-kafka의 성능이 너무 낮음 Seconds
  • 8. 8 [테스트 결과 – Top4] Socket/Rest가 역시 가장 빠르다. Kakfa-confluent는 broker를 통해서 전달됨에도 성능이 나름 빠르게 나온다. 제일 처음 연결될 때 가장 latency가 높고, 이후 부터는 빠르게 줄어든다 Seconds
  • 9. 9 [테스트 결과 – Top4] 초기 연결을 제외한 평균 latency 첫번째 연결 시 latency를 제외하면, kafka-confluent 평균 latency가 조금 더 낮아짐 REST API 대비 2배 정도 느림 (0.003초 느림) Seconds
  • 10. 10 Kafka library의 어느 구간에서 속도가 느리게 나올까? Java E2E Latency Producer latency Consumer latency Seconds Kafka-confluent Latency 전체 기준으로 보면, producer의 latency를 줄이는 것이 중요하다. (하지만, kafka-confluent의 성능을 개선하려면 consumer의 latency를 더 낮추기 위한 고민이 필요) Producer 구간의 latency가 낮아지면서, 전체 latency가 개선됨
  • 11. 11 테스트 결과 정리 Kafka를 사용하는 것이 Socket/REST API 보다는 느리지만, 6ms 정도의 낮은 latency를 보장함 1mb 이상의 메세지 전송 낮은 latency 보장 [ 고려사항 ] • 네트워크 대역폭 확보를 통한 대용량 메세지 전달 가능 한 환경 구성 필요 • Async 전송(Producer)을 위해서 socket buffer의 크기 증가 필요 (send_buffer_bytes) • 너무 작으면 broker에 전달 되지 못하고 유실되는 현상 [ 고려사항 ] • 너무 낮은 latency를 위한 설정은 전체 throughput이 감 소하는 현상 유발 • 비즈니스 목적에 따라 latency의 최대 허용 가능한 수준 을 정하고, 이에 맞는 설정이 필요