[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
NDC18에서 발표하였습니다. 현재 보고 계신 슬라이드는 1부 입니다.(총 2부)
- 1부 링크: https://goo.gl/3v4DAa
- 2부 링크: https://goo.gl/wpoZpY
(SlideShare에 슬라이드 300장 제한으로 2부로 나누어 올렸습니다. 불편하시더라도 양해 부탁드립니다.)
Little Big Data #1 다양한 사람들의 데이터 사이언스 이야기에서 발표한 자료입니다
궁금한 것은 언제나 문의주세요 :)
행사 후기는 https://zzsza.github.io/etc/2018/04/21/little-big-data/ 에 있습니다!
(2018.5 내용 추가) 현재 회사가 없으니, 제게 관심있으신 분들도 연락 환영합니다 :)
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
Gonnector(고넥터) 고영혁 대표가 주최한 스타트업 데이터 활용 세미나 '우리가 데이터를 쓰는 법' 의 세 번째 발표 자료
세미나 : 우리가 데이터를 쓰는 법 (How We Use Data)
일시 : 2016년 4월 12일 화요일 10:00 ~ 18:00
장소 : 마루180 (Maru180) B1 Think 홀
제목 : 모바일 게임 로그 데이터 분석 이야기
연사 : 엔터메이트 공신배 팀장
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
NDC18에서 발표하였습니다. 현재 보고 계신 슬라이드는 1부 입니다.(총 2부)
- 1부 링크: https://goo.gl/3v4DAa
- 2부 링크: https://goo.gl/wpoZpY
(SlideShare에 슬라이드 300장 제한으로 2부로 나누어 올렸습니다. 불편하시더라도 양해 부탁드립니다.)
Little Big Data #1 다양한 사람들의 데이터 사이언스 이야기에서 발표한 자료입니다
궁금한 것은 언제나 문의주세요 :)
행사 후기는 https://zzsza.github.io/etc/2018/04/21/little-big-data/ 에 있습니다!
(2018.5 내용 추가) 현재 회사가 없으니, 제게 관심있으신 분들도 연락 환영합니다 :)
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
Gonnector(고넥터) 고영혁 대표가 주최한 스타트업 데이터 활용 세미나 '우리가 데이터를 쓰는 법' 의 세 번째 발표 자료
세미나 : 우리가 데이터를 쓰는 법 (How We Use Data)
일시 : 2016년 4월 12일 화요일 10:00 ~ 18:00
장소 : 마루180 (Maru180) B1 Think 홀
제목 : 모바일 게임 로그 데이터 분석 이야기
연사 : 엔터메이트 공신배 팀장
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
Apache Kafak의 빅데이터 아키텍처에서 역할이 점차 커지고, 중요한 비중을 차지하게 되면서, 성능에 대한 고민도 늘어나고 있다.
다양한 프로젝트를 진행하면서 Apache Kafka를 모니터링 하기 위해 필요한 Metrics들을 이해하고, 이를 최적화 하기 위한 Configruation 설정을 정리해 보았다.
[Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안]
Apache Kafka 성능 모니터링에 필요한 metrics에 대해 이해하고, 4가지 관점(처리량, 지연, Durability, 가용성)에서 성능을 최적화 하는 방안을 정리함. Kafka를 구성하는 3개 모듈(Producer, Broker, Consumer)별로 성능 최적화를 위한 …
[Apache Kafka 모니터링을 위한 Metrics 이해]
Apache Kafka의 상태를 모니터링 하기 위해서는 4개(System(OS), Producer, Broker, Consumer)에서 발생하는 metrics들을 살펴봐야 한다.
이번 글에서는 JVM에서 제공하는 JMX metrics를 중심으로 producer/broker/consumer의 지표를 정리하였다.
모든 지표를 정리하진 않았고, 내 관점에서 유의미한 지표들을 중심으로 이해한 내용임
[Apache Kafka 성능 Configuration 최적화]
성능목표를 4개로 구분(Throughtput, Latency, Durability, Avalibility)하고, 각 목표에 따라 어떤 Kafka configuration의 조정을 어떻게 해야하는지 정리하였다.
튜닝한 파라미터를 적용한 후, 성능테스트를 수행하면서 추출된 Metrics를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
한빛데브그라운드에서 발표했던 내용입니다.
발표 영상 : https://youtu.be/ohpfSLf0V3Y
--
스타트업 비즈니스에서 데이터를 활용한 전략 수립과 의사결정은 필수적인 요소입니다. 서비스 운영 데이터에서부터 다양한 고객의 행동 로그, 소셜 미디어 데이터까지 다양한 데이터를 모두 모아 분석 환경을 구축하기 위해서는 많은 준비와 고민이 필요합니다. 스타트업에서 빠른 속도와 최소한의 비용, 다양한 분석 Tool들과 연동되는 Data Pipeline, Data Lake, Data Warehouse 구축 경험기를 공유하고자 합니다. 이 과정을 통해 애널리틱스 파이프라인을 구축 과정과 S3, Glue, Athena,EMR, Quicksight와 같은 서버리스 애널리틱스 서비스에 대한 구축 사례를 확인하실 수 있습니다.
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
요즘 Hadoop 보다 더 뜨고 있는 Spark.
그 Spark의 핵심을 이해하기 위해서는 핵심 자료구조인 Resilient Distributed Datasets (RDD)를 이해하는 것이 필요합니다.
RDD가 어떻게 동작하는지, 원 논문을 리뷰하며 살펴보도록 합시다.
http://www.cs.berkeley.edu/~matei/papers/2012/sigmod_shark_demo.pdf
AWS Glue는 고객이 분석을 위해 손쉽게 데이터를 준비하고 로드할 수 있게 지원하는 완전관리형 ETL(추출, 변환 및 로드) 서비스입니다. AWS 관리 콘솔에서 클릭 몇 번으로 ETL 작업을 생성하고 실행할 수 있습니다. 빅데이터 분석 시 다양한 데이터 소스에 대한 전처리 작업을 할 때, 별도의 데이터 처리용 서버나 인프라를 관리할 필요가 없습니다. 본 세션에서는 지난 5월 서울 리전에 출시한 Glue 서비스에 대한 자세한 소개와 함께 다양한 활용 팁을 데모와 함께 소개해 드립니다.
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...Amazon Web Services Korea
AWS re:Invent에서는 다양한 고객들의 요구에 맞추어 새로운 분석 및 서버리스 서비스가 대거 출시되었습니다. 본 강연에서는 새롭게 출시된 핵심 분석 기능들과 함께, 누구나 손쉽게 사용할 수 있는 AWS의 분석 서버리스와 On-demand 기능들에 대한 심층적인 정보를 확인하실 수 있습니다.
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
Apache Kafak의 빅데이터 아키텍처에서 역할이 점차 커지고, 중요한 비중을 차지하게 되면서, 성능에 대한 고민도 늘어나고 있다.
다양한 프로젝트를 진행하면서 Apache Kafka를 모니터링 하기 위해 필요한 Metrics들을 이해하고, 이를 최적화 하기 위한 Configruation 설정을 정리해 보았다.
[Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안]
Apache Kafka 성능 모니터링에 필요한 metrics에 대해 이해하고, 4가지 관점(처리량, 지연, Durability, 가용성)에서 성능을 최적화 하는 방안을 정리함. Kafka를 구성하는 3개 모듈(Producer, Broker, Consumer)별로 성능 최적화를 위한 …
[Apache Kafka 모니터링을 위한 Metrics 이해]
Apache Kafka의 상태를 모니터링 하기 위해서는 4개(System(OS), Producer, Broker, Consumer)에서 발생하는 metrics들을 살펴봐야 한다.
이번 글에서는 JVM에서 제공하는 JMX metrics를 중심으로 producer/broker/consumer의 지표를 정리하였다.
모든 지표를 정리하진 않았고, 내 관점에서 유의미한 지표들을 중심으로 이해한 내용임
[Apache Kafka 성능 Configuration 최적화]
성능목표를 4개로 구분(Throughtput, Latency, Durability, Avalibility)하고, 각 목표에 따라 어떤 Kafka configuration의 조정을 어떻게 해야하는지 정리하였다.
튜닝한 파라미터를 적용한 후, 성능테스트를 수행하면서 추출된 Metrics를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
한빛데브그라운드에서 발표했던 내용입니다.
발표 영상 : https://youtu.be/ohpfSLf0V3Y
--
스타트업 비즈니스에서 데이터를 활용한 전략 수립과 의사결정은 필수적인 요소입니다. 서비스 운영 데이터에서부터 다양한 고객의 행동 로그, 소셜 미디어 데이터까지 다양한 데이터를 모두 모아 분석 환경을 구축하기 위해서는 많은 준비와 고민이 필요합니다. 스타트업에서 빠른 속도와 최소한의 비용, 다양한 분석 Tool들과 연동되는 Data Pipeline, Data Lake, Data Warehouse 구축 경험기를 공유하고자 합니다. 이 과정을 통해 애널리틱스 파이프라인을 구축 과정과 S3, Glue, Athena,EMR, Quicksight와 같은 서버리스 애널리틱스 서비스에 대한 구축 사례를 확인하실 수 있습니다.
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
요즘 Hadoop 보다 더 뜨고 있는 Spark.
그 Spark의 핵심을 이해하기 위해서는 핵심 자료구조인 Resilient Distributed Datasets (RDD)를 이해하는 것이 필요합니다.
RDD가 어떻게 동작하는지, 원 논문을 리뷰하며 살펴보도록 합시다.
http://www.cs.berkeley.edu/~matei/papers/2012/sigmod_shark_demo.pdf
AWS Glue는 고객이 분석을 위해 손쉽게 데이터를 준비하고 로드할 수 있게 지원하는 완전관리형 ETL(추출, 변환 및 로드) 서비스입니다. AWS 관리 콘솔에서 클릭 몇 번으로 ETL 작업을 생성하고 실행할 수 있습니다. 빅데이터 분석 시 다양한 데이터 소스에 대한 전처리 작업을 할 때, 별도의 데이터 처리용 서버나 인프라를 관리할 필요가 없습니다. 본 세션에서는 지난 5월 서울 리전에 출시한 Glue 서비스에 대한 자세한 소개와 함께 다양한 활용 팁을 데모와 함께 소개해 드립니다.
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...Amazon Web Services Korea
AWS re:Invent에서는 다양한 고객들의 요구에 맞추어 새로운 분석 및 서버리스 서비스가 대거 출시되었습니다. 본 강연에서는 새롭게 출시된 핵심 분석 기능들과 함께, 누구나 손쉽게 사용할 수 있는 AWS의 분석 서버리스와 On-demand 기능들에 대한 심층적인 정보를 확인하실 수 있습니다.
NetApp AI Control Plane for Kubernetes and Kubeflow
NetApp AI Data Control Plane for Kubernetes and Kubeflow
NetApp Trident and Python REST API for Kubernetes and Kubeflow
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...Amazon Web Services Korea
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study
이 세션에서는 데브시스터즈의 Case Study를 통하여 Data Lake를 만들고 사용하는데 있어 요구 되는 사항들에 대해 공유합니다. 여러 목적에 맞는 데이터를 전달하기 위해 AWS 를 활용하여 Data Lake 를 구축하게된 계기와 실제 구축 작업을 하면서 경험하게 된 것들에 대해 말씀드리고자 합니다. 기존 인프라 구조 대비 효율성 및 비용적 측면을 소개해드리고, 빅데이터를 이용한 부서별 데이터 세분화를 진행할 때 어떠한 Architecture가 사용되었는지 소개드리고자 합니다.
Just Model It 이벤트에서 사용할 Backend.AI 에 관한 소개입니다. Backend.AI의 개괄, 주요 기능 및 사용예들을 다룹니다. 또한 Backend.AI 를 이용한 End-to-end ML model 개발 시나리오도 소개합니다.
An Introduction to Backend.AI to use in Just Model It event. It covers the overview of Backend.AI, its main features and examples. It also introduces the scenario of developing end-to-end ML model using Backend.AI.
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
CloudBread
클라우드 기반 무료 오픈소스 프로젝트로, 모바일 게임과 모바일 앱에 최적화된 게임 서버 엔진입니다. 모든 서비스는 마이크로소프트의 클라우드 서비스인 Azure에 최적화되어 동작하며, 안정성과 확장성을 목표로 개발 중입니다.
기능
•PaaS / DaaS 서버 엔진•PaaS, DaaS 로 손쉬운 개발 및 서비스 즉시 배포
•Real Auto Scale - PaaS
•개발/테스트/배포 = 통합 환경
•서비스 규모에 따른 앱 변경 없음
글로벌 론칭 아키텍처
•글로벌 론칭+데이터 동기화
•설계 부터 클라우드에 최적화된 아키텍처 및 프레임워크로 개발
•오픈소스 프레임워크 활용 개발
보안, 관리, 기술교육
•저장/통신에 표준 암호화 기술 적용
•기본 관리자 서비스 및 커스터마이징
•분석/관리 배치 작업 추가 제작 가능
개발자 그룹
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
지원되는 모바일 & 클라이언트환경
•iOS, Android, Windows Phone, Windows 스토어앱, Xamarin, PhoneGap, Sencha 등
•Microsoft Azure Mobile Service가 지원하는 모바일 및 다양한 클라이언트 플랫폼 지원 : http://azure.microsoft.com/ko-kr/documentation/services/mobile-services/
설치
•Wiki의 튜토리얼 설치 참조
프로젝트 설명
•모바일게임과 모바일 앱에서 사용되는 사용자의 패턴과 액션을 기록해 기능들을 제공
•클라이언트 모바일 디바이스는 게임서버로 JSON 방식의 데이터를 요청하고 서버가 해당 데이터를 처리 후 응답
•약 100여개의 비즈니스 로직이 기본제공(Wiki 참조)
•클라이언트는 마이크로소프트가 오픈소스로 직접 만들어 제공하는 라이브러리를 통해 서버로 API를 호출
실행 예제와 API 리스트는 Wiki 참조
Contribute/질문/토론
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
4. 빅데이터 분석 파이프라인
빅데이터 분석 과정
데이터 원천
모바일
웹
내부시스템
API
Server
Message
Queue
Streaming
Framework
< Realtime Processing >
Storage
Batch
Processing
Data
Warehouse
< Data Lake & Batch >
Data
Result
시각화 활용
의사결정 마케팅 전략수립
데이터 수집/분석
외부시스템
Dash board
< Data Analytics >
5. 오픈소스 기반의 빅데이터 분석 아키텍처
Jupyter
notebook
Zeppelin
Hadoop MR
Spark
Kafka
Linux
Hadoop HDFS
< Batch >
Spark streaming
< Realtime Processing >
Visualization
6. 설치, 운영, 관리의 어려움
• 학습
• 설치
• 개발
• 배포
• 운영
• 모니터링
• 장애 처리
• 성능 튜닝
7. 구글 클라우드 기반 데이터 분석 파이프라인
< Data Lake & Batch >
< Realtime Processing >
데이터 원천 데이터 분석 시각화
OR
AppEngine
Compute
Engine
Cloud
Function
Pub/Sub Dataflow
Cloud
Storage
Data
flow
Data
proc
BigQuery
Datalab
Datastudio
Client
ETC
8. 클라우드 기반의 빅데이터 분석
Cloud Scale InfrastructureNoOps
데이터 분석에 집중하여
인사이트를 얻는데 초점을 맞출 수 있다.
+
12. ● 데이터
○ 블레이트 & 소울의 특정기간 사용자 로그 데이터 및 메타 데이터
○ 대회 결과 데이터
● 로그 데이터 파일 수 : 총 1만개
● 데이터 크기
○ 원본 - 총 146GB
○ GZIP압축 후 - 총 10.7GB
● 데이터 포맷
○ CSV
● 스키마 컬럼수
○ 75개
● 데이터 타입 구성
○ String, Integer, Timestamp
활용한 데이터 정보
15. GCE Cloud Storage BigQuery
Cloud Datalab
ETC
Log Data gsutil bq
Scheduling & Triggers
Query
Data Pipeline
Reporting Services
Data Studio
Cloud SQL
구현 아키텍처
GCE
16. 디자인 컨셉
● 잘 아는 것을 활용 → Google Cloud Platform
● 빅데이터 분석 성능 → BigQuery
● 데이터 ETL 처리(Batch)및 전송 → Embulk
● 데이터 분석 파이프라인의 자동화 및 모니터링 → Airflow
● 범용적인 아키텍처
● 개발 및 Learning curve 최소화
18. 로그데이터 다운로드 및 파악
Logdata.csv
GCE
X4000 X3000 X3000
TrainDATA TestDATA1 TestDATA2
19. BigQuery에 데이터 적재가 끝난 상태에서 구성 추가
MySQL에 원본 데이터 저장하기
$ gsutil –m compose gs://game-data-source/export-data/testdata1/*
gs://game-data-source/merge-data/testdata1.csv
Cloud SQL
BigQuery
Cloud Storage
27. 에어플로우 설치
환경 변수 설정
$ export AIRFLOW_HOME=~/airflow
Airflow 설치
$ pip install airflow
DB 초기화
$ airflow initdb
웹 서버 실행
$ airflow webserver -p 8080
web browser
GCE
28. ● 설정파일 수정 ($AIRFLOW_HOME/airflow.cfg)
● ETL 서버 SSH연결 설정
에어플로우 설정
...
# Are DAGs paused by default at creation // True -> False로 변경
dags_are_paused_at_creation = False
...
# Whether to load the examples that ship with Airflow. It's good to
# get started, but you probably want to set this to False in a production
# environment // True -> False로 변경
load_examples = False
...
31. 구축 과정에서 겪은 어려움
● 데이터 분석 전문가가 아니기 때문에
전체 시스템을 구성하는 데 중점을 둠
● Airflow, Embulk에 대한 자료가 적다
○ 공식 사이트
○ 구글 검색
○ 각종 커뮤니티(구글 그룹, 페이스북 그룹, 등)
○ 블로그
○ github
○ stackoverflow
○ slideshare
○ ETC
32. 에어플로우 사용 팁
● 원격서버 SSH 커넥션 :
○ 웹 콘솔 Admin → Connection을 활용
● 원격서버 = Airflow서버
○ $PATH를 동일하게 구성
● Dag의 실행 시점
○ start_date에서 Interval시간을 뺀 시점에서 실행
○ start_date= datetime.now() 실행하면 에러남
● Method이해 (Python bitshift operators >>, <<)
○ upstream은 의존성을 가진 상위노드
○ downstream은 의존성을 가진 하위 노드
33. Embulk 사용 팁
● Input/Output 플러그인 사용
○ 사용할 외부 플러그인과 내장 플러그인의 옵션을 충분히 파
악
○ 플러그인과 옵션들의 적절한 조합을 찾기
● Embulk 데이터를 가져올 때 Timestamp를 String으로 형 변환
○ 소수점 값 처리
● Embulk CLI 명령 실행 시 Output 로그처리
○ embulk run –-log [output log파일] [실행할 .yml]
34. Google Cloud Storage 사용 팁
● 클래스 선택
○ Regional추천
● 로컬 ETL서버 환경
○ Outbound 방화벽 443포트(to GCS) 오픈
○ 네트워크 Outbound 대역폭 체크
● 정합성 체크 - Hash값 비교(md5, crc32c)
● 빅쿼리로 데이터 적재까지 고려
○ 데이터 파일을 미리 분할하여 업로드
○ UTF-8로 인코딩한 상태로 업로드
$ gsutil hash local-file $ gsutil ls –L GCS-File-URIcompare
35. 빅쿼리 사용 팁
● 데이터 포맷
○ JSON, CSV, Avro 중 택 1
● 임시 테이블로 1차 적재 후 실제 테이블로 복사하기
● 빅쿼리 정합성 체크(카운트 쿼리로 레코드 수 비교)
● bq업로드 옵션의 적절한 활용
○ CSV Header제외하는 옵션(파일 분할 시 각각 Header 적용)
○ 스키마와 매칭 되지 않는 값 무시
$ bq load --skip_leading_rows=1 …
$ bq load --ignore_unknown_values
…
$ bq query 'SELECT count(*) FROM DatasetID.TableID’
37. BIgQuery
● 페타 바이트 급의 데이타 저장 및 분
석 (CF. 데이타 웨어 하우스) 기술
● 구글 메일,유투브등 구글 내부 서비스
데이타 저장 및 분석에 널리 사용됨
● 매니지드 서비스 “No Ops, No more
install, configuration, maintenance”
38. BIgQuery 특징
● SQL 문법 사용 (ANSI SQL 지원)
● Aggregation, Sorting, Join, Partitioning 지원
● No Ops
● 3 copy 기반의 안정성
● Batch loading & Streaming loading 모두 지원
● Easy to use
● 클라우드 스케일의 연산속도 (24000개의 CPU)
● 컬럼 DB
42. Embulk 특징
● 다양한 플러그인 제공
● 병렬 로딩 가능
● 파일 포맷 변환, 필드 형 변환, 필드 맵핑
● 스키마 예측
43. ❏ VM(Instance) 서비스
❏ 저렴한 가격과 높은 성능
Data Studio
그 외 모듈 소개
42
❏ 오프젝트 스토리지 서비스
Cloud Storage Cloud SQL
Cloud Datalab
❏ 매니지드 RDBMS 서비스
(MySQL/PostgreSQL)
❏ 오픈소스 Jupyter 노트북
❏ 데이타 분석 및 리포팅 도구
❏ 무료
❏ 구글 리포팅 BI 서비스
❏ 비 개발자도 쉽게 리포트
❏ 무료
Compute Engine
44. 추가로 해볼 것들
● Airflow GCP Operator
● Embulk 성능 최적화
● SSHOperator적용
● 분산 노드 처리
● Dag과 Task 병렬 처리
● 각각 다른 데이터 소스에서 BigQuery로 데이터 적재