카카오게임 첫 도전기

27
카카오게임 첫 도전기 ㈜블리스소프트 김경민

Upload: kim-min

Post on 23-Jun-2015

1.027 views

Category:

Technology


0 download

DESCRIPTION

Devon 2013 발표자료

TRANSCRIPT

Page 1: 카카오게임 첫 도전기

카카오게임 첫 도전기

㈜블리스소프트

김경민

Page 2: 카카오게임 첫 도전기

회사소개

• 주식회사 블리스소프트

• 캐쥬얼게임 전문 모바일게임개발사

• 마우스피싱(Rat Fishing)

• 돼지러너 for kakao

• 아프리카TV로부터 투자

Page 3: 카카오게임 첫 도전기

발표자소개

• 김경민

• COO

• 사업제안 언제든 환영

[email protected]

Page 4: 카카오게임 첫 도전기

스크린샷

Page 5: 카카오게임 첫 도전기

돼지러너 소개

• iOS, Android(구글 플레이) • 점핑런게임 • 늑대의 먹이가 되지 않기 위해 도망치는 돼지의 러닝 + 점핑요소 가미

• 친구와 함께 우정릴레이 • 100만 조합의 나만의 돼지 • 아프리카TV 퍼블리싱 • 출시 3일만에 구글플레이 무료게임 순위 1위 • 200만 회원 돌파 • 해외 진출 예정

Page 6: 카카오게임 첫 도전기

게임 컨셉

• 기존 러닝에 더해 점핑(높이높이)요소를 추가

• 멀리도 가야하지만 높이도 올라가야한다

• 우정릴레이를 통한 누적거리 계산과 보너스선물

• 100만종의 조합이 가능한 돼지구성

• 세트조합, 히든조합으로 특수효과 발동

Page 7: 카카오게임 첫 도전기

돼지러너 소개

• cocos2d-x

• LAMP, mongoDB, memcached

• 팀구성

– PM 1명

–게임디자이너 1명

–아트디자이너 2명

–클라이언트 개발자 3명

–서버 개발자 1명

Page 8: 카카오게임 첫 도전기

게임서버 게임서버 게임서버 게임서버

운영서버

캐시서버 로그서버

DB서버

이미지 스토리지

Page 9: 카카오게임 첫 도전기

아키텍쳐

• 자체 IDC

• 로드밸런싱은 간단하게 라운드로빈 구성

• 게임서버와 나머지 서버들은 망분리

• 모든 통신은 SSL 이용

Page 10: 카카오게임 첫 도전기

게임서버

• LAMP – Linux, Apache, MySQL, PHP

• 모두 무료

• PHP는 코드 배포시 컴파일이나 서버의 재시동이 필요 없음

• RESTful API

• RESTful은 수평 확장이 매우 쉬움

Page 11: 카카오게임 첫 도전기

캐시서버

• Memcached

• 랭킹을 비롯한 임시데이터 저장소

• 유실되어도 상관없거나, 값의 무결성이 중요하지 않은 데이터 저장

• 질의 연산이 비싼 데이터를 캐싱하여 DB부하 분산

• 캐시서버가 다운되더라도 게임은 정상적으로 운영되도록 예외처리

Page 12: 카카오게임 첫 도전기

로그서버

• 많은 NoSQL 을 후보군으로 놓고 검토 – Schema less – 빠른 Insert속도

• mongoDB를 선택한 이유 – 방대한 문서와 예제, 구글링 검색결과 – RDB에서 넘어오기 가장 부담없는 NoSQL – 친절하게 SQL을 어떻게 mongoDB로 포팅해야하는지 제공

• 사용자 액션 수집(아이템 구매, 소비, 행동) • 로그서버가 다운되더라도 게임은 정상적으로 운영되도록 예외처리 • 데이터를 검색하기 위해 index 생성은 필수 • 서버 중지 없이 index를 생성할 수 있도록 락을 걸지 않는

Background 방식의 인덱스생성기능을 최신버전에서 지원

Page 13: 카카오게임 첫 도전기

스토리지 + CDN

• 공지사항, 이벤트 등에 쓰이는 이미지를 비롯한 리소스 보관

Page 14: 카카오게임 첫 도전기

경험과 배운것, 느낀점

• 당연한것들의 재발견

• Go to Basic

Page 15: 카카오게임 첫 도전기

인앱해킹

• 반드시 서버에서 결제정보를 재검증

• 영수증이 유효한지 체크(애플, 구글)

• 영수증이 기존에 처리된 영수증인지 주문번호를 통해 체크할것(중복 지급하지 않도록)

• 결제요청이 들어온 인앱상품이 우리 앱에 존재하는지 확인. 다른 앱의 유효한 영수증이 날아온다(iOS)

Page 16: 카카오게임 첫 도전기

메모리해킹

• 점수, 코인 등 중요 정보는 꼭 메모리해킹 대응

• 업그레이드 상태, 체력, 공격력, 방어력, 속도 모두 메모리 해킹의 대상

• 요즘 메모리해킹 도구는 굉장히 발전해서 게임을 중간중간에 멈춘 다음에 변화하는 int값을 추려내어 값을 조작할 수 있는 해킹 인터페이스를 제공

• 모두 대응할 수 없다. 적당히 trade off

Page 17: 카카오게임 첫 도전기

안드로이드 테스트

• 안드로이드 파편화(다양한 크기의 디스플레이)

• 많은 기기를 테스트하면 할수록 좋다

• 오래된 기종이라도 많은 판매량을 기록한 기기들은 꼭 체크(갤2, 갤노트1)

Page 18: 카카오게임 첫 도전기

안드로이드 대응

• 심사가 없어서 좋은 안드로이드

• 마켓등록 후 3시간 정도면 검색가능(사람마다 차이가 있음)

• 원하는 기능을 제약없이 마음대로

• 다른 사람에게 인앱 선물하기 가능

Page 19: 카카오게임 첫 도전기

iOS 국내에서 어렵다

• 긴 검수기간

• Android에 비해 1~3개 빌드 늦어지는 iOS

• 개별 사용자 결제 취소 불가

• 대한민국은 Android 텃밭

• 돼지러너의 경우 95:5(Android : iOS)

Page 20: 카카오게임 첫 도전기

DB

• MyISAM엔진은 쓰기가 많은 게임용으론 적당하지 않다

• 꼭 검색에 사용하는 필드는 인덱스 생성

• slow-query 수시로 체크하여 튜닝

Page 21: 카카오게임 첫 도전기

퍼포먼스 테스트

• 출시전 게임 퍼포먼스 테스트

• Jmeter, apache ab, nGrinder

• RESTful API는 테스트 케이스를 만들기도 매우 간단하다

• 테스트를 통해 인덱스가 필요한 곳이나 비즈니스 로직을 개선해야할 부분을 발견할 수 있다.

Page 22: 카카오게임 첫 도전기

운영툴

• 운영툴 (CS툴 + 개발툴 + 통계툴) • 오버스펙 경계 • Boostrap은 빠른 개발도구 • 디자이너의 도움 없이 컴포넌트를 붙여넣는 식으로 빠르게 개발가능

• CS담당자들이 사용자의 행동을 추적하여 고객요청에 대응할 수 있도록

• 클라이언트개발자들이 스스로 값을 변경하여 클라이언트 기능을 테스트 해볼 수 있도록

• 매니저들이 중요 지표들을 확인할 수 있도록

• 운영툴개발은 개발자의 시간을 많이 빼앗지만 잘 만들어놓은 운영툴은 잡무에서 벗어날 수 있게 해주어 오히려 이득

Page 23: 카카오게임 첫 도전기

로그의 활용

• 미리미리 KPI 설정하자

• 계속 변경되는 게임기능상의 변화로 어쩔 수 없이 기능이 픽스되는 후반에 후다닥할 수밖에 없는 로그넣기 작업

• 필요한 로그만 넣기

• 활용 다 못한다

• 쓰레기 쌓아두는격

Page 24: 카카오게임 첫 도전기

통계가공

• KPI에 따른 통계

• 자주 체크해야하는 통계는 운영툴에서 언제든 볼 수 있도록 제공

• Google chart API

Page 25: 카카오게임 첫 도전기

디버그, 테스트 도구와 문서화

• RESTful API를 테스트 할 수 있는 도구를 자체 개발하여 사용중

• 문서화는 필수

• 클라이언트 개발자들이 쉽게 알 수 있도록

Swagger

Page 26: 카카오게임 첫 도전기

클라우드서비스

• 개발유휴인력, 서버자원이 부족한 스타트업에게 딱인 클라우드서비스

• 대표적으로 AWS, 국내에는 KT ucloud(대표 게임 확밀아) • 수요에 따라 서버를 증설 가능 • Auto scaling, 웹UI • 보안과 편의성의 trade off • AWS는 가장 가까운 데이터센터가 tokyo • AWS tokyo로 서비스하는 게임들도 있다 • 그렇지만 tokyo도 국내에서 서비스하기엔 응답속도가 아쉽다

• KT유클라우드 이제는 auto scaling을 비롯 AWS를 많이 따라 잡았다

Page 27: 카카오게임 첫 도전기

감사합니다