SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
PyCon Korea 2019
Azar WebView Logging
이준영/용현택
하이퍼커넥트
Real-time
Video
Social
Discovery
하이퍼커넥트는 WebRTC와 AI 기술을 바탕으로,
Video로 전 세계 사람들을 연결해 새로운 가치를 만들고 있습니다.
[Chat]
Live chat Azar
[Entertainment]
Live streaming Hakuna
and more...
WebRTC Video + Mobile Optimized AI
성장
95%가 해외에서!
2017 : 9th
매출액 성장 아자르의 글로벌 성과
글로벌 기업들과 경쟁하는 앱 매출 순위
2018 : 7th 2019 1Q : 5th5년 간의 매출 추이
기술력
● 전 세계 어느 국가, 통신사, 단말기에서도안정적으로영상 통화 가능
● 지구 반대편 남미의 통신사별 망 품질관리 모니터링 가능한 글로벌
인프라 확보
모바일 WebRTC를 최초로 상용화 모바일에 최적화된 머신 러닝 기술
● 서버에 데이터를 보내지 않고 모바일에서실시간으로데이터를 처리하는
On-device AI
● 낮은 CPU 성능, 적은 메모리 환경에서도빠르게 동작하는 딥러닝 가속 기술
하이퍼커넥트에서
Python이란?...
Python X Data
Python X ML
파이썬 기반의 백엔드를 사용해 개발 중!
Python X 신규 서비스
[Chat]
Live chat
Azar
and more...
잘 알려진
그리고 앞으로
탄생하게 될
수많은 신규
서비스까지!
[Entertainment]
Live streaming
Hakuna
잘 알려지지 않은 앞으로 탄생할
We connect the world!
하이퍼커넥트와 함께 전 세계를 연결할 분을 모십니다!
Tech Blog / hyperconnect.github.io
Website / hyperconnect.com
Facebook / @hpcnt
Instagram / @hyperconnect
Email / career@hpcnt.com
오피스 라이프
Azar WebView Logging
이준영
junyoung@hpcnt.com
Who am I
● 이준영
● Backend Engineer
● WebPlatform Team Leader@Hyperconnect
○ Azar WebView
○ Azar Admin
● 최근 기술: Python, Django, DRF
● 관심사: 창의적인 업무만 할 수 있는 환경/TDD/자동화/Infra
● Prefer
○ GUI over CLI
○ PyCharm over VSC
○ Explicitly over Implicitly
● Contact: legshort@gmail.com
Why
● Logging 중요성!
● WebView 활용 증가함에 따라 증가하는 개발 복잡도
● 우리도 Logging 제대로 안하고 있었다!
● 하지만 우리는 이제 이렇게 Logging 하고 있다!
Previous
Poor Logging Infra
AWS EC2
Log
access.2019-02-07-06.log
access.2019-02-07.05.gz
access.2019-02-07.04.gz
access.2019-02-07.03.gz
access.2019-02-07.02.gz
access.2019-02-07.01.gz
…
...
Azar WebView Architecture
WebView
Azar API
Transaction
iOS/Android
Poor Debugging Env
WebView
Azar API
Transaction
iOS/Android
No info regarding User/Device!
Poor Debugging Env
WebView
Azar API
Transaction
iOS/Android
No info regarding User/Device &&
JS Client
Poor Debugging Env
WebView
Azar API
Transaction
iOS/Android
No info regarding User/Device &&
JS Client && Django Client
Problems
● Poor Logging Infra
○ SSH 접속 필요
○ 용량 문제로 시스템 정지
○ 용량 확보를 위해 로그 파일 제거
○ 불편한 검색
● Poor Debugging env
○ Network 요청/받는 쪽 모두 logging 부재
○ 연속성 있는 Network 사이 tracking info 부재
Goal
● Log 중앙화
○ GCP Stackdriver Logging
● 모든걸 Logging 하자!
○ env/user/headers/request/response
○ local/dev/qa/staging/production
○ Outbound network call
● Custom Header 적극 활용
○ Credentials
○ Reducing network call for user info
○ Statistics
● TX(transaction) Layer Logging
○ 식별가능한 TX-Id 전달
○ 기존 Header 전달
Present
Log Centralization
Kinesis Firehose
Amazon S3
Elasticsearch
VS
Stackdriver Logging
BigQuery
GCP Stackdriver Logging
● Pros
○ SQL 유사한 문법 제공으로 편리한 검색
○ 사용자별 권한
○ 실시간 Streaming
● Cons
○ 1개 GCP Project 안에 다수 프로젝트/logger 설정이 매우 불편
○ 긴시간 streaming 받으면 Browser 정지
○ 아직 초기 단계
Log Everything
Log Everything - Inbound/Outbound
Custom Header
- Credential
- POST body 사용하다가 Header로 이동
- 기본 사용자 정보
- iOS/Android 기본 사용자 정보 전달
- Network 의존성 제거
- 통계
- Azar Version
- Device Model/OS
- 실시간 웹 브라우저 버전
- 정보 의존성 제거
- iOS/Android/API
TX Layer Logging
WebView
Azar API
Transaction
iOS/Android
X-Azar-User-Info
+= X-Server-Info
+= X-TX-Id
+= X-JS-Client-Info
Combining chain requests into one TX
TX Layer Logging
Same TX-Id
TX Layer Logging
Stackdriver Logging
Logging in Django
● Async 하게 Logging 전송 하기 위해
REQUEST_FINISHED Signal 사용
● 실제 Response 전달된 이후 Signal
발생
Logging in Django
● REQUEST_FINISHED Signal
Handler 에서 request/response
공유하기 위해 Thread 사용
● Signal Receiver는
request/response 전달 받지 않음
Logging in Django
● Requests Exception 처리 중요
● Timeout 사용 필수
● raise_for_status() 필수
Achievement
● 디버깅 시간이 극적으로 감소
● 장애대응/디버깅시 로깅 부터 보는 것으로 시작
● 장애대응/디버깅시 타 팀과 의존성 제거
○ iOS/Android/API/CS Team
○ outbound 정보/히스토리
Lessons Learned
● Logging은 그냥 너무나도 중요
● TMI logging은 설정할때 괴롭고 필요없어 보이지만 디버깅시 유일한 희망
● Logging infra/전략은 프로젝트 매우 초기에 하자!
● 우리팀이 할수 있는건 우리팀이 하자!
● 수술 장갑이 없다면 수술도 할수 없다(Ref Clean Code)
Future
Goal
● 통계
○ 실시간 Dynamic 상황 페이지
○ 실시간 browser/device 정보
Career
● 대상: Python Engineer
● Job Description
○ Azar Admin
○ Hyperconnect Report + ML
○ Hyperconnect Review + ML
QnA
PyCon Korea 2019
Azar WebView Logging
이준영/용현택

Contenu connexe

Tendances

Tendances (20)

Data Driven Decision을 위한 데이터플랫폼구축기@kakaomobility
Data Driven Decision을 위한 데이터플랫폼구축기@kakaomobilityData Driven Decision을 위한 데이터플랫폼구축기@kakaomobility
Data Driven Decision을 위한 데이터플랫폼구축기@kakaomobility
 
한양대학교 스마트창작터 사업계획서_중고거래 구매대행 서비스 Buying_오세훈
한양대학교 스마트창작터 사업계획서_중고거래 구매대행 서비스 Buying_오세훈한양대학교 스마트창작터 사업계획서_중고거래 구매대행 서비스 Buying_오세훈
한양대학교 스마트창작터 사업계획서_중고거래 구매대행 서비스 Buying_오세훈
 
1인칭 관점에서 본 챗봇(Chotbot) 서비스
1인칭 관점에서 본 챗봇(Chotbot) 서비스1인칭 관점에서 본 챗봇(Chotbot) 서비스
1인칭 관점에서 본 챗봇(Chotbot) 서비스
 
[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버 클라우드 플래폼 OCR 소개
[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버 클라우드 플래폼 OCR 소개[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버 클라우드 플래폼 OCR 소개
[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버 클라우드 플래폼 OCR 소개
 
RPA Pool version
RPA Pool versionRPA Pool version
RPA Pool version
 
온라인 교육 시리즈 - 클라우드 기반의 마이데이터사업 혁신(김민형 클라우드 솔루션 아키텍트)
온라인 교육 시리즈 - 클라우드 기반의 마이데이터사업 혁신(김민형 클라우드 솔루션 아키텍트) 온라인 교육 시리즈 - 클라우드 기반의 마이데이터사업 혁신(김민형 클라우드 솔루션 아키텍트)
온라인 교육 시리즈 - 클라우드 기반의 마이데이터사업 혁신(김민형 클라우드 솔루션 아키텍트)
 
[Partner TechForum] FSI Innovation 대화형 뱅킹과 비대면 뱅킹
[Partner TechForum] FSI Innovation 대화형 뱅킹과 비대면 뱅킹 [Partner TechForum] FSI Innovation 대화형 뱅킹과 비대면 뱅킹
[Partner TechForum] FSI Innovation 대화형 뱅킹과 비대면 뱅킹
 
20160203_마인즈랩_딥러닝세미나_06 딥러닝 뉴스 이미지 분류엔진의 광고 활용 김종진대표님
20160203_마인즈랩_딥러닝세미나_06 딥러닝 뉴스 이미지 분류엔진의 광고 활용 김종진대표님20160203_마인즈랩_딥러닝세미나_06 딥러닝 뉴스 이미지 분류엔진의 광고 활용 김종진대표님
20160203_마인즈랩_딥러닝세미나_06 딥러닝 뉴스 이미지 분류엔진의 광고 활용 김종진대표님
 
01_안드로이드 플랫폼 중심의 T store 사업 전략 소개
01_안드로이드 플랫폼 중심의 T store 사업 전략 소개01_안드로이드 플랫폼 중심의 T store 사업 전략 소개
01_안드로이드 플랫폼 중심의 T store 사업 전략 소개
 
[날씨x산업] 날씨기반 IBM 유통업 솔루션 소개
[날씨x산업] 날씨기반 IBM 유통업 솔루션 소개[날씨x산업] 날씨기반 IBM 유통업 솔루션 소개
[날씨x산업] 날씨기반 IBM 유통업 솔루션 소개
 
[151] 영상 인식을 통한 오프라인 고객분석 솔루션과 딥러닝
[151] 영상 인식을 통한 오프라인 고객분석 솔루션과 딥러닝[151] 영상 인식을 통한 오프라인 고객분석 솔루션과 딥러닝
[151] 영상 인식을 통한 오프라인 고객분석 솔루션과 딥러닝
 
Crosstarget
Crosstarget Crosstarget
Crosstarget
 
[마인즈랩] 회사소개서 201707
[마인즈랩] 회사소개서 201707[마인즈랩] 회사소개서 201707
[마인즈랩] 회사소개서 201707
 
[Partner TechForum] 금융 서비스를 위한 블록체인 구축사례 소개
[Partner TechForum] 금융 서비스를 위한 블록체인 구축사례 소개[Partner TechForum] 금융 서비스를 위한 블록체인 구축사례 소개
[Partner TechForum] 금융 서비스를 위한 블록체인 구축사례 소개
 
인사이트™ vs 타사 웹로그분석 제품 비교
인사이트™ vs 타사 웹로그분석 제품 비교 인사이트™ vs 타사 웹로그분석 제품 비교
인사이트™ vs 타사 웹로그분석 제품 비교
 
IBM Bluemix Seoul Meetup #23-20170426 챗봇_적용_사례_살펴보기
IBM Bluemix Seoul Meetup #23-20170426 챗봇_적용_사례_살펴보기IBM Bluemix Seoul Meetup #23-20170426 챗봇_적용_사례_살펴보기
IBM Bluemix Seoul Meetup #23-20170426 챗봇_적용_사례_살펴보기
 
누구나 손쉽게 사용하는 BlockChain, 비즈니스에 활용하기! - 박혜영, AWS솔루션즈 아키텍트/정권호, 람다 256 CSO/ 이...
누구나 손쉽게 사용하는 BlockChain, 비즈니스에 활용하기!  - 박혜영, AWS솔루션즈 아키텍트/정권호, 람다 256  CSO/ 이...누구나 손쉽게 사용하는 BlockChain, 비즈니스에 활용하기!  - 박혜영, AWS솔루션즈 아키텍트/정권호, 람다 256  CSO/ 이...
누구나 손쉽게 사용하는 BlockChain, 비즈니스에 활용하기! - 박혜영, AWS솔루션즈 아키텍트/정권호, 람다 256 CSO/ 이...
 
[마인즈랩] Ai 플랫폼 maum.ai 소개서 201707
[마인즈랩] Ai 플랫폼 maum.ai 소개서 201707[마인즈랩] Ai 플랫폼 maum.ai 소개서 201707
[마인즈랩] Ai 플랫폼 maum.ai 소개서 201707
 
[MindsLab] company introduction(2020)_ko_with videos
[MindsLab] company introduction(2020)_ko_with videos[MindsLab] company introduction(2020)_ko_with videos
[MindsLab] company introduction(2020)_ko_with videos
 
Enterprise mobile standard, morpheus 모피어스 모바일 표준 플랫폼
Enterprise mobile standard, morpheus 모피어스 모바일 표준 플랫폼Enterprise mobile standard, morpheus 모피어스 모바일 표준 플랫폼
Enterprise mobile standard, morpheus 모피어스 모바일 표준 플랫폼
 

Similaire à Hyperconnect pycon 2019

MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
문기 박
 
OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316
기한 김
 

Similaire à Hyperconnect pycon 2019 (20)

AI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.IAI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.I
 
2015 n tels iot product lineup_2015
2015 n tels iot product lineup_20152015 n tels iot product lineup_2015
2015 n tels iot product lineup_2015
 
WebRTC 현재와 미래 최진호 2016
WebRTC 현재와 미래 최진호 2016WebRTC 현재와 미래 최진호 2016
WebRTC 현재와 미래 최진호 2016
 
[2014 PAG 비즈니스 플랫폼데이] IoT 비즈니스 스타트업을 위한 IBM Bluemix
[2014 PAG 비즈니스 플랫폼데이] IoT 비즈니스 스타트업을 위한 IBM Bluemix[2014 PAG 비즈니스 플랫폼데이] IoT 비즈니스 스타트업을 위한 IBM Bluemix
[2014 PAG 비즈니스 플랫폼데이] IoT 비즈니스 스타트업을 위한 IBM Bluemix
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션 :: 정우진 이사
클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션 :: 정우진 이사클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션 :: 정우진 이사
클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션 :: 정우진 이사
 
170426 cloud day in 포항 2. 클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션_aws 정우진 이사
170426 cloud day in 포항 2. 클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션_aws 정우진 이사170426 cloud day in 포항 2. 클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션_aws 정우진 이사
170426 cloud day in 포항 2. 클라우드 뉴노멀 시대의 글로벌 혁신 기업들의 디지털 트랜스포메이션_aws 정우진 이사
 
04 alibaba cloud의 ‘차별화된 게임 솔루션’(메가존 알리바바 클라우드 ᄌ...
04 alibaba cloud의  ‘차별화된 게임 솔루션’(메가존 알리바바 클라우드 ᄌ...04 alibaba cloud의  ‘차별화된 게임 솔루션’(메가존 알리바바 클라우드 ᄌ...
04 alibaba cloud의 ‘차별화된 게임 솔루션’(메가존 알리바바 클라우드 ᄌ...
 
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
 
플랜트펄스 IoT 플랫폼 소개서 - V6.0
플랜트펄스 IoT 플랫폼 소개서 - V6.0플랜트펄스 IoT 플랫폼 소개서 - V6.0
플랜트펄스 IoT 플랫폼 소개서 - V6.0
 
Neural stream
Neural streamNeural stream
Neural stream
 
OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316
 
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
 
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers 개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
 
Block chain bidding_System
Block chain bidding_SystemBlock chain bidding_System
Block chain bidding_System
 
if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01
 
[한국 IBM 권오윤]H2O.ai DAI & IBM GPU 서버
[한국 IBM 권오윤]H2O.ai DAI & IBM GPU 서버[한국 IBM 권오윤]H2O.ai DAI & IBM GPU 서버
[한국 IBM 권오윤]H2O.ai DAI & IBM GPU 서버
 
AWS Greengrass, Lambda and ML Inference at the Edge site (김민성, AWS 솔루션즈 아키텍트)...
AWS Greengrass, Lambda and ML Inference at the Edge site (김민성, AWS 솔루션즈 아키텍트)...AWS Greengrass, Lambda and ML Inference at the Edge site (김민성, AWS 솔루션즈 아키텍트)...
AWS Greengrass, Lambda and ML Inference at the Edge site (김민성, AWS 솔루션즈 아키텍트)...
 
스마트 프로덕트: 제조사를 위한 IoT 연결성 극대화 비즈니스 모델 및 사례 소개 – 정재연 AWS 인프라스트럭처 아키텍트, 장재영 경동나...
스마트 프로덕트: 제조사를 위한 IoT 연결성 극대화 비즈니스 모델 및 사례 소개 – 정재연 AWS 인프라스트럭처 아키텍트, 장재영 경동나...스마트 프로덕트: 제조사를 위한 IoT 연결성 극대화 비즈니스 모델 및 사례 소개 – 정재연 AWS 인프라스트럭처 아키텍트, 장재영 경동나...
스마트 프로덕트: 제조사를 위한 IoT 연결성 극대화 비즈니스 모델 및 사례 소개 – 정재연 AWS 인프라스트럭처 아키텍트, 장재영 경동나...
 
라즈베리파이로 보일러 제어하기
라즈베리파이로 보일러 제어하기라즈베리파이로 보일러 제어하기
라즈베리파이로 보일러 제어하기
 

Dernier

Dernier (7)

데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 

Hyperconnect pycon 2019

  • 1. PyCon Korea 2019 Azar WebView Logging 이준영/용현택
  • 2.
  • 3. 하이퍼커넥트 Real-time Video Social Discovery 하이퍼커넥트는 WebRTC와 AI 기술을 바탕으로, Video로 전 세계 사람들을 연결해 새로운 가치를 만들고 있습니다. [Chat] Live chat Azar [Entertainment] Live streaming Hakuna and more... WebRTC Video + Mobile Optimized AI
  • 4. 성장 95%가 해외에서! 2017 : 9th 매출액 성장 아자르의 글로벌 성과 글로벌 기업들과 경쟁하는 앱 매출 순위 2018 : 7th 2019 1Q : 5th5년 간의 매출 추이
  • 5. 기술력 ● 전 세계 어느 국가, 통신사, 단말기에서도안정적으로영상 통화 가능 ● 지구 반대편 남미의 통신사별 망 품질관리 모니터링 가능한 글로벌 인프라 확보 모바일 WebRTC를 최초로 상용화 모바일에 최적화된 머신 러닝 기술 ● 서버에 데이터를 보내지 않고 모바일에서실시간으로데이터를 처리하는 On-device AI ● 낮은 CPU 성능, 적은 메모리 환경에서도빠르게 동작하는 딥러닝 가속 기술
  • 9. 파이썬 기반의 백엔드를 사용해 개발 중! Python X 신규 서비스 [Chat] Live chat Azar and more... 잘 알려진 그리고 앞으로 탄생하게 될 수많은 신규 서비스까지! [Entertainment] Live streaming Hakuna 잘 알려지지 않은 앞으로 탄생할
  • 10. We connect the world! 하이퍼커넥트와 함께 전 세계를 연결할 분을 모십니다! Tech Blog / hyperconnect.github.io Website / hyperconnect.com Facebook / @hpcnt Instagram / @hyperconnect Email / career@hpcnt.com
  • 13. Who am I ● 이준영 ● Backend Engineer ● WebPlatform Team Leader@Hyperconnect ○ Azar WebView ○ Azar Admin ● 최근 기술: Python, Django, DRF ● 관심사: 창의적인 업무만 할 수 있는 환경/TDD/자동화/Infra ● Prefer ○ GUI over CLI ○ PyCharm over VSC ○ Explicitly over Implicitly ● Contact: legshort@gmail.com
  • 14. Why ● Logging 중요성! ● WebView 활용 증가함에 따라 증가하는 개발 복잡도 ● 우리도 Logging 제대로 안하고 있었다! ● 하지만 우리는 이제 이렇게 Logging 하고 있다!
  • 16. Poor Logging Infra AWS EC2 Log access.2019-02-07-06.log access.2019-02-07.05.gz access.2019-02-07.04.gz access.2019-02-07.03.gz access.2019-02-07.02.gz access.2019-02-07.01.gz … ...
  • 17. Azar WebView Architecture WebView Azar API Transaction iOS/Android
  • 18. Poor Debugging Env WebView Azar API Transaction iOS/Android No info regarding User/Device!
  • 19. Poor Debugging Env WebView Azar API Transaction iOS/Android No info regarding User/Device && JS Client
  • 20. Poor Debugging Env WebView Azar API Transaction iOS/Android No info regarding User/Device && JS Client && Django Client
  • 21. Problems ● Poor Logging Infra ○ SSH 접속 필요 ○ 용량 문제로 시스템 정지 ○ 용량 확보를 위해 로그 파일 제거 ○ 불편한 검색 ● Poor Debugging env ○ Network 요청/받는 쪽 모두 logging 부재 ○ 연속성 있는 Network 사이 tracking info 부재
  • 22. Goal ● Log 중앙화 ○ GCP Stackdriver Logging ● 모든걸 Logging 하자! ○ env/user/headers/request/response ○ local/dev/qa/staging/production ○ Outbound network call ● Custom Header 적극 활용 ○ Credentials ○ Reducing network call for user info ○ Statistics ● TX(transaction) Layer Logging ○ 식별가능한 TX-Id 전달 ○ 기존 Header 전달
  • 24. Log Centralization Kinesis Firehose Amazon S3 Elasticsearch VS Stackdriver Logging BigQuery
  • 25. GCP Stackdriver Logging ● Pros ○ SQL 유사한 문법 제공으로 편리한 검색 ○ 사용자별 권한 ○ 실시간 Streaming ● Cons ○ 1개 GCP Project 안에 다수 프로젝트/logger 설정이 매우 불편 ○ 긴시간 streaming 받으면 Browser 정지 ○ 아직 초기 단계
  • 27. Log Everything - Inbound/Outbound
  • 28. Custom Header - Credential - POST body 사용하다가 Header로 이동 - 기본 사용자 정보 - iOS/Android 기본 사용자 정보 전달 - Network 의존성 제거 - 통계 - Azar Version - Device Model/OS - 실시간 웹 브라우저 버전 - 정보 의존성 제거 - iOS/Android/API
  • 29. TX Layer Logging WebView Azar API Transaction iOS/Android X-Azar-User-Info += X-Server-Info += X-TX-Id += X-JS-Client-Info Combining chain requests into one TX
  • 32. Logging in Django ● Async 하게 Logging 전송 하기 위해 REQUEST_FINISHED Signal 사용 ● 실제 Response 전달된 이후 Signal 발생
  • 33. Logging in Django ● REQUEST_FINISHED Signal Handler 에서 request/response 공유하기 위해 Thread 사용 ● Signal Receiver는 request/response 전달 받지 않음
  • 34. Logging in Django ● Requests Exception 처리 중요 ● Timeout 사용 필수 ● raise_for_status() 필수
  • 35. Achievement ● 디버깅 시간이 극적으로 감소 ● 장애대응/디버깅시 로깅 부터 보는 것으로 시작 ● 장애대응/디버깅시 타 팀과 의존성 제거 ○ iOS/Android/API/CS Team ○ outbound 정보/히스토리
  • 36. Lessons Learned ● Logging은 그냥 너무나도 중요 ● TMI logging은 설정할때 괴롭고 필요없어 보이지만 디버깅시 유일한 희망 ● Logging infra/전략은 프로젝트 매우 초기에 하자! ● 우리팀이 할수 있는건 우리팀이 하자! ● 수술 장갑이 없다면 수술도 할수 없다(Ref Clean Code)
  • 38. Goal ● 통계 ○ 실시간 Dynamic 상황 페이지 ○ 실시간 browser/device 정보
  • 39. Career ● 대상: Python Engineer ● Job Description ○ Azar Admin ○ Hyperconnect Report + ML ○ Hyperconnect Review + ML
  • 40. QnA
  • 41. PyCon Korea 2019 Azar WebView Logging 이준영/용현택