Upload
david-kim
View
65
Download
4
Embed Size (px)
Citation preview
개발사는 모르는 퍼블리셔의 뒷 이야기 프로그래머의 시선으로 바라본다 .
Nexon America
김영현 David Kim
웹 프로그래머네트워크 프로그래머클라이언트 프로그래머
김영현 (David Kim)
소개
프로그램 팀장웹 팀장기술 팀장 소싱 매니져
프로젝트 매니져프로듀서
Senior Technical Operations Engineer
( 약 15 년간… )
Nexon America
( 출처 : https://zapier.com/blog/aral-balkan-design-talk/)
플러그를 꽂을 수 있게 바꿔주세요 . 테이블 다 뜯어야
하고 , 어렵습니다 .
사용자가 요청이 많습니다 . 왜 그런걸 쓴답니까 ..
맞는 걸 쓰라고 하세요 .
소리없이 사용자 감소
매출 감소
서비스 중단
원인분석의 난항
왜… 이런일이 벌어질까 ?
( 출처 : http://www.gettingagile.com/2012/03/04/the-stability-index-focusing-on-release-stabilization/)
( 假定 ) 연 120 억 매출 게임 (5hrs maint. bi-weekly) 연 1 억 7 천 8 백만원 패치로 인한 매출
손실 연봉 5 천만원 개발자 3 명 + 치맥
비용 : 돈 + 사람의 노력 +스트레스
20 번의 점검74 시간
서비스를 위한 개발 요청
컨텐츠 개발 지연안정성 감소
완성도 / 생산성 감소
( 출처 : http://www.dongabiz.com/ASP/SKENO/article_view.php?atno=1102027101&chap_no=1&category_group=/)
자극적인 업데이트
개발사 스트레스
유저 스트레스
퍼블리셔 스트레스
( 출처 : 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/)
하고 싶은 이야기들…
파일 구성
패치 방법
온라이브 리로드로그인
게임 서버 썸머타임크래시
채팅서버
실시간 이벤트
Q/A 를 위한 커맨드 엔진
서버 API무점검 패치 클라에 노출되는 마케팅
KPI 의 정의
로그 남겨주세요
바이너리 관리
추려낸 할 이야기들…
파일 구성
패치 방법
온라이브 리로드
로그인
게임 서버 썸머타임크래시
채팅서버
실시간 이벤트
Q/A 를 위한 커맨드 엔진
서버 API무점검 패치 클라에 노출되는 마케팅
KPI 의 정의
로그 남겨주세요
바이너리 관리
가입 인스톨 로그인 플레이
게임을 접하고 접속하는 유저를 따라가 봅시다 .
( 출처 : http://www.australiangeographic.com.au/outdoor/guides/2010/05/guide-to-insurance-for-adventure-travel/)
( 출처 : http://www.ohmynews.com/NWS_Web/view/at_pg.aspx?CNTN_CD=A0001310307)
( 출처 : http://www.lotteimall.com/goods/viewGoodsDetail.lotte?goods_no=9387707http://m.ppomppu.co.kr/new/bbs_view.php?id=oversea&no=428600)
가입
클라이언트 인스톨 다운로드
클라이언트 패치
게임 로그인
게임 서버 접속
크래시 발생
이벤트
파일 구성은 간결하게 !Keep It Short and Simple
( 출처 : http://threestory.tistory.com/14)
인스톨 하다가 포기
패치 하다가 문제 발생
용량 많아서 포기
하드디스크 느려서 포기
( 출처 : http://geoffblades.com/most-people-should-give-up-on-what-they-want/)
( 참고 : http://www.slideshare.net/slideshow/embed_code/key/lOtZPsSUBtfbVp)
클라 데이터 파일을 서버 데이터 파일로 그대로 사용 ?
서버 배포시간 증가 + 서버 로딩 시간 증가 점검 시간 증가
( 출처 : http://m.blog.daum.net/dw0179/486)
가입
클라이언트 인스톨 다운로드
게임 로그인
게임 서버 접속
크래시 발생
이벤트
클라이언트 패치
패치는 유저의 편의를 위해서
( 출처 : http://elvg.ch/entspannung/entwicklung.php)
버전만 검사
패치서버1016to1021 1017to10211018to10211019to10211020to1021
PatchFile1018to1021
Version. 1018
Version. 1021
버전확인
다운로드 및 패치
문제점 1
버전이 오래 되었을 경우 : 풀버전 재설치
문제점 2.
버전은 같으나 파일이 손상되었을 경우 : 재설치
문제점 3.
패치 클라이언트 만드는 데에 많은 시간 소요
패치서버1021 파일 (
압축 )
Monster.pakSoundA.pakGame.exe
Version. 1018 Version.
1021
버전 및 파일리스트 확인
다른 파일만 다운로드 및 패치
버전 검사 + 파일 검사 ( 다르면 다른 파일만 패치 )
파일리스트
파일리스트 파일명생성일자 / 시간 (UTC)파일사이즈(option : Checksum)
가벼운 사이즈
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)
장점 :
파일 손상이더라도 해당 파일만 복구가능오래된 버전도 다른 파일만 패치패치 클라이언트 제작 시간 축소
DIFF patch
DIFF01
DIFF02
v. 141
v. 140
DIFF01DIFF02
Patch set
v. 140
DIFF01
DIFF02
v. 141
가입
클라이언트 인스톨 다운로드
게임 서버 접속
크래시 발생
이벤트
게임 로그인클라이언트 패치
광고 가입 로그인 플레이
끊어진 유저의 흐름 이을 수 있게 해주세요
( 출처 :http://blog.daum.net/sonnaa40)
수동비교
… … AdCodePlayer001 … FB020Player002 … GG321
퍼블리셔인증서버
로그인 서버인증요청인증요청
게임계정 DB
동기화
인증응답
쉽지만 , 구조변경이 필요
개발사의 이해가 있으면…
( 출처 : http://www.slideshare.net/LukeStapley/introduction-to-business-english-day-12)
가입
클라이언트 인스톨 다운로드
크래시 발생
이벤트
클라이언트 패치
게임서버 접속
그러나 .. 문제발생 !
게임 로그인
서버가 다운되었을 때에 ..
( 출처 : http://cliparts.co/tombstone-clipart)
( 출처 : http://www.whimsys-menagerie.com/bloat.htm, http://pinoria.com/entry-level-engineers-earn-phds/)
( 출처 : https://manandthegoose.wordpress.com/)
서버는 죽으면 살아나야 하고 ,
( 출처 : Planet vs Zombie)
서버는 살아나면 ( 다시 / 스스로 ) 연결도 되어하고 ,
서버는 스스로 죽을 줄도 알아야 합니다 .
( 출처 : http://blog.daum.net/_blog/BlogTypeView.do?blogid=04oGj&articleno=13844419)
스스로 재시작 하는 서버의 사례
서버기본 : 120 MB 사용
200 MB
재시작조건
( 출처 : http://moviesnewdownload.blogspot.kr/2013/03/download-die-hard-6-good-day-to-die.html)
가입
클라이언트 인스톨 다운로드
크래시 발생이벤트
클라이언트 패치
게임서버 접속
게임 로그인
프로그래머의 영원한 적 : 크래시
( 출처 : http://dynamicy.github.io/blog/2014/11/08/use-lldb-to-check-coredump/)
( 환경 : http://www.tutorialspoint.com/compile_c_online.php)
크래시를 대하는 난감한 자세크래시가 많이 난답니다 !!
많이 심각해요 게임 내에서요게시판에서요
어떻게 알았나요 ? 심각하나요 ? 어디에서요 ?
( 출처 : http://blissyoga.us/guru/http://www.strategicdc.com/the-chiropractic-audit-compliance-staff-bomb-you-dont-want-to-explode-
part-1/)
어디서얼마나( 假定 )
유저의 모든 이동을 인덱스로 서버에 기록
( 출처 : http://en.wikipedia.org/wiki/Bomb_Jack)
크래시 정보 수집의 일반
크래시 수집 서버Disconnecti
on
크래시 정보 전송
( 출처 : http://jezebel.com/that-50-percent-divorce-statistic-hasnt-been-true-for-a-1665833364)
CRASH!!!
개선된 크래시 정보 수집
로그인 서버인증요청크래시 수집
서버
크래시 정보가 있으면 전송 , 삭제
( 출처 : http://www.crossover.org.au/how-to-get-a-90-success-rate-in-church-planting/)
이벤트 !!
가입
클라이언트 인스톨 다운로드
크래시 발생
클라이언트 패치
게임서버 접속
게임 로그인
이벤트의 종류
( 출처 : http://www.nexon.nethttp://www.eqn-rp.com/forum/m/15888517/viewthread/16522982-illusion-progression-in-mmorpgs-leveling-
obsolete/post/last)
실시간은 경쟁력 !
( 출처 : https://davidjcarr.wordpress.com/tag/real-time/)
시스템 스케줄러 활용
실시간 이벤트의 장점
( 출처 : https://www.propellerheads.se/blog/game-night-at-propellerhq)
아이템 지급을 위해 서버다운 ?
점검필요 : 인벤토리에 바로 insert/update
대안 : 우편함으로 insert/update ( 우편함이 max 가 되는 경우만 예외처리 )
목표 : 3 일짜리 아이템 지급 . 14 일 안에 소진 .대상 : 특정 조건의 추출된 유저
인벤토리 update 문제 : 사용 못할 유저발생 . ( 지급 3 일이후 접속 )
우편함 update 문제 : 14 일안에 소진 불가 . ( 늦게 가져가는 유저 )
추천 : 로그인 할때 받아가면 좋음 .
실시간 로그인 이벤트 ? 특정 조건의 유저를 맞추지 못함 .
지급테이블에 insert 로그인시 select
로그인 실시간 이벤트 + 대상자 테이블
점검 없이 지급 가능대규모 지급에도 서비스에 영향이 적음
아이템 판매 /종료를 위해 서버다운 ?
오프라인 마트도 온라인 쇼핑몰도 상품판매를 위해서 점검을 하지 않습니다 .
게임 샵서버퍼블리셔 샵 서버
아이템 정보
게임 서버
아이템 정보
이벤트 발생 데이타 수집
재미 있는 게임 만들어 주십시오 .
야근 많이 하지 마시고 ..
좋은 파트너 !
( 출처 : http://www.vitalvoiceanddata.com/partnership/)
Queue & A*
감사합니다 .
Thanks to : 큐로드 (Qroad) (前 웹젠 , 크라이텍 ) 진석준 님
플레이파이 게임즈 (前 액토즈 소프트 ) 손정이 님넥슨아메리카 임현규님 , 김태현님 , 윤지선님 , 강병탁님
그리고 소중한 경험을 하게 해주신 모든 개발자분들…