[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[1B3]모바일 앱 크래시 네이버에서는...
-
Upload
naver-d2 -
Category
Technology
-
view
1.794 -
download
0
description
Transcript of [1B3]모바일 앱 크래시 네이버에서는...
유성덕 선임연구원 / 분산시스템개발랩 / 서비스플랫폼G Naver Labs
모바일 앱 크래시!! 네이버에서는 어떻게 수집하고 보여줄까요?
이미지 출처: https://github.com/CodingGene/JIRA-Mobile-Connect
모바일 앱 크래시?
서비스 개발 출시
튕기고 / 멈추고
사용자 감소 / 리뷰 별점 테러
매출 하락
프로젝트 시작 (벤치마킹)
SNS 개발팀의 요구사항에서 시작
Function List
Crash Report 수집 및 분석 1. 크래시 리포트 수집 : iOS / Android SDK
2. 기간별 Crash 발생 수 / 그래프 3. 최초 / 최근 발생 시간
4. Crash 발생한 사용자 수 5. Stack Trace 정보 6. OS/App ver., Device, Carrier, Network(3G,Wi-Fi), 국가정보, 로케일
Function List
Crash 이슈 관리 1. 이슈 상태 관리
- Crash 이슈 별 상태 변경 및 검색 기능
2. 코멘트 작성
- Crash 이슈에 관한 코멘트 입력 기능
3. 태깅 - Crash 이슈 별 태깅하여 태그별 이슈 관리
4. 이슈 연동 - Crash 이슈를 외부 서비스에 등록하여 이슈 관리
Function List
ETC 1. 커스텀 키값 / 세션ID 수집
2. 실시간 크래시 발생 모니터링 3. 모바일 앱 트렌드 분석
4. 비정상적인 크래시 패턴 감지 5. 일일 리포트
nCrazer ?
Naver Mobile App
Crash Analyzer
nCrazer - Main
nCrazer 사용 앱
이슈 조회
이슈 1. Exception Type : 크래시 발생 Exception - NSObjectInaccessibleException
2. Location : 크래시가 발생한 함수(파일:라인) – main (main.m:55) 3. Version : 해당 앱 버젼 – v3.3.0
이슈 조회
1 2
3 4
이슈 조회
1
3
2
4
이슈 조회
이슈 조회
이슈 통계
이슈 트렌드
실시간 모니터링
오픈소스
구성
App Log
Collector
Crash
Kafka
Symbolicator
Elastic Search MongoDB
Web Server
Symbol
Normal
Crash Collector Abnormal Pattern Detector
Daily Reporter
SDK
SDK 1. 지원 플랫폼 : iOS / Android (NDK)
2. 수집 항목 1. 크래시 리포트
1. 앱 정보 / 디바이스 정보 2. OS 버젼, 앱 버젼, 디바이스 모델 명, 메모리 사용량, 스토리지 사용량, 이통사 정보,
네트워크 상태, 국가 코드 정보, 로케일
Apache Kafka
사용 목적 1. 노드간 데이터 전송에 사용
2. 로그 폭주시 데이터 유실 방지
특징 1. Fast
2. Scalable 3. Durable
App Log
Collector
Crash
Kafka
Symbolicator
Elastic Search MongoDB
Symbol
Normal
Crash Collector Hadoop
MongoDB
특징 1. Scalability
2. Replication & High Availability 3. Document-Based Object
4. Aggregation Crash
Collector Crash
Collector
Mongos
mongod master
mongod slave
mongod arbiter
mongod master
mongod slave
mongod arbiter
Mongo Config
Mongo Config
Mongo Config
MongoDB
MongoDB 1. 크래시 발생 집계 정보 저장
2. 프로젝트 마다 여러 collection 존재 1. 이슈 collection
2. 분 / 시간 / 일 별 collection 분리 3. crash 발생 user collection
3. map/reduce 보다는 aggregation 을 활용
4. 초당 약 900건의 크래시 처리
Elasticsearch
사용 목적 1. 전사 로그 데이터 수집
2. 실시간 검색
특징 1. 분산 환경 지원
2. Schema Free 3. Multi tenancy
4. 확장성 5. 유연성 6. Full Text Search
Symbolicator
Symbolicator 1. iOS : 메모리 주소로 되어있는 Crash Report 를 심볼 정보로 변경
Symbolicator
Symbolicator 1. iOS : 메모리 주소로 되어있는 Crash Report 를 함수(파일:라인)으로 변경
2. Android : Proguard , Google Breakpad
Symbolicatecrash
Symbolicatecrash 1. iOS Crash Report 변환하기 위해 필요한 툴
2. Xcode 설치 필요
Symbolicatecrash
Symbolicatecrash 1. iOS Crash Report 변환하기 위해 필요한 툴
2. Xcode 설치 필요 3. iOS 계열 장비에서 Symbol 추출
Symbolicatecrash
Symbolicatecrash 1. iOS Crash Report 변환하기 위해 필요한 툴
2. Xcode 설치 필요 3. iOS 계열 장비에서 Symbol 추출
4. Application Symbol 준비
Symbolicatecrash
Symbolicatecrash 1. iOS Crash Report 변환하기 위해 필요한 툴
2. Xcode 설치 필요 3. iOS 계열 장비에서 Symbol 추출
4. Application Symbol 준비 5. 성능 ??
Symbolicatecrash
Symbolicatecrash 1. 매우 낮은 성능
2. Mac 서버 에서만 동작 3. TestFlight 의 성공사례
- http://help.testflightapp.com/customer/portal/articles/852175-testflig
ht-and-crash-symbolication
Symbolicatecrash
Symbolicatecrash 1. 사용하는 binary
1. mdfind - finds files matching a given query 2. mdls - lists the metadata attributes for the specified file
3. lipo - create or operate on universal files 4. size - print the size of the sections in an object file 5. otool - object file displaying tool
6. atos - convert numeric addresses to symbols of binary images or processes
atos
atos 1. convert numeric addresses to symbols of binary images or processes
12 nCrazer 0x000a4e3b 0x98000 + 52795
12 nCrazer 0x000a4e3b main (main.m:57)
atos
Mach-O File Format
이미지 출처: https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/MachORuntime/Reference/reference.html
fat_header
fat_arch mach_header
uuid_command
segment_command
atos
DWARF 1. DWARF : Debugging With Attributed Record Formats
- http://www.dwarfstd.org/
2. DWARF is a widely used, standardized debugging data format.
- http://en.wikipedia.org/wiki/DWARF
구현 결과
구현 결과 1. 약 15 배 정도의 성능 향상
향후 계획
Symbolicator 고도화 1. node.js c/c++ 모듈화로 1.5 배 성능 향상 기대
2. Android tools 고도화 1. Proguard
2. google-breakpad (Android NDK)
향후 계획
크래시 지표 지원 1. 그룹 / 프로젝트 별 크래시 지표 제공
Q&A
THANK YOU