– Elastic stack과 Data pipeline의 개념
– 데이터의 종류와 형태 / Document 데이터 모델링 (mapping, data type)
– 분산 데이터 저장소 관점에서의 Elasticsearch (index, shard & replica, segment)
https://learningspoons.com/course/detail/elastic-stack/
3. 데이터 엔지니어링 데이터 분석
데이터 관련 업무를 할 때,
데이터 엔지니어링과 데이터 분석은 상호보완적 역할을 한다.
필요한 형태로 데이터를 가공·저장 및 기술적인 이슈를 해결
서비스 개선을 위해 데이터를 다각도로 분석,
그 과정에서 필요한 것(데이터, 툴)들을 요구
9. Kakao Mobility Data Engineer
• Data Pipeline
• AB Test Platform
• Machine Learning Platform
• Feature Engineering
• Kubernetes & Cloud Native Application
• Cloud Infrastructure & DevOps
Torres.woo
https://www.linkedin.com/in/torreswoo/
10. /jonghoWoo1/ab-test-platform-sk-planet
Ø Elasticsearch를 사용한 User Event 데이터 저장 & 집계(Aggregation)
Ø Metric & Chart 생성을 위한 Aggregation
Ø Metric(CR, CTR, Revenue, Impression) & 시계열 데이터, 실시간 처리
Ø Experiment - Audience Targeting(유저타켓팅), Exclusive Group(상호배타실험)
AB Test Platform
11. User Event Log 수집
Metric(CR, CTR, Revenue, Impression) 생성 & 시각화
/jonghoWoo1/ab-test-platform-sk-planet
Elasticsearch
12. /JeminHuh/realtime-log-monitoring-platformpmon
Tech planet 2016_Elastic search를이용한 Log기반 모니터링 & Log 검색 시스템 구축
Log & Monitoring System
Ø 대용량 시계열 모니터링 데이터 처리
Ø 수천개의 Web & WAS log 정형화 & Service 데쉬보드
Ø 수천대의 서버 리소스 메트릭 모니터링 (CPU, Memory, Load, Disk, Network)
Ø Near Real-Time (NRT) Log viewer
14. • 그들이 AWS 위에서 Kubernetes 를 운영하는 방법 박훈@ZEPL
• AWS 위에 올라간 모든걸 머리부터 발 끝까지 CTRL + C / V 박훈@ZEPL
• 그들이 AWS 위에서 데이터 파이프라인을 운영하는법 (2019) 박훈@yanolja
• 그들이 클라우드 위에서 데이터를 쉽고 빠르게 다루는 법(2019-7) 박훈@yanolja
ZEPL (Apache Zeppelin SaaS), Cloud Notebook System
Ø Elasticsearch를 사용한 Notebook Searching System
Ø EFK(Elasticsearch, Fluentd, Kibana)를 사용한 Kubernetes Logging System
15. Notebook 문서를 메타 데이터와 함께 저장
문서 본문에 Analyzer(분석기)에 따라 색인
Elasticsearch
16. 1주차 강의
01. Elastic Stack?
02. Elastic Stack과 Data Pipeline
03. Elastic Stack을 사용하여 데이터 분석
Ø Docker로 개발환경 구축
Ø Docker-compose로 ELK 구축하기
Ø Kibana로 데이터 탐색 및 분석
Ø Elasticsearch 확인하기
19. Elasticsearch
Ø 이제는 어느 회사나 하나쯤은 가지고 있는 Elasticsearch가 핵심
Ø 2015년, 0.7버전부터 사용. But, 운영이 너무 힘듬.
노드가 죽으면서 DB로서는 부적합? 그러나 2.X. 지금은 7.7
Ø https://github.com/elastic/elasticsearch
Open Source, Distributed, Restful Search Engine
검색엔진?
20. 검색엔진
Lucene ㅣ 검색엔진의 시작. 더그커팅이 고안한 역색인 구조는 빠른 검색 결과를
제공하는데 최적의 성능. Apache Lucene을 개발.
Apach Solr ㅣ 루씬 기반으로 분산 처리가 가능한 Apach Solr 검색엔진
Elasticsearch ㅣ 전통적인 URI검색 방식에서 → Request Body방식의 Query DSL.
특히 Aggregation API는 솔라의 집계 기술은 Facet API보다 훨씬 뛰어남
28. Full Text Searching Engine
https://www.elastic.co/kr/blog/found-elasticsearch-from-the-bottom-up
Document,
Data
is
winnter
coming
Token Stream Inverted Index Index Segment
Analysis
Document Segment indexing TokenInverted Index
2주차 강의
29. REST APIs Document JSON REST
• Elasticsearch는 HTTP 프로토콜로 접근이 가능한 REST API를 지원.
• 자원별로 고유 URL로 접근이 가능
• HTTP 메서드 PUT, POST, GET, DELETE 를 이용해서 자원을 처리
https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html
Document 생성
Document 조회
Document 수정
Document 삭제
Document API
2주차 강의
30. JSON Document NoSQL Document JSON indexingMapping
• Default로 문서의 모든 필드가 색인되어 JSON 구조로 저장된다.
• Schema Free를 지원하므로 별도의 사전 맵핑 없이도 JSON 문서 형식으로 데이터를 입력하면 검색이 가능한
형태로 색인 작업이 수행된다.
JSON Document 형식으로 Schema 구성
Indexing과정을 거처 meta field가 추가
Mapping
Field & Properties : Data type
기본적으로 모든 Field에 대해 Indexing 처리를 하기에 성능 향상
2주차 강의
32. Distributed Operation & Aggregation
https://www.elastic.co/guide/en/elasticsearch/guide/current/distrib-read.html
• 분산환경에서는 이론상 데이터가 무한대로 늘어날 수 있기 때문에 많은 고민이 필요. -> 데이터양 / 정확도 /
실시간성
• 집계결과는 master 노드가 여러노드에 데이터를 집계해 질의에 답변
• cache : 질의의 결과를 임시버퍼(cache)에 둔다. 이후 같은 질의에 대해 다시 계산하지 않고, 버퍼에서 가져온다.
aggregation distributed query fetch
3주차 강의
41. 정말 엄청난 회사.. 오픈소스중에서 가장 성공한 모델이 아닐까?
https://www.elastic.co/kr/blog/doubling-down-on-open
Elastic
42. • Logstash / Kibana를 흡수
• 수집단에서 Fluentd등 다른 대안이 있었는데. Beats를 개발
Logstash / Kibana / Beats
서로 다른 소스 사이에 데이터를 변환 & 전송
Input -> filter -> output
데이터 시각화 (+ 탐색, DevTool, Monitoring)
데이터 검색, 처리, 저장
데이터 수집
52. Common Elastic Stack Architecture
Elastic Stack의 컴포넌트 뿐만 아니라 다양한 오픈소스들과 연계하여 구축
Messaging Queue
Hadoop Ecosystem
53. Data Pipeline Use Case - Uber
https://eng.uber.com/elk/Engineering Uber Predictions in Real Time with ELK
• 위치, 날짜, 시간 및 기타 설정 변수에 따라 trip 밀도 및 일치
속도와 같은 일부 패턴을 예측 -> K-NN사용
• 1. 지리적 위치, 시간 등의 기능 에서 파생 된 자체 정의 유사성
기능을 기반으로 k 후보 선택
• 2. 유사도 함수 및 출력으로 각 응답 변수에 대한 가중 평균을
기반으로 선택한 각 후보에 대한 가중치를 계산
• 한 번에 수천 건의 쿼리(QPS)와 수억 건의 레코드를 처리 할 수
있는 강력한 저장소 및 검색 엔진이 필요
• 또한 k 개의 후보자 필터링을 지원하기 위해 지리 공간 쿼리 지원
• Kafka 주제를 수집하여 거의 실시간으로 데이터를 로드
여행 데이터, 여행 시간, 거리 및 비용과 같은 메트릭
56. What is Data Analysis ?
• 서비스를 위한 의사결정을 위한 가설 및 KPI를 수립
• 그 가설을 데이터로 검증 + 데이터에서 insight를 찾기
• 추가적인 분석을 위해 필요한 데이터를 요청 할 수 있다.
데이터 분야의 직군 소개
57. What is 지표(metric) ?
• 오늘 새로운 가입자가 42명.
• 오늘 의류 카테고리에서 판매금액이 350만원 증가
• 가입 전환율이 지난달 대비 4% 증가
• 지난주 이벤트 푸쉬에 참여하기 링크 CTR이 3.7%
• 5월달 인당 평균 결제액은 7500원
Get User Drive Usage Make Money
서비스를 운영하면서 생성되는 다양한 Log를 의미있는 형태로 가공
58. 사람과 관련된 지표 돈과 관련된 지표
회원수 (User)
• 상태별회원수
• 누적 회원수
• DAU, WAU, MAU (Active User)
• MCU (Maximum Current User)
• PU (Paying User)
가입전환율
재방문자 비율
방문간격 (Visit Frequency)
잔존율 (Retension Rate)
결제유저 비율(Paying User Rate)
매출 (Revenue)
결제횟수 (Transactions)
ARPU (Average Revenue Per User)
ARPPU (Average Revenue Per Paying User)
ARPDAU (Average Revenue Per Daily Active User)
ASP (Average Selling Price)
평균 구매 간격 (Purchase Frequency)
CPC (Cost Per Click) : 클릭당비용
CPM (Cost Per Mille) : 1000개 노출당 비용
CPA (Cost Per Action & Acquisition)
CAC (Customer Acquisition Cost)
LTV (Lifetime Value) = CLV (Customer Lifetime Value)
LTR (Lifetime Revenue)
ROAS (Return on Ads Spending)
59. •데이터는 차트가 아니라 돈이 되어야 한다.
•서비스 기획자를 위한 데이터분석 시작하기
•로그 데이터로 유저 이해하기
데이터 분석 관련 참고 자료
64. • 리눅스 컨테이너 기술(LXC)을 이용해서 어플리케이션 패키징, 배포를 지원하는 경량의
가상화 오픈소스 프로젝트.
• Docker는 가볍다.
• VM(20G~)에 비해 이미지파일크기가 작아서 빠르게 이미지를 만들고 실행가능.
수백MB정도
• Immutable Infrastructure : OS커널과 Service운영환경을 분리하자.
• 관리가 편함 / 확장이 쉬움 / 경량화 됨.
• 이런 Immutable Infrastructure의 구현체가 Docker
Docker
65. Docker Image
• 컨테이너를 만들기위한 것.
• Layer File System으로 각 파일 시스템이 곧
이미지.
• 읽기전용(ReadOnly) 파일시스템으로 도커가
어플리케이션을 배포하는 단위
• Docker Image를 실행한 상태
• 사실은 ps인데 VM처럼 보이는 것이다.
isolated된 영역에서 process를 띄운 것.
Docker Container
https://dzone.com/articles/developing-on-macos-with-docker
66. Dockerfile
도커이미지를 만들기 위해 설치할 SW, 필요한 설정을 정의하는 파일
https://github.com/elastic/elasticsearch/blob/master/distribution/docker/src/docker/Dockerfile
$> docker search hello-world #이미지검색
$> docker pull hello-world #이미지다운
$> docker run hello-world #실행
$> docker rmi hello-world #이미지삭제
$> docker images #로컬에 있는 이미지 정보
$> docker info #도커정보
$> docker ps #컨테이너 프로세스정보
$> docker inspect hello-world
$> docker logs hello-world