77
개개개개 개개개 개개개개개 개 개개개 프프프프프프 프프프프 프프프프 . Nexon America 개개개 David Kim

개발사는 모르는 퍼블리셔의 뒷 이야기

Embed Size (px)

Citation preview

Page 1: 개발사는 모르는 퍼블리셔의 뒷 이야기

개발사는 모르는 퍼블리셔의 뒷 이야기 프로그래머의 시선으로 바라본다 .

Nexon America

김영현 David Kim

Page 2: 개발사는 모르는 퍼블리셔의 뒷 이야기

웹 프로그래머네트워크 프로그래머클라이언트 프로그래머

김영현 (David Kim)

소개

프로그램 팀장웹 팀장기술 팀장 소싱 매니져

프로젝트 매니져프로듀서

Senior Technical Operations Engineer

( 약 15 년간… )

Nexon America

Page 3: 개발사는 모르는 퍼블리셔의 뒷 이야기

( 출처 : https://zapier.com/blog/aral-balkan-design-talk/)

플러그를 꽂을 수 있게 바꿔주세요 . 테이블 다 뜯어야

하고 , 어렵습니다 .

사용자가 요청이 많습니다 . 왜 그런걸 쓴답니까 ..

맞는 걸 쓰라고 하세요 .

Page 4: 개발사는 모르는 퍼블리셔의 뒷 이야기

소리없이 사용자 감소

매출 감소

서비스 중단

원인분석의 난항

Page 5: 개발사는 모르는 퍼블리셔의 뒷 이야기
Page 6: 개발사는 모르는 퍼블리셔의 뒷 이야기

왜… 이런일이 벌어질까 ?

( 출처 : http://www.gettingagile.com/2012/03/04/the-stability-index-focusing-on-release-stabilization/)

Page 7: 개발사는 모르는 퍼블리셔의 뒷 이야기

( 假定 ) 연 120 억 매출 게임 (5hrs maint. bi-weekly) 연 1 억 7 천 8 백만원 패치로 인한 매출

손실 연봉 5 천만원 개발자 3 명 + 치맥

비용 : 돈 + 사람의 노력 +스트레스

Page 8: 개발사는 모르는 퍼블리셔의 뒷 이야기

20 번의 점검74 시간

Page 9: 개발사는 모르는 퍼블리셔의 뒷 이야기

서비스를 위한 개발 요청

컨텐츠 개발 지연안정성 감소

완성도 / 생산성 감소

Page 10: 개발사는 모르는 퍼블리셔의 뒷 이야기

( 출처 : http://www.dongabiz.com/ASP/SKENO/article_view.php?atno=1102027101&chap_no=1&category_group=/)

Page 11: 개발사는 모르는 퍼블리셔의 뒷 이야기

자극적인 업데이트

개발사 스트레스

유저 스트레스

퍼블리셔 스트레스

Page 12: 개발사는 모르는 퍼블리셔의 뒷 이야기
Page 13: 개발사는 모르는 퍼블리셔의 뒷 이야기

( 출처 : http://blog.skenergy.com/752, http://www.workingschool.net/21, http://jjalm.tistory.com/98, http://anotherstep.ruzuku.com/your-online-course-business-needs-focus/)

Page 14: 개발사는 모르는 퍼블리셔의 뒷 이야기

하고 싶은 이야기들…

파일 구성

패치 방법

온라이브 리로드로그인

게임 서버 썸머타임크래시

채팅서버

실시간 이벤트

Q/A 를 위한 커맨드 엔진

서버 API무점검 패치 클라에 노출되는 마케팅

KPI 의 정의

로그 남겨주세요

바이너리 관리

Page 15: 개발사는 모르는 퍼블리셔의 뒷 이야기

추려낸 할 이야기들…

파일 구성

패치 방법

온라이브 리로드

로그인

게임 서버 썸머타임크래시

채팅서버

실시간 이벤트

Q/A 를 위한 커맨드 엔진

서버 API무점검 패치 클라에 노출되는 마케팅

KPI 의 정의

로그 남겨주세요

바이너리 관리

Page 16: 개발사는 모르는 퍼블리셔의 뒷 이야기

가입 인스톨 로그인 플레이

Page 17: 개발사는 모르는 퍼블리셔의 뒷 이야기

게임을 접하고 접속하는 유저를 따라가 봅시다 .

( 출처 : http://www.australiangeographic.com.au/outdoor/guides/2010/05/guide-to-insurance-for-adventure-travel/)

Page 18: 개발사는 모르는 퍼블리셔의 뒷 이야기

( 출처 : http://www.ohmynews.com/NWS_Web/view/at_pg.aspx?CNTN_CD=A0001310307)

Page 19: 개발사는 모르는 퍼블리셔의 뒷 이야기

( 출처 : http://www.lotteimall.com/goods/viewGoodsDetail.lotte?goods_no=9387707http://m.ppomppu.co.kr/new/bbs_view.php?id=oversea&no=428600)

Page 20: 개발사는 모르는 퍼블리셔의 뒷 이야기

가입

클라이언트 인스톨 다운로드

클라이언트 패치

게임 로그인

게임 서버 접속

크래시 발생

이벤트

Page 21: 개발사는 모르는 퍼블리셔의 뒷 이야기

파일 구성은 간결하게 !Keep It Short and Simple

( 출처 : http://threestory.tistory.com/14)

Page 22: 개발사는 모르는 퍼블리셔의 뒷 이야기
Page 23: 개발사는 모르는 퍼블리셔의 뒷 이야기

인스톨 하다가 포기

패치 하다가 문제 발생

용량 많아서 포기

하드디스크 느려서 포기

( 출처 : http://geoffblades.com/most-people-should-give-up-on-what-they-want/)

Page 24: 개발사는 모르는 퍼블리셔의 뒷 이야기

( 참고 : http://www.slideshare.net/slideshow/embed_code/key/lOtZPsSUBtfbVp)

Page 25: 개발사는 모르는 퍼블리셔의 뒷 이야기

클라 데이터 파일을 서버 데이터 파일로 그대로 사용 ?

서버 배포시간 증가 + 서버 로딩 시간 증가 점검 시간 증가

( 출처 : http://m.blog.daum.net/dw0179/486)

Page 26: 개발사는 모르는 퍼블리셔의 뒷 이야기

가입

클라이언트 인스톨 다운로드

게임 로그인

게임 서버 접속

크래시 발생

이벤트

클라이언트 패치

Page 27: 개발사는 모르는 퍼블리셔의 뒷 이야기

패치는 유저의 편의를 위해서

( 출처 : http://elvg.ch/entspannung/entwicklung.php)

Page 28: 개발사는 모르는 퍼블리셔의 뒷 이야기

버전만 검사

패치서버1016to1021 1017to10211018to10211019to10211020to1021

PatchFile1018to1021

Version. 1018

Version. 1021

버전확인

다운로드 및 패치

Page 29: 개발사는 모르는 퍼블리셔의 뒷 이야기

문제점 1

버전이 오래 되었을 경우 : 풀버전 재설치

Page 30: 개발사는 모르는 퍼블리셔의 뒷 이야기

문제점 2.

버전은 같으나 파일이 손상되었을 경우 : 재설치

Page 31: 개발사는 모르는 퍼블리셔의 뒷 이야기

문제점 3.

패치 클라이언트 만드는 데에 많은 시간 소요

Page 32: 개발사는 모르는 퍼블리셔의 뒷 이야기

패치서버1021 파일 (

압축 )

Monster.pakSoundA.pakGame.exe

Version. 1018 Version.

1021

버전 및 파일리스트 확인

다른 파일만 다운로드 및 패치

버전 검사 + 파일 검사 ( 다르면 다른 파일만 패치 )

파일리스트

Page 33: 개발사는 모르는 퍼블리셔의 뒷 이야기

파일리스트 파일명생성일자 / 시간 (UTC)파일사이즈(option : Checksum)

가벼운 사이즈

Page 34: 개발사는 모르는 퍼블리셔의 뒷 이야기

Monster.pkg 2014.03.02 15:00:06

Character.pkg 2014.03.01 09:00:06

…Monster.pkg 2014.03.02

14:00:06Character.pkg 2014.03.01

08:00:06…

Monster.pkg 2014.03.02 15:00:06

Character.pkg 2014.03.01 09:00:06

패치 서버 유저 PC

Download ALL files

( 출처 : http://www.inven.co.kr/board/powerbbs.php?come_idx=3310&l=41473)

Page 35: 개발사는 모르는 퍼블리셔의 뒷 이야기

장점 :

파일 손상이더라도 해당 파일만 복구가능오래된 버전도 다른 파일만 패치패치 클라이언트 제작 시간 축소

Page 36: 개발사는 모르는 퍼블리셔의 뒷 이야기

DIFF patch

DIFF01

DIFF02

v. 141

v. 140

DIFF01DIFF02

Patch set

v. 140

DIFF01

DIFF02

v. 141

Page 37: 개발사는 모르는 퍼블리셔의 뒷 이야기

가입

클라이언트 인스톨 다운로드

게임 서버 접속

크래시 발생

이벤트

게임 로그인클라이언트 패치

Page 38: 개발사는 모르는 퍼블리셔의 뒷 이야기

광고 가입 로그인 플레이

Page 39: 개발사는 모르는 퍼블리셔의 뒷 이야기

끊어진 유저의 흐름 이을 수 있게 해주세요

( 출처 :http://blog.daum.net/sonnaa40)

Page 40: 개발사는 모르는 퍼블리셔의 뒷 이야기

수동비교

Page 41: 개발사는 모르는 퍼블리셔의 뒷 이야기
Page 42: 개발사는 모르는 퍼블리셔의 뒷 이야기
Page 43: 개발사는 모르는 퍼블리셔의 뒷 이야기

… … AdCodePlayer001 … FB020Player002 … GG321

퍼블리셔인증서버

로그인 서버인증요청인증요청

게임계정 DB

동기화

인증응답

Page 44: 개발사는 모르는 퍼블리셔의 뒷 이야기

쉽지만 , 구조변경이 필요

Page 45: 개발사는 모르는 퍼블리셔의 뒷 이야기

개발사의 이해가 있으면…

( 출처 : http://www.slideshare.net/LukeStapley/introduction-to-business-english-day-12)

Page 46: 개발사는 모르는 퍼블리셔의 뒷 이야기

가입

클라이언트 인스톨 다운로드

크래시 발생

이벤트

클라이언트 패치

게임서버 접속

그러나 .. 문제발생 !

게임 로그인

Page 47: 개발사는 모르는 퍼블리셔의 뒷 이야기

서버가 다운되었을 때에 ..

( 출처 : http://cliparts.co/tombstone-clipart)

Page 48: 개발사는 모르는 퍼블리셔의 뒷 이야기

( 출처 : http://www.whimsys-menagerie.com/bloat.htm, http://pinoria.com/entry-level-engineers-earn-phds/)

Page 49: 개발사는 모르는 퍼블리셔의 뒷 이야기

( 출처 : https://manandthegoose.wordpress.com/)

Page 50: 개발사는 모르는 퍼블리셔의 뒷 이야기

서버는 죽으면 살아나야 하고 ,

( 출처 : Planet vs Zombie)

Page 51: 개발사는 모르는 퍼블리셔의 뒷 이야기

서버는 살아나면 ( 다시 / 스스로 ) 연결도 되어하고 ,

Page 52: 개발사는 모르는 퍼블리셔의 뒷 이야기

서버는 스스로 죽을 줄도 알아야 합니다 .

( 출처 : http://blog.daum.net/_blog/BlogTypeView.do?blogid=04oGj&articleno=13844419)

Page 53: 개발사는 모르는 퍼블리셔의 뒷 이야기

스스로 재시작 하는 서버의 사례

서버기본 : 120 MB 사용

200 MB

재시작조건

Page 54: 개발사는 모르는 퍼블리셔의 뒷 이야기

( 출처 : http://moviesnewdownload.blogspot.kr/2013/03/download-die-hard-6-good-day-to-die.html)

Page 55: 개발사는 모르는 퍼블리셔의 뒷 이야기

가입

클라이언트 인스톨 다운로드

크래시 발생이벤트

클라이언트 패치

게임서버 접속

게임 로그인

Page 56: 개발사는 모르는 퍼블리셔의 뒷 이야기

프로그래머의 영원한 적 : 크래시

( 출처 : http://dynamicy.github.io/blog/2014/11/08/use-lldb-to-check-coredump/)

Page 57: 개발사는 모르는 퍼블리셔의 뒷 이야기

( 환경 : http://www.tutorialspoint.com/compile_c_online.php)

Page 58: 개발사는 모르는 퍼블리셔의 뒷 이야기

크래시를 대하는 난감한 자세크래시가 많이 난답니다 !!

많이 심각해요 게임 내에서요게시판에서요

어떻게 알았나요 ? 심각하나요 ? 어디에서요 ?

Page 59: 개발사는 모르는 퍼블리셔의 뒷 이야기

( 출처 : http://blissyoga.us/guru/http://www.strategicdc.com/the-chiropractic-audit-compliance-staff-bomb-you-dont-want-to-explode-

part-1/)

Page 60: 개발사는 모르는 퍼블리셔의 뒷 이야기

어디서얼마나( 假定 )

유저의 모든 이동을 인덱스로 서버에 기록

Page 61: 개발사는 모르는 퍼블리셔의 뒷 이야기

( 출처 : http://en.wikipedia.org/wiki/Bomb_Jack)

Page 62: 개발사는 모르는 퍼블리셔의 뒷 이야기

크래시 정보 수집의 일반

크래시 수집 서버Disconnecti

on

크래시 정보 전송

( 출처 : http://jezebel.com/that-50-percent-divorce-statistic-hasnt-been-true-for-a-1665833364)

CRASH!!!

Page 63: 개발사는 모르는 퍼블리셔의 뒷 이야기

개선된 크래시 정보 수집

로그인 서버인증요청크래시 수집

서버

크래시 정보가 있으면 전송 , 삭제

( 출처 : http://www.crossover.org.au/how-to-get-a-90-success-rate-in-church-planting/)

Page 64: 개발사는 모르는 퍼블리셔의 뒷 이야기

이벤트 !!

가입

클라이언트 인스톨 다운로드

크래시 발생

클라이언트 패치

게임서버 접속

게임 로그인

Page 65: 개발사는 모르는 퍼블리셔의 뒷 이야기

이벤트의 종류

( 출처 : http://www.nexon.nethttp://www.eqn-rp.com/forum/m/15888517/viewthread/16522982-illusion-progression-in-mmorpgs-leveling-

obsolete/post/last)

Page 66: 개발사는 모르는 퍼블리셔의 뒷 이야기

실시간은 경쟁력 !

( 출처 : https://davidjcarr.wordpress.com/tag/real-time/)

Page 67: 개발사는 모르는 퍼블리셔의 뒷 이야기

시스템 스케줄러 활용

Page 68: 개발사는 모르는 퍼블리셔의 뒷 이야기

실시간 이벤트의 장점

( 출처 : https://www.propellerheads.se/blog/game-night-at-propellerhq)

Page 69: 개발사는 모르는 퍼블리셔의 뒷 이야기

아이템 지급을 위해 서버다운 ?

점검필요 : 인벤토리에 바로 insert/update

대안 : 우편함으로 insert/update ( 우편함이 max 가 되는 경우만 예외처리 )

Page 70: 개발사는 모르는 퍼블리셔의 뒷 이야기

목표 : 3 일짜리 아이템 지급 . 14 일 안에 소진 .대상 : 특정 조건의 추출된 유저

인벤토리 update 문제 : 사용 못할 유저발생 . ( 지급 3 일이후 접속 )

우편함 update 문제 : 14 일안에 소진 불가 . ( 늦게 가져가는 유저 )

추천 : 로그인 할때 받아가면 좋음 .

실시간 로그인 이벤트 ? 특정 조건의 유저를 맞추지 못함 .

Page 71: 개발사는 모르는 퍼블리셔의 뒷 이야기

지급테이블에 insert 로그인시 select

로그인 실시간 이벤트 + 대상자 테이블

점검 없이 지급 가능대규모 지급에도 서비스에 영향이 적음

Page 72: 개발사는 모르는 퍼블리셔의 뒷 이야기

아이템 판매 /종료를 위해 서버다운 ?

오프라인 마트도 온라인 쇼핑몰도 상품판매를 위해서 점검을 하지 않습니다 .

Page 73: 개발사는 모르는 퍼블리셔의 뒷 이야기

게임 샵서버퍼블리셔 샵 서버

아이템 정보

게임 서버

아이템 정보

이벤트 발생 데이타 수집

Page 74: 개발사는 모르는 퍼블리셔의 뒷 이야기

재미 있는 게임 만들어 주십시오 .

야근 많이 하지 마시고 ..

Page 75: 개발사는 모르는 퍼블리셔의 뒷 이야기

좋은 파트너 !

( 출처 : http://www.vitalvoiceanddata.com/partnership/)

Page 76: 개발사는 모르는 퍼블리셔의 뒷 이야기

Queue & A*

Page 77: 개발사는 모르는 퍼블리셔의 뒷 이야기

감사합니다 .

Thanks to : 큐로드 (Qroad) (前 웹젠 , 크라이텍 ) 진석준 님

플레이파이 게임즈 (前 액토즈 소프트 ) 손정이 님넥슨아메리카 임현규님 , 김태현님 , 윤지선님 , 강병탁님

그리고 소중한 경험을 하게 해주신 모든 개발자분들…