1일 수천대의 서버에서 발생하는 30~50억건의 Log와 Metric을 처리하는 Planet Mon 을 지탱하는 기술인 Collection(Collectd, NXlog), Transport(Kakfa, Logstash), Log Stream Analytics, Storage(Elasticsearch), Visualization을 구성하는 Architecture에 대해 설명드리고 제가 개발한 Log Stream Analytics 서버들의 구현 기술에 대해 좀더 상세히 설명합니다.
1일 수천대의 서버에서 발생하는 30~50억건의 Log와 Metric을 처리하는 Planet Mon 을 지탱하는 기술인 Collection(Collectd, NXlog), Transport(Kakfa, Logstash), Log Stream Analytics, Storage(Elasticsearch), Visualization을 구성하는 Architecture에 대해 설명드리고 제가 개발한 Log Stream Analytics 서버들의 구현 기술에 대해 좀더 상세히 설명합니다.
2014년 5월 28일 일본에서 진행된 AWS 기술 웨비나의 발표 자료를 한국의 정윤진 솔루션스 아키텍트가 한글로 번역한 자료입니다. 웨비나 당시와 현재의 내용이 상이한 부분이 있을 수 있으니 자료 열람에 이 점 참고하시기 바라며, 혹 내용에 대한 문의사항이 있으신 경우 info-kr@amazon.com으로 연락 부탁드리겠습니다.
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈Minwoo Kim
1년 7개월 장수 모바일 게임 쿠키런. 많은 유저, 하루에도 쏟아지는 많은 로그. Time To Market 단축이 핵심 역량 중 하나가 되는 모바일 게임 시장. 자주 빠르게 변경되는 스팩, 로그도 마찬가지로 자주 빠르게 변경되는 스키마. 이런 현실속에서 게임 개발과 운영, 데이터 분석까지 병행 하기 위해서 가볍고 유연한 아키텍처로 적당히 빠르게 데이터 분석을 하는 쿠키런 서버팀 사례를 소개합니다.
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
Apache Kafak의 성능이 특정환경(데이터 유실일 발생하지 않고, 데이터 전송순서를 반드시 보장)에서 어느정도 제공하는지 확인하기 위한 테스트 결과 공유
데이터 전송순서를 보장하기 위해서는 Apache Kafka cluster로 partition을 분산할 수 없게되므로, 성능향상을 위한 장점을 사용하지 못하게 된다.
이번 테스트에서는 Apache Kafka의 단위 성능, 즉 partition 1개에 대한 성능만을 측정하게 된다.
향후, partition을 증가할 경우 본 테스트의 1개 partition 단위 성능을 기준으로 예측이 가능할 것 같다.
Apache kafka performance(latency)_benchmark_v0.3SANG WON PARK
Apache Kafka를 이용하여 이미지 데이터를 얼마나 빠르게(with low latency) 전달 가능한지 성능 테스트.
최종 목적은 AI(ML/DL) 모델의 입력으로 대량의 실시간 영상/이미지 데이터를 전달하는 메세지 큐로 사용하기 위하여, Drone/제조공정 등의 장비에서 전송된 이미지를 얼마나 빨리 AI Model로 전달 할 수 있는지 확인하기 위함.
그래서 Kafka에서 이미지를 전송하는 간단한 테스트를 진행하였고,
이 과정에서 latency를 얼마나 줄여주는지를 확인해 보았다.(HTTP 프로토콜/Socket과 비교하여)
[현재 까지 결론]
- Apache Kafka는 대량의 요청 처리를 위한 throughtput에 최적화 된 솔루션임.
- 현재는 producer의 몇가지 옵션만 조정하여 테스트한 결과이므로,
- 잠정적인 결과이지만, kafka의 latency를 향상을 위해서는 많은 시도가 필요할 것 같음.
- 즉, 단일 요청의 latency는 확실히 느리지만,
- 대량의 처리를 기준으로 평균 latency를 비교하면 평균적인 latency는 많이 낮아짐.
Test Code : https://github.com/freepsw/kafka-latency-test
– Elastic stack과 Data pipeline의 개념
– 데이터의 종류와 형태 / Document 데이터 모델링 (mapping, data type)
– 분산 데이터 저장소 관점에서의 Elasticsearch (index, shard & replica, segment)
https://learningspoons.com/course/detail/elastic-stack/
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon Web Services Korea
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성
게임 서비스 아키텍처에서 관계형 데이터베이스는 핵심 컴포넌트이며 또한 전체 서비스의 성능 병목 지점이 되곤 합니다. 이 세션에서는 AWS 상에서 게임 서비스를 구현할 때, 기존 물리환경에서의 DB 성능과 동일하거나 더 높은 성능을 얻을 수 있는 구성을 설명 드리며, MS SQL 구성의 성능 데모를 시연하고자 합니다.
Understanding of Apache kafka metrics for monitoring SANG WON PARK
2019 kafka conference seould에서 발표한 "Apache Kafka 모니터링을 위한 Metrics 이해" 슬라이드 자료
기존 2018년 자료에서 모니터링 관점에서 중요한 metrcis를 중심으로 정리하였고, 2019년 기준으로 추가/변경된 metrics를 반영하였다.
주용 내용은
- 업무에 최적화된 apache kafka 모니터링을 하려면?
- 어떤 정보를 모니터링 해야 할까?
- 적시성 관점의 모니터링 지표 (TotalTimeMs에 대한 세부 구조 이해)
- 안정성 관점의 모니터링 지표 (데이터 유실이 없이 중단없는 서비스)
- 언제 apache kafka 클러스터를 확장해야 할까? (어떤 지표를 봐야 할까?)
위 모든 지표는 producer/broker/consumer 3가지 측면에서 검토하였다.
컨퍼런스 영상 링크 : https://www.youtube.com/watch?v=p2RGsTOCHAg
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
Gonnector(고넥터) 고영혁 대표가 주최한 스타트업 데이터 활용 세미나 '우리가 데이터를 쓰는 법' 의 세 번째 발표 자료
세미나 : 우리가 데이터를 쓰는 법 (How We Use Data)
일시 : 2016년 4월 12일 화요일 10:00 ~ 18:00
장소 : 마루180 (Maru180) B1 Think 홀
제목 : 모바일 게임 로그 데이터 분석 이야기
연사 : 엔터메이트 공신배 팀장
2014년 5월 28일 일본에서 진행된 AWS 기술 웨비나의 발표 자료를 한국의 정윤진 솔루션스 아키텍트가 한글로 번역한 자료입니다. 웨비나 당시와 현재의 내용이 상이한 부분이 있을 수 있으니 자료 열람에 이 점 참고하시기 바라며, 혹 내용에 대한 문의사항이 있으신 경우 info-kr@amazon.com으로 연락 부탁드리겠습니다.
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈Minwoo Kim
1년 7개월 장수 모바일 게임 쿠키런. 많은 유저, 하루에도 쏟아지는 많은 로그. Time To Market 단축이 핵심 역량 중 하나가 되는 모바일 게임 시장. 자주 빠르게 변경되는 스팩, 로그도 마찬가지로 자주 빠르게 변경되는 스키마. 이런 현실속에서 게임 개발과 운영, 데이터 분석까지 병행 하기 위해서 가볍고 유연한 아키텍처로 적당히 빠르게 데이터 분석을 하는 쿠키런 서버팀 사례를 소개합니다.
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
Apache Kafak의 성능이 특정환경(데이터 유실일 발생하지 않고, 데이터 전송순서를 반드시 보장)에서 어느정도 제공하는지 확인하기 위한 테스트 결과 공유
데이터 전송순서를 보장하기 위해서는 Apache Kafka cluster로 partition을 분산할 수 없게되므로, 성능향상을 위한 장점을 사용하지 못하게 된다.
이번 테스트에서는 Apache Kafka의 단위 성능, 즉 partition 1개에 대한 성능만을 측정하게 된다.
향후, partition을 증가할 경우 본 테스트의 1개 partition 단위 성능을 기준으로 예측이 가능할 것 같다.
Apache kafka performance(latency)_benchmark_v0.3SANG WON PARK
Apache Kafka를 이용하여 이미지 데이터를 얼마나 빠르게(with low latency) 전달 가능한지 성능 테스트.
최종 목적은 AI(ML/DL) 모델의 입력으로 대량의 실시간 영상/이미지 데이터를 전달하는 메세지 큐로 사용하기 위하여, Drone/제조공정 등의 장비에서 전송된 이미지를 얼마나 빨리 AI Model로 전달 할 수 있는지 확인하기 위함.
그래서 Kafka에서 이미지를 전송하는 간단한 테스트를 진행하였고,
이 과정에서 latency를 얼마나 줄여주는지를 확인해 보았다.(HTTP 프로토콜/Socket과 비교하여)
[현재 까지 결론]
- Apache Kafka는 대량의 요청 처리를 위한 throughtput에 최적화 된 솔루션임.
- 현재는 producer의 몇가지 옵션만 조정하여 테스트한 결과이므로,
- 잠정적인 결과이지만, kafka의 latency를 향상을 위해서는 많은 시도가 필요할 것 같음.
- 즉, 단일 요청의 latency는 확실히 느리지만,
- 대량의 처리를 기준으로 평균 latency를 비교하면 평균적인 latency는 많이 낮아짐.
Test Code : https://github.com/freepsw/kafka-latency-test
– Elastic stack과 Data pipeline의 개념
– 데이터의 종류와 형태 / Document 데이터 모델링 (mapping, data type)
– 분산 데이터 저장소 관점에서의 Elasticsearch (index, shard & replica, segment)
https://learningspoons.com/course/detail/elastic-stack/
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon Web Services Korea
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성
게임 서비스 아키텍처에서 관계형 데이터베이스는 핵심 컴포넌트이며 또한 전체 서비스의 성능 병목 지점이 되곤 합니다. 이 세션에서는 AWS 상에서 게임 서비스를 구현할 때, 기존 물리환경에서의 DB 성능과 동일하거나 더 높은 성능을 얻을 수 있는 구성을 설명 드리며, MS SQL 구성의 성능 데모를 시연하고자 합니다.
Understanding of Apache kafka metrics for monitoring SANG WON PARK
2019 kafka conference seould에서 발표한 "Apache Kafka 모니터링을 위한 Metrics 이해" 슬라이드 자료
기존 2018년 자료에서 모니터링 관점에서 중요한 metrcis를 중심으로 정리하였고, 2019년 기준으로 추가/변경된 metrics를 반영하였다.
주용 내용은
- 업무에 최적화된 apache kafka 모니터링을 하려면?
- 어떤 정보를 모니터링 해야 할까?
- 적시성 관점의 모니터링 지표 (TotalTimeMs에 대한 세부 구조 이해)
- 안정성 관점의 모니터링 지표 (데이터 유실이 없이 중단없는 서비스)
- 언제 apache kafka 클러스터를 확장해야 할까? (어떤 지표를 봐야 할까?)
위 모든 지표는 producer/broker/consumer 3가지 측면에서 검토하였다.
컨퍼런스 영상 링크 : https://www.youtube.com/watch?v=p2RGsTOCHAg
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
Gonnector(고넥터) 고영혁 대표가 주최한 스타트업 데이터 활용 세미나 '우리가 데이터를 쓰는 법' 의 세 번째 발표 자료
세미나 : 우리가 데이터를 쓰는 법 (How We Use Data)
일시 : 2016년 4월 12일 화요일 10:00 ~ 18:00
장소 : 마루180 (Maru180) B1 Think 홀
제목 : 모바일 게임 로그 데이터 분석 이야기
연사 : 엔터메이트 공신배 팀장
우리가 흔히 주변에서 알고 있는 컨텐츠 개발 툴을 살펴보겠습니다. Indesign, framemaker, robohelp, ms-word, 아래한글 등 다양한 도구들을 각각의 기업이나 고객의 요구에 맞게 사용하고 있습니다.
기업내 문서를 개발하는 현장을 살펴 보면, 파일당 작게는 몇십페이지에서 많게는 7~800 페이지가 넘는 것도 있습니다. 그리고 그러한 문서 파일을 자주 반복적으로 많이 만들어 내고 있습니다.
이 모든 파일들이 매번 새로운 내용의 컨텐츠를 담는다면 얼마나 좋겠습니다만, 통계적으로 보면 거의 7~80% 이상은 동일한 내용이며 일부분만 추가되거나 수정하고 있습니다
자주 반복사용되는 토픽을 청크화하여 모듈화하고, 파생 문서 제작에 재활용할 수 있는 방안을 소개드립니다.
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...Amazon Web Services Korea
대량의 트랜잭션을 빠르고 유연하게 처리하기 위해서는, 데이터 처리 및 저장 방식에 대한 변화를 고려해야 합니다. 본 세션에서는 어플리케이션이 요구하는 다양한 사용 패턴 및 성능 요구사항을 살펴보고, NoSQL(Elasticache Redis, DynamoDB)을 기반으로 이를 효율적으로 처리하기 위한 디자인 및 쿼리 패턴을 포함한 기술적 고려사항을 알아봅니다.
제 19회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [SPOAZ] : Spotify 기반 개인화 음악 추천 서비스 프로젝트BOAZ Bigdata
데이터 엔지니어링 프로젝트를 진행한 SPOAZ 팀에서는 아래와 같은 프로젝트를 진행했습니다.
Spotify 기반 개인화 음악 추천 서비스 프로젝트
20기 이해현 서울여자대학교 소프트웨어융합학과
20기 안소유 서울여자대학교 소프트웨어융합학과
20기 임혁 중앙대학교 응용통계학과
[ http://infiniflux.com/download ]
The world's fastest time series DBMS.
What is InfiniFlux?
1) InfiniFlux is a time-series database which performs real-time data processing, i.e., data are inserted at high speed, retrieved and analyzed without elapsed time.
2) InfiniFlux also compresses and stores data in real-time. Its query language and syntax complies with the SQL standard. The extended SQL syntax provides additional features such as the text search tool.
5. • 메타/로그 집계 현황 (18년9월기준)
• 로그 하루 40~50GB, 1억건 정도
• 클릭,재생,에러 3개의 type으로 구분, 클릭 3300만건, 시청 6600만건, 에러 100만건
• 2개의 하둡 저장소에 저장 (클릭/재생로그 1개, 에러로그 1개)
• 로그들은 제플린(HIVE쿼리)를 통해 조회 가능
• 서비스 제공 알고리즘
• DeepLearning(홈추천), Ranking, CF (Co-occurrence) ,MF (Matrix Factorization), NLP(Keyword, Content-based), 단순이력 (ex. 자
주본 시리즈의 다음회차)
• 전체 재생 중 25.8% 재생카운트가 추천시스템의 전시메뉴에서 발생 (18년 9월 기준)
• 성능 평가
• Metrics: 일별 성과분석툴
• A/B testing
Oksusu 추천 서비스
7. 홈 딥러닝 추천
Bi-LSTM Bi-LSTM Bi-LSTM Bi-LSTM
Bi-LSTM Bi-LSTM Bi-LSTM Bi-LSTM
Softmax
Fully Connected Layer
Sequence
Embdding
Average
Emedding
Em
Contents Metadata
genre
actors
title
synopsis
keywords
Contents Metadata
genre
actors
title
synopsis
keywords
Contents Metadata
genre
actors
title
synopsis
keywords
Doc2Vec
Contents Metadata
actors
title
synopsis
keywords
genre
actors
title
synopsis
keywords
Incremental Doc2Vec
Newly incoming
contents Extract similar contents based on Cosine Similarity
...
Embedding Vectors
...
• 딥러닝 추천 엔진
• 하이브리드 모델로 정확성&최신성을 높이고자 함
• 일단위 배치(RNN) + 시간단위 배치(Doc2Vec CBF)
• 정확도 (MAP: Mean Average Precision)
• 영화 11%, 예능/드라마: 13%, 클립: 22%
• 추천 플랫폼과는 elasticsearch, kafka를 통해 실시간 입출
력 데이터 연동 (메타데이터, 로그, 추천결과)
• 오픈소스 활용
• Tensorflow LSTM, Gensim Doc2Vec, Spark/하둡 로그처리, Airflow
워크플로우관리, Kibana 모니터링
8. • 추천 서비스 현황
• 하루당 220만명 유저의 개인화 리스트 제공가능 (유저당 50개)
• 개인별 하루 최대 12개의 다른 리스트 출력
• 현재는 전체 사용자의 5%만 제공중
• 기존편성과 성능비교를 통해 확대목표
• 엔진과 API 서빙시스템간 연동을 위해 Elasticsearch 도입
• 콘텐츠 메타 제공
• 트레이닝 결과 저장
• 추천엔진 출력에 대한 후보정 로직
• 개인별 선호 실시간채널을 홈추천에 추가 (최대3개)
• 시리즈들을 최신 회차로 변환 (배치주기 5분)
• 영상 타입에 맞춰 카드 타이틀을 생성
Redis
NCMS
Redis Cluster
ES
DL MF
CM
meta
DL + new title,
MF prediction
ranking
홈 딥러닝 추천
9. 홈 딥러닝 추천
• AB 테스트 성능평가
• 홈딥러닝추천 A(실험군)그룹 5% 적용, 기존편성 B(대조군)그룹 5% 적용
• 시청전환률 기준 A : B = 3.44(%) : 2.69(%)로 우세한 성능 보임
10. • 주요 메뉴(최신/무료/프리미어)에 MF 개인화 카드 추가 (2018년내 실서비스 제공예정)
• 엔진내 메타 필터를 추가 구현
• Elasticsearch 연동
• 메타데이터 및 추천 결과 저장을 위해 사용
• 기존 파일 I/F를 대체
• 성능 개선 및 오픈소스 버전 업데이트
• Predictionio 및 spark2.x 버전 업데이트
• predict function의 all scan 코드를 predict 대상 콘텐츠로 한정하여 prediction 시간 단축
MF 영화 As-is
User: 130만 명
Item: 1만개
To-be
User: 230만 명
Item: 1만개
Meta Collect 1h 1h
Train 40m 1h
Predict - I2I 5m 5m
Predict - U2I 2h 1h 20m
MF 추천 2018
11. • 오픈소스 PredictionIO 기반, SparkML ALS function 활용 MF 구현
• 입력: 평점 및 View 로그 (5점 scale)
• RMSE 1.04 (rank = 20, lambda = 10.0, alpha = 40.0)
• Item2Item 추천
• SparkML ALS function을 통해 item의 features를 추출
• consine 유사도를 활용하여 유사한 item 추천
MF 추천 엔진
12. 키워드 2.0 추천 (개요)
• 오픈소스 기반 High-end 키워드 추천 시스템 개발
• 영화/인물/댓글 정보 크롤링
• 영화 크롤링 데이터 저장/관리
• CMS 메타 정보 저장/관리
• BM25알고리즘 기반 키워드 스코어 정규화
• Rest API 제공
• 어드민 웹 페이지 제공
13. 키워드 2.0 추천 (구조)
• Java Spring 기반 크롤러/어드민 개발
• Elasticsearch 기반 데이터 저장/검색
• 은전한닢 기반 형태소분석
• RabbitMQ/Fluentd 기반 크롤링 데이터 적재
• Batch/Quartz 기반 스케줄링
15. • 동시시청 제어
• 동일계정으로 여러 단말으로부터의 동시시청 제한 기능
• LOGàFileBeatsàKafkaàSparkàRedisà동시 시청 여부 판단
• 랭킹
• LOGàFileBeatsà Kafkaà Spark StreamingàMySQLà 랭킹리스트서빙
• 실시간 채널 1분, 영화/방송/클립 15분 (N시간 sliding window 방식으로 동작)
• 통합 Top 100, 주간 인기, 가격대별, 요일별 등 세부랭킹 제공
• 뷰카운트 (2017년 기구축)
• 5초단위 주기
• LOGàFileBeatsàRedis QueueàLogstashàElasticsSearch집계à뷰카운트 서빙
랭킹 및 통계
동시 시청 제어
Near-실시간 랭킹
Beats
16. • 서빙 저장소 용량확장
• 총 저장용량 128GBà384GB로 확장
• 기존 Replication Farm 128GB 유지 + 레디스 클
러스터(서버4대) 256GB 추가
• Redis replication 적재 데이터
• 안정성이 필요한 데이터
• 랭킹, 시청이력 등
• Redis cluster 적재 데이터
• 개인화 관련 데이터들
• 딥러닝/MF 개인별 추천 리스트들
• 기타
• API 서버가 실시간성 비즈니스 로직을 처리
할 수 있도록 함
• 예) 시리즈의 회차를 최신 회차로 변경등
API 서빙 개선
A master
C slave
B master
D slave
C master
A slave
D master
B slave
성수 노드1
성수 노드2
수유 노드1
수유 노드2
17. • 실시간 성과 분석 기능 (5분단위)
• 로그 처리 주기를 일단위(하둡Hive기반) 에서 5분단위(kafka기반)로 단축
• 메뉴나 카드 배치 후 성과(사용자 반응)에 대해 실시간 모니터링 가능
• 콘텐츠레벨 분석 기능
• 성과를 발생시키는 주요 메뉴 분석
성과분석시스템(Metrics) 2018
18. • 성과 시각화 분석 시스템
• 시놉페이지, 시청, 구매, 전시 4개 지표 집계
• 4단계 계층 분석 구조 (3단메뉴 + 메뉴내카드)
• 메뉴 전시 대비 성과 수치를 %로 계산 및 시각화
• 오픈소스 적용
• 대시보드(Apache superset), Time-series datastore (Druid)
성과분석시스템(Metrics) 개요
19. • 사용성 개선
• 편성자 친화적인 어드민 툴 및 시뮬레이션 제공
• 다양한 AB 테스팅 실험기능 제공
• 딥러닝 및 MF 추천 개선
• 배치주기를 시간단위에서 수분단위로 줄여 Freshness 제공
• MAB 적용을 통해 온라인 파라미터 튜닝 및 성능 최적화
• 자연어처리(NLP) 추천 개선 방향
• 연관 검색어 제공, 키워드 랭킹, 개인별 선호키워드 뭉치 제공
• 지식 그래프 구축
• 비디오/이미지 분석 기반 추천 서비스 상용화
• Btv 서비스로의 연동
앞으로는?