ndc2016-게임에 특화된 덤프 분석 시스템

79
게게게 게게게 게게 게게 게게게 게게 게게 게게 게게게 게게 게게게 게게 게 게게 게게 게게게 김김김

Upload: sangki-kim

Post on 07-Jan-2017

286 views

Category:

Technology


12 download

TRANSCRIPT

Page 1: NDC2016-게임에 특화된 덤프 분석 시스템

게임에 특화된 덤프 분석 시스템넥슨 통합 덤프 자동화 분석 시스템 구축 및 운영

넥슨 코리아

김상기

Page 2: NDC2016-게임에 특화된 덤프 분석 시스템

발표에 앞서발표자는 누구고 어떤 내용의 발표인지 ..

Page 3: NDC2016-게임에 특화된 덤프 분석 시스템

NDC 발표 경력 : 2 회 (2014, 2016)

발표자 소개

김상기 : 프로그래머

넥슨그룹 입사 5 년차2011-2014, 던전앤파이터2014 - , 인프라기술팀

( [email protected] )

Page 4: NDC2016-게임에 특화된 덤프 분석 시스템

프로그래머 또는 프로젝트 매니저

사전지식이 있다면 더 많은 정보를 얻어갈 수 있는 세션물론 사전지식이 없이 들어도 무리 없는 튜토리얼 형식의 세션

대상

Page 5: NDC2016-게임에 특화된 덤프 분석 시스템

덤프 디버깅 스킬이나 코드 작성에 대한 내용이 아님

방법론적인 내용 + 구축 사례 위주의 발표

발표내용 : 사례위주

Page 6: NDC2016-게임에 특화된 덤프 분석 시스템

게임에 특화된

넥슨 통합 덤프 자동화 분석 시스템

세션 제목

Page 7: NDC2016-게임에 특화된 덤프 분석 시스템

크래시리포터 시스템 소개기본 시스템 설계 및 구축게임에 특화된 덤프 분석시스템내부 서비스 운영 노하우

세션 포인트

Page 8: NDC2016-게임에 특화된 덤프 분석 시스템

크래시리포터 시스템 소개기본 시스템 설계 및 구축게임에 특화된 덤프 분석시스템내부 서비스 운영 노하우

Page 9: NDC2016-게임에 특화된 덤프 분석 시스템

크래시리포터는 게임에서 발생하는

크래시를 수집하고 ,개발자들에게 정보를 제공하는 시스템입니다 .

수집게임 클라이언트

Page 10: NDC2016-게임에 특화된 덤프 분석 시스템

이쯤되면 궁금한 개발 동기…

저건 원래 다 하는거 아닌가 ?

Page 11: NDC2016-게임에 특화된 덤프 분석 시스템

게임 프로젝트마다 너무나도 다르게 사용되던

덤프 분석 시스템

Page 12: NDC2016-게임에 특화된 덤프 분석 시스템

네네 ~ 좋네요 ~그럼

크래시리포터부터시작해볼까요 ?

팀원분들 잘 부탁해용~

던파에서 잘 구축된 시스템을

넥슨에 통합시스템으로 구축해보는 것은

어떨까요 ?

2014 년 어느 날 ..

S 모 실장님

K 모 본부장님

K 모 파트장님 본인

기존 라이브게임의 사전 리서치부터

시작 해보겠습니다 .

Page 13: NDC2016-게임에 특화된 덤프 분석 시스템

그 중에 대표적인 사례에 대해서 먼저 공유해보고자 합니다 .

덤프분석시스템 내부 리서치

Page 14: NDC2016-게임에 특화된 덤프 분석 시스템

크래시 덤프 수집

개발자 덤프 분석개발자에게 덤프 제공

공유에 앞서 덤프 분석 시스템 기본 동작

Page 15: NDC2016-게임에 특화된 덤프 분석 시스템

1. 게임 서버에 덤프 수집을 하는 경우

기존 덤프 분석 시스템

게임서버에 TCP 패킷으로 데이터 전송가장 간단히 구현된 케이스 개발비용 가장 적음

TCP

client

게임서버

DumpDumpDUMP

아 몰랑 ~

Page 16: NDC2016-게임에 특화된 덤프 분석 시스템

독립적인 웹 서버 (HTTP)( 상용 라이브러리 : 버그트랩 )게임에 영향없음 : Good!

가장 많이 사용했던 방식

HTTP

Client

2. 독립적인 웹 서버를 구축하여 덤프 수집을 하는 경우

기존 덤프 분석 시스템

게임서버덤프수집서버

DUMPDUMPDUMP

개발자

Page 17: NDC2016-게임에 특화된 덤프 분석 시스템

분석툴 : 전체 덤프 가져오기 + 덤프 분석 결과 반환

Report

Dump

Dump

DUMP

3. 독립적인 웹서버에 덤프 수집 + 수동 분석 툴

기존 덤프 분석 시스템

개발자

덤프수집서버

HTTP

Tool

Dump

Dump

DUMP

Page 18: NDC2016-게임에 특화된 덤프 분석 시스템

4. 덤프 수집안함 .. 그런거 왜 함 ?기존 덤프 분석 시스템

Page 19: NDC2016-게임에 특화된 덤프 분석 시스템

4. 사실은… 안하는게 아니라 못하는 경우가 더 많죠…

기존 덤프 분석 시스템

미친듯이 바쁜 라이브 일정 ( 매 주 패치 )

Page 20: NDC2016-게임에 특화된 덤프 분석 시스템

누구나 만들 수 있는 시스템이지만 통합 시스템으로 제작

일정에 바쁜 개발팀에 편의를 제공해보자 !

구축 및 운영 과정에서 고민하고 , 시도한 것들에 대해서 발표

Page 21: NDC2016-게임에 특화된 덤프 분석 시스템

크래시리포터 시스템 소개

기본 시스템 설계 및 구축게임에 특화된 덤프 분석시스템내부 서비스 운영 노하우

Page 22: NDC2016-게임에 특화된 덤프 분석 시스템

크래시 덤프 수집

개발자 덤프 분석개발자에게 덤프 제공

다시보는 덤프 분석 시스템 기본 동작

Page 23: NDC2016-게임에 특화된 덤프 분석 시스템

크래시 덤프 수집

덤프 분석 개발자에게 덤프 제공

넥슨 통합 크래시리포터 동작 방식

크래시 덤프 수집

개발자 덤프 분석개발자에게 덤프 제공

Page 24: NDC2016-게임에 특화된 덤프 분석 시스템

크래시 덤프 즉시 수집

(HTTP 웹서버 구축 )

덤프 자동 분석( 개발자 수동 처리 X)

개발자에게 웹서비스 제공

( 추세 그래프 , 덤프 다운로드 )

넥슨 통합 크래시리포터 동작 방식

실시간 자동 분석 후 웹페이지 제공

즉각적인 안정성 확인 및 대응 가능

크래시 덤프 수집

개발자 덤프 분석개발자에게 덤프 제공

Page 25: NDC2016-게임에 특화된 덤프 분석 시스템

덤프 수집 서버

DumpDumpDump

웹 서비스

분석 서버

자동분석툴

넥슨 통합 크래시리포터 구조도

Page 26: NDC2016-게임에 특화된 덤프 분석 시스템

덤프 수집 서버

DumpDumpDump

웹 서비스

분석 서버

자동분석툴

크래시리포터 : 클라이언트 모듈 ( 라이브러리 )

클라이언트 모듈 : 클라이언트에 적용할 라이브러리

C/C++ 기반 라이브러리 자체 개발 HTTP 데이터 통신 : Wininet 사용 static-library VS. dynamic-library

static library 로 적용시프로젝트마다 빌드환경을 모두 맞춰줘야한다…

DebugReleaseRelease_HackShieldShippingShipping_NoHackShiled….

Page 27: NDC2016-게임에 특화된 덤프 분석 시스템

덤프 수집 서버

DumpDumpDump

웹 서비스

분석 서버

자동분석툴

크래시리포터 : 덤프 수집 서버

덤프 수집 서버 : 유저의 덤프를 수집

HTTP/S 웹 서버

Page 28: NDC2016-게임에 특화된 덤프 분석 시스템

덤프 수집 서버

DumpDumpDump

웹 서비스

분석 서버

자동분석툴

크래시리포터 : 분석 서버분석서버 : 실제로 모든 분석 처리가 이뤄지는 서버

내부 분석 툴 자체 개발 (C#)cdb.exe ( 커맨드용 디버깅 툴 )dat.exe ( 덤프 분석 툴 created by veblush)

웹 서비스 (flask / bootstrap / highcharts)DB : MariaDB (10.0.1)

Page 29: NDC2016-게임에 특화된 덤프 분석 시스템

관리 주체

덤프 수집 서버

Dump

Dump

Dump

웹 서비스

분석 서버

자동분석툴 개발팀에는 라이브러리 이식 작업만 해주면 끝 !!

개발 팀 편의를 돕기위해 모든 서버는 지원 ( 운영 ) 팀에서 관리

모든 서버 관리는 지원팀에서 운영 / 관리이로써 통합시스템으로 운영 가능

개발팀 입장에서는 신경안써서 좋고지원팀입장에서는 관리가 쉬워져서 좋으며 장비 ( 비용 ) 도 적게 들어서 누군가는 엄청 좋아함가장 좋은 것은 개발팀에 약팔때 최고 !

Page 30: NDC2016-게임에 특화된 덤프 분석 시스템

크래시리포터 : 웹 페이지

덤프 다운로드추세 그래프 확인 등

Page 31: NDC2016-게임에 특화된 덤프 분석 시스템

크래시리포터 시스템 소개기본 시스템 설계 및 구축 게임에 특화된 덤프 분석시스템내부 서비스 운영 노하우

Page 32: NDC2016-게임에 특화된 덤프 분석 시스템

사실 이것만으로도 훌륭한 동작

좀 더 개선할 것이 없는지 고민

Page 33: NDC2016-게임에 특화된 덤프 분석 시스템

C- Runtime Error (purecall, invalid_parameter, new 등등 ..)

CRT Error 는 기본적으로 크래시리포터에서 핸들링 되지 않는다 .

크래시리포터 : UnhandledExceptionFilter(…)

CRT Error Handling

C-Runtime Error 는 제각기 다른 핸들러가 존재하기 때문

Page 34: NDC2016-게임에 특화된 덤프 분석 시스템

CRT Error Handling

더 간단한 방법으로는각 핸들러에서 강제 크래시를 발생 !!!(RaiseException)

크래시가 발생하면 크래시리포터에서 예외 핸들링되는 방식( 약간의 꼼수같지만 대부분 라이브러리에서 사용하는 방식 )

Page 35: NDC2016-게임에 특화된 덤프 분석 시스템

라이브러리에서 CallBack 함수 제공

덤프 생성

크래시 발생

덤프 전송

클라이언트 종료

콜백함수

콜백함수

라이브러리로 제작시 여러가지 CallBack API 제공 !!

크래시시점에 덤프 발생 전 : BeforeCallBack덤프 전송 완료 후 : AfterCallBack

Page 36: NDC2016-게임에 특화된 덤프 분석 시스템

HTTPS 를 사용시엔 NGINX

해외 서버 적용시엔 HTTPS 사용

웹서버를 여러대 두는 방안보다는 Nginx 로 SSL 인증 처리 후 프록시 설정

NEXON KOREA

HTTP

HTTPSHTTP Web-

Server(SSL)

client

Game Server

LoginServer

Center

Server

해외 법인

Page 37: NDC2016-게임에 특화된 덤프 분석 시스템

풀 덤프가 필요한 경우

풀덤프는 서버적용시에만 사용

서버 용량 문제 , 내부 콜스택 분석까지는 미니덤프만으로 충분하기 때문

크래시리포터에서는 기본적으로 미니덤프만 수집풀 덤프가 필요할 경우 로컬에 저장

Page 38: NDC2016-게임에 특화된 덤프 분석 시스템

보안솔루션 (themida) 사용시 후처리는 필수

보안솔루션 ( 더미다 ) 으로 인해 파일 정보 변경이 원인 !!

CVK K

보안솔루션 사용되어 배포 되는 바이너리로 생성된 덤프는 덤프 분석이 안됨 !

디버깅정보 누실

Page 39: NDC2016-게임에 특화된 덤프 분석 시스템

자세한 내용은 아래 발표 참고NDC-2012 덤프 파일을 통한 사후 디버깅 실용 테크닉 –김이선 님( 툴 제공 : dat.exe)

보안솔루션 (themida 등 ) 사용할 경우 후처리 필요

CVK

KDMP

KT T T클라이언트 (원본 )

클라이언트 (배포버전 )

Tool(dat.exe)DMP

KT

DMP

CVK

T

Page 40: NDC2016-게임에 특화된 덤프 분석 시스템

라이브 운영에 필요한 기능을 추가기본 시스템 제작 완료

Page 41: NDC2016-게임에 특화된 덤프 분석 시스템

운영의 시작은 추세 그래프 확인

끓는 물에 개구리 삶기 (boiling frog syndrome)서서히 증가하는 크래시는 확인하기가 어렵다 .

Page 42: NDC2016-게임에 특화된 덤프 분석 시스템

추세 그래프는 주 단위로 비교하며 확인지난주 ( 지 지난주 )와 비교해서 수치 확인

Page 43: NDC2016-게임에 특화된 덤프 분석 시스템

사례로 확인해보는 추세 그래프

문제 확인 및 수정

?!?!?!! ?!?!?!!

수정 패치를 진행하였음에도 불구하고 크래시 수 증가

Page 44: NDC2016-게임에 특화된 덤프 분석 시스템

유저가 많아 지면 자연스럽게 덤프도 많아지는데 ..

대규모 패치로 평균 접속 유저 수 증가

이런 상황에서 클라이언트 안정성이 낮아졌다고 할 수 있을까 ?

크래시 수접속한 유저 수

Page 45: NDC2016-게임에 특화된 덤프 분석 시스템

새로운 데이터 ( 수치 ) 를 만들어보자 !

크래시 율 (%) = 시간당 크래시 수 / 시간당 유저의 평균 접속자 수 (평접 )

“ 유저 수에 따른 크래시 변화”와 “실제 안정성으로 인해 발생하는 크래시 수 변화”를 구분

Page 46: NDC2016-게임에 특화된 덤프 분석 시스템

클라이언트 안정성은 크래시율로 확인 !

단순 크래시 수 크래시 율

크래시 율 (%) = 단위 시간당 크래시 수 / 단위 시간당 평접

Page 47: NDC2016-게임에 특화된 덤프 분석 시스템

기존과 비교해서 얼마나 늘고있는지 동향 파악하기

콜스택별 시간당 발생률버전별 덤프 순위

덤프 (콜스택 ) 동향파악

Page 48: NDC2016-게임에 특화된 덤프 분석 시스템

기존 크래시리포터 시스템을 적용했을때 대부분 종료팅만 확인되는 문제가 있음 .그런 경우를 대비해 시급하지 않은 덤프는 분류 (종료팅 )

시급하지 않은 덤프 (종료팅 ) 은 분류종료팅은 별도로 표시하여 시급한 이슈와 분류( 아예 수집을 안하는 기능도 옵션으로 제공 )

종료팅

일반팅

Page 49: NDC2016-게임에 특화된 덤프 분석 시스템

1000

접속한 유저 수

2000

0

3000

국가마다 유저의 규모가 다르므로 생길 수 있는 이슈유저가 규모가 클 경우 덤프 수도 많다 Ver2접속한 유저 수

20000

40000

0

60000

80000

0

2000

4000

6000

100

200

300

400

0

크래시 수

프로젝트 한 개가 시간당 4000 개 덤프가 발생하면서버에서는 4000 * 55 개 ( 프로젝트 55 개 ) 덤프 분석이 이뤄져야함 ..

서버부하

Page 50: NDC2016-게임에 특화된 덤프 분석 시스템

해외 적용 시 반드시 필요한 기능해외를 위해 넣은 기능이지만 가끔은 국내도… 쓰는게 함정 ..

유저의 규모가 클경우 샘플링하여 수집

덤프 수집 비율을 서버에서 실시간 변경 ( 덤프 수집서버에서 설정 )

샘플링하더라도 크래시율로 보면 클라이언트 안정성은 동일

단순 크래시 수 크래시율 ( 단위시간당 크래시 )

Page 51: NDC2016-게임에 특화된 덤프 분석 시스템

추가 로그 적재 기능

크래시시점에 여러가지 로그를 남길 수 있도록 API 를 제공

json

개발팀에서 크래시 시점 정보 삽입캐릭터 직업마지막 스테이지마지막 위치마지막 던전 /맵등등…

Page 52: NDC2016-게임에 특화된 덤프 분석 시스템

클라이언트 로그 파일도 함께 적재

보안 이슈가 있을 만한 것은 암호화 / 복호화

로그 뿐만 아니라 ..

log

log

log

클라이언트 로그로 유저의 흐름을 인지할 수 있다

맵 로딩 하는 과정에서 죽은 케이스 ㅎㅎ

Page 53: NDC2016-게임에 특화된 덤프 분석 시스템

넥슨 크래시리포터에서는

마지막 시점 스크린샷까지 첨부 가능 !!

맵 로딩시점에문제가있음 .jpg

Page 54: NDC2016-게임에 특화된 덤프 분석 시스템

마지막 시점의 스크린샷은 많은 도움이 된다 !실제로 콜스택 / 로그만으로 확인이 어려운 경우

퀴즈 : 아래 스크린샷을 보고 버그로 의심되는 부분을 찾으시오 .

Page 55: NDC2016-게임에 특화된 덤프 분석 시스템

해외서비스에도 크래시리포터 도입하기

손쉽게

Page 56: NDC2016-게임에 특화된 덤프 분석 시스템

해외 서비스에 필요한 것은 덤프 수집 서버

실제로 유저가 접속하는 덤프 수집서버는 해외에 설치하자 !

덤프 수집서버

덤프 수집서버

덤프 수집서버

분석서버

Dump

Dump

Dump

분석 서버는 우리가 관리

Page 57: NDC2016-게임에 특화된 덤프 분석 시스템

해외서비스는 클라우드 서비스가 해법

AWS(Amazon Web Services)EC2 활용으로 간단하게 해결

값 싼 t2.micro 만으로도 충분

Page 58: NDC2016-게임에 특화된 덤프 분석 시스템

크래시리포터 시스템 소개기본 시스템 설계 및 구축게임에 특화된 덤프 분석시스템

내부 서비스 운영 노하우

Page 59: NDC2016-게임에 특화된 덤프 분석 시스템

참고 : 여기서 말하는 운영은 게임 라이브 운영이 아니라 내부 개발자 서비스 운영을 말합니다 .

안정성 문제발생시 내부 알림실제 라이브 서비스에 도움이 될 만한 내부 운영 기능 제공

Page 60: NDC2016-게임에 특화된 덤프 분석 시스템

패치 후 일정 시간 이후 알림 메일 ( 패치 후 2 시간 )다양한 자동 알림

정신없는 패치때 모니터링을 하지 않아도 메일로 필요한 안정성 확인 메일

Page 61: NDC2016-게임에 특화된 덤프 분석 시스템

패치 이후 문제가 있다면 강력 푸쉬 !크래시 수 (율 ) 이 급증한 경우도 푸쉬

Page 62: NDC2016-게임에 특화된 덤프 분석 시스템

• 패치 후 2 시간 이후 알림 메일• 크래시수가 급증할 때 알림• 덤프 발생시마다 알림 메일 ( 서버 )• 덤프가 일정 시간동안 수집 안될 경우 알림

• 덤프매칭 실패가 되었을때 알림• 일일 보고 메일 ( 일주일치 / 전날과

비교 )• 주간 보고 메일 ( 일주일치 비교 )

다양한 자동 알림 리스트

Page 63: NDC2016-게임에 특화된 덤프 분석 시스템

상시 모니터링 진행

수동 모니터링도 어느정도 필요

모든 부분을 자동화 할 수는 없으니

Page 64: NDC2016-게임에 특화된 덤프 분석 시스템

여러 프로젝트의 안정성을 한눈에 확인GameServerDedicatedServer…

관리자 페이지로 모든 프로젝트 안정성을 한눈에 조감하자

Page 65: NDC2016-게임에 특화된 덤프 분석 시스템

덤프 분석 실패의 경우 그래프로 표시

덤프 분석 실패는 디테일하게 분류

대부분 심볼이 없어서 안맞는 이슈이지만 특이한 동향이 파악될 때도 있다 . ex) 작업장

Page 66: NDC2016-게임에 특화된 덤프 분석 시스템

모니터링 후 개발팀과 꾸준한 커뮤니케이션

Page 67: NDC2016-게임에 특화된 덤프 분석 시스템

덤프를 검색할 수 있도록 하자 !

Page 68: NDC2016-게임에 특화된 덤프 분석 시스템

검색기능은 작업장 흐름도 확인할 수 있다 .

Page 69: NDC2016-게임에 특화된 덤프 분석 시스템

통계 데이터 제공

Page 70: NDC2016-게임에 특화된 덤프 분석 시스템

Jupyter (ipython-notebook) 활용

웹 페이지로 모든 것을 나타낼 수는 없다 .

Jupyter 를 이용하면 대시보드에 없는 통계 분석도 파이썬 몇 줄로 바로 구해 차트로 볼 수 있음

Jupyter 활용 :

원하는 쿼리를 날려 데이터를 여러가지 가공할 수는 없을까 ?!

Page 71: NDC2016-게임에 특화된 덤프 분석 시스템

통계 서버를 이용한 통계 리포터 작성

DB개발자

Report(R-Markdown)

통계용 서버 더 나아가 통계 언어인 R 을

활용하여통계 리포트 작성(R-Markdown 형식의 레포트 )

사실 이 부분은 아직 작업 중 ..

Page 72: NDC2016-게임에 특화된 덤프 분석 시스템

이렇게 해서 만들어진 크래시리포터 웹 페이지 공개

Page 73: NDC2016-게임에 특화된 덤프 분석 시스템
Page 74: NDC2016-게임에 특화된 덤프 분석 시스템

개발팀으로부터 수 많은 피드백

Page 75: NDC2016-게임에 특화된 덤프 분석 시스템

세션 정리 및 결론

Page 76: NDC2016-게임에 특화된 덤프 분석 시스템

게임에 특화된

넥슨 통합 덤프 분석 시스템

Page 77: NDC2016-게임에 특화된 덤프 분석 시스템

넥슨이 잘한다는라이브 게임 서비스를 오래 지속하는 비결 중 하나

덤프 분석 시스템이 없다면

바로 도입하는 것을 추천

덤프 분석 시스템이 있다면

게임에 특화되게 변경을 추천

그리고 , 넥슨 관계사 분들은 저희 팀에 연락 주시는 것을 추천…

Page 78: NDC2016-게임에 특화된 덤프 분석 시스템

Q & A

special thanks to강 대현님송 창규님강 덕원님

Page 79: NDC2016-게임에 특화된 덤프 분석 시스템

감사합니다 .