Upload
naver-d2
View
5.513
Download
13
Embed Size (px)
DESCRIPTION
4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐
Citation preview
LINE����������� ������������������ Rangers����������� ������������������ Client����������� ������������������ /����������� ������������������ Server����������� ������������������
작성자:����������� ������������������ 신승용,����������� ������������������ 주수현����������� ������������������
소속팀����������� ������������������ /상위부서:����������� ������������������ 라인플러스����������� ������������������ 게임개발2실����������� ������������������ ����������� ������������������
ⓒ 2014����������� ������������������ LINE����������� ������������������ CORPORATION
목차����������� ������������������
1.����������� ������������������ Cocos2d-x����������� ������������������ Platform����������� ������������������
1.1����������� ������������������ ����������� ������������������ Cocos2d-x����������� ������������������ 소개����������� ������������������
1.2����������� ������������������ ����������� ������������������ Cocos2d-x로����������� ������������������ 개발된����������� ������������������ 게임들����������� ������������������
1.3����������� ������������������ ����������� ������������������ Cocos2d-x로����������� ������������������ 할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 것들����������� ������������������
1.4����������� ������������������ ����������� ������������������ Cocos2d-x의����������� ������������������ 미래����������� ������������������
2.����������� ������������������ LineCocos����������� ������������������ Module����������� ������������������
2.1����������� ������������������ ����������� ������������������ LineCocos란?����������� ������������������
2.2����������� ������������������ ����������� ������������������ LineCocos에서����������� ������������������ 제공하는����������� ������������������ 기능����������� ������������������
2.3����������� ������������������ ����������� ������������������ LineCocos의����������� ������������������ 활용방안����������� ������������������
3.����������� ������������������ LINE����������� ������������������ Rangers����������� ������������������ Client����������� ������������������ Anatomy����������� ������������������
3.1����������� ������������������ ����������� ������������������ LINE����������� ������������������ Rangers����������� ������������������ 게임소개����������� ������������������
3.2����������� ������������������ ����������� ������������������ 유닛����������� ������������������ (애니메이션)����������� ������������������
3.3����������� ������������������ ����������� ������������������ 지역����������� ������������������ (메모리����������� ������������������ 최적화)����������� ������������������
3.4����������� ������������������ ����������� ������������������ 가챠����������� ������������������ (매출의����������� ������������������ 중심)����������� ������������������
3.5����������� ������������������ ����������� ������������������ Android?����������� ������������������
3.6����������� ������������������ ����������� ������������������ 협업����������� ������������������ 십계명����������� ������������������
4.����������� ������������������ LINE����������� ������������������ Rangers����������� ������������������ Server����������� ������������������ Architecture����������� ������������������
5.����������� ������������������ DB����������� ������������������ Sharding����������� ������������������
5.1����������� ������������������ ����������� ������������������ Rangers����������� ������������������ DB����������� ������������������
5.2����������� ������������������ ����������� ������������������ 확률기반����������� ������������������ DB분산����������� ������������������
6.����������� ������������������ Cache����������� ������������������ Strategy����������� ������������������
6.1����������� ������������������ ����������� ������������������ Main����������� ������������������ Data����������� ������������������
6.2����������� ������������������ ����������� ������������������ User����������� ������������������ Data����������� ������������������
7.����������� ������������������ 적용����������� ������������������ 코드����������� ������������������
7.1����������� ������������������ ����������� ������������������ Shard����������� ������������������ DB����������� ������������������ Transaction����������� ������������������
7.2����������� ������������������ ����������� ������������������ Shard����������� ������������������ DB����������� ������������������ 선택����������� ������������������ ����������� ������������������
7.3����������� ������������������ Cache된����������� ������������������ Data����������� ������������������ 가져오기����������� ������������������
1.����������� ������������������ Cocos2d-x����������� ������������������ Platform����������� ������������������
4����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
1.1����������� ������������������ ����������� ������������������ Cocos2d-x����������� ������������������ 소개����������� ������������������
Wang����������� ������������������ Zhe����������� ������������������ (왕철이형)����������� ������������������ ����������� ������������������ Cocos2d-x플랫폼����������� ������������������ 제작자����������� ������������������ ����������� ������������������ 현����������� ������������������ cocos2dx.org����������� ������������������ 운영자����������� ������������������
연예인을����������� ������������������ 만난����������� ������������������ 것처럼����������� ������������������ 들떠����������� ������������������ 있었던����������� ������������������ 우리����������� ������������������
- 전����������� ������������������ 세계����������� ������������������ 40만명����������� ������������������ 이상의����������� ������������������ 개발자가����������� ������������������ 사용하고����������� ������������������ 있는����������� ������������������ 멀티����������� ������������������ 플랫폼.����������� ������������������ - 중국에서����������� ������������������ 만들어진����������� ������������������ 게임중����������� ������������������ 약����������� ������������������ 70%����������� ������������������ 이상이����������� ������������������ 이����������� ������������������ 플랫폼을����������� ������������������ 사용함.����������� ������������������ - 기본은����������� ������������������ C++를����������� ������������������ 베이스로����������� ������������������ 제작.����������� ������������������ Lua����������� ������������������ API지원.����������� ������������������ - 지원가능한����������� ������������������ OS는����������� ������������������ iOS,����������� ������������������ Android,����������� ������������������ Windows����������� ������������������ Phone,����������� ������������������ BlackBerry����������� ������������������ 등이����������� ������������������ 있음.����������� ������������������ - 하나의����������� ������������������ 소스를����������� ������������������ 만들어����������� ������������������ 놓고����������� ������������������ 다양한����������� ������������������ OS에����������� ������������������ 작동가능한����������� ������������������ 앱을����������� ������������������ 배포할수����������� ������������������ 있도록����������� ������������������ 설계됨.����������� ������������������ - OpenGL����������� ������������������ ES����������� ������������������ 1.1/2.0을����������� ������������������ 채용하여����������� ������������������ 직접����������� ������������������ 그래픽작업도����������� ������������������ 가능.����������� ������������������
4대����������� ������������������ 강점����������� ������������������ - 크로스����������� ������������������ 플랫폼����������� ������������������ - 오픈소스����������� ������������������ - 가볍고����������� ������������������ 빠르다����������� ������������������ - 쉽고����������� ������������������ 간단한����������� ������������������ API����������� ������������������
5����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
1.2����������� ������������������ ����������� ������������������ Cocos2d-x로����������� ������������������ 개발된����������� ������������������ 게임들����������� ������������������
출처����������� ������������������ :����������� ������������������ cocos2d-x.org����������� ������������������
6����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
1.3����������� ������������������ ����������� ������������������ Cocos2d-x로����������� ������������������ 할����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 것들����������� ������������������
- Transitions����������� ������������������ between����������� ������������������ scenes����������� ������������������ - Sprites����������� ������������������ and����������� ������������������ Sprite����������� ������������������ Sheets����������� ������������������ - Transformation����������� ������������������ Actions����������� ������������������ :����������� ������������������ Move,����������� ������������������ Rotate,����������� ������������������ Scale,����������� ������������������ Fade,����������� ������������������ Tint����������� ������������������ - Composable����������� ������������������ Actions����������� ������������������ :����������� ������������������ Sequence,����������� ������������������ Spawn,����������� ������������������ Repeat,����������� ������������������ Reverse����������� ������������������ - Ease����������� ������������������ Actions����������� ������������������ :����������� ������������������ Exp,����������� ������������������ Sin,����������� ������������������ Cubic,����������� ������������������ Elastic����������� ������������������ - Misc����������� ������������������ Actions����������� ������������������ :����������� ������������������ CallFunc,����������� ������������������ OrbitCamera,����������� ������������������ Follow,����������� ������������������ Tween����������� ������������������ - Basic����������� ������������������ Menus����������� ������������������ and����������� ������������������ buttons����������� ������������������ - Particle����������� ������������������ System����������� ������������������ - Skeleton����������� ������������������ Animations����������� ������������������ - Fonts����������� ������������������ - Tile����������� ������������������ Map����������� ������������������ Support����������� ������������������ :����������� ������������������ Orthogonal,����������� ������������������ Isometric����������� ������������������ and����������� ������������������ Hexagonal����������� ������������������ - Parallax����������� ������������������ scrolling����������� ������������������ - Render����������� ������������������ To����������� ������������������ Texture����������� ������������������ - Touch/Accelerometer����������� ������������������ on����������� ������������������ mobile����������� ������������������ devices����������� ������������������ - Sound����������� ������������������ Engine����������� ������������������ Support����������� ������������������ :����������� ������������������ Based����������� ������������������ on����������� ������������������ OpenAL����������� ������������������ - Integrated����������� ������������������ Slow����������� ������������������ motion/Fast����������� ������������������ forward����������� ������������������ - Fast����������� ������������������ and����������� ������������������ compressed����������� ������������������ textures����������� ������������������ :����������� ������������������ PVR,����������� ������������������ ETC1����������� ������������������ - Widget����������� ������������������ Support����������� ������������������ :����������� ������������������ ListView,����������� ������������������ ScrollView,����������� ������������������ CheckBox,����������� ������������������ LoadingBar,����������� ������������������ Slide,����������� ������������������ TextField����������� ������������������ - Integrated����������� ������������������ Chipmunk2D,����������� ������������������ BOX2D����������� ������������������ - HTTP����������� ������������������ with����������� ������������������ SSL����������� ������������������ - …⋯����������� ������������������
출처����������� ������������������ :����������� ������������������ cocos2d-x.org����������� ������������������
7����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
1.4����������� ������������������ cocos2d-x의����������� ������������������ 미래����������� ������������������
- 전����������� ������������������ 세계����������� ������������������ 모바일����������� ������������������ 게임의����������� ������������������ 27%차지����������� ������������������ - 다양한����������� ������������������ 상용툴과����������� ������������������ 호환����������� ������������������ - 지속적인����������� ������������������ 업데이트����������� ������������������ - 개발자����������� ������������������ 편의를����������� ������������������ 위한����������� ������������������ 유용한����������� ������������������ 도구����������� ������������������ 제공����������� ������������������
2.����������� ������������������ LineCocos����������� ������������������ Module����������� ������������������
9����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
2.1����������� ������������������ LineCocos란?����������� ������������������
- Cocos2d-x를����������� ������������������ 기반으로����������� ������������������ 하는����������� ������������������ 게임을����������� ������������������ 쉽게����������� ������������������ 만들도록����������� ������������������ 도와주는����������� ������������������ 공통모듈.����������� ������������������
- 매번����������� ������������������ 새로운����������� ������������������ 프로젝트����������� ������������������ 진행시����������� ������������������ 초기셋팅을����������� ������������������ 다시해야하는����������� ������������������ 번거로움을����������� ������������������ 해소.����������� ������������������
- 라인계정정보와����������� ������������������ 친구들과의����������� ������������������ 소통을����������� ������������������ 중요시하는����������� ������������������ 게임일����������� ������������������ 경우����������� ������������������ 쉽게����������� ������������������ 라인연동을����������� ������������������ 할����������� ������������������ 수����������� ������������������ 있도록����������� ������������������ 함.����������� ������������������
- 이미지컨트롤,����������� ������������������ 공통팝업����������� ������������������ 등����������� ������������������ 자주����������� ������������������ 사용하는����������� ������������������ 기능들을����������� ������������������ 템플릿으로����������� ������������������ 제공.����������� ������������������
- 매출과����������� ������������������ 직결되는����������� ������������������ 결제모듈도����������� ������������������ 포함되어����������� ������������������ 누구나����������� ������������������ 쉽게����������� ������������������ 결제시스템����������� ������������������ 구현에����������� ������������������ 접근할����������� ������������������ 수����������� ������������������ 있음.����������� ������������������
- 앱에서����������� ������������������ 발생하는����������� ������������������ 각종����������� ������������������ 에러와����������� ������������������ 크래쉬����������� ������������������ 현상들을����������� ������������������ 수집하여����������� ������������������ 분석을����������� ������������������ 용이하게����������� ������������������ 함.����������� ������������������
- 동시접속자수를����������� ������������������ 파악하여����������� ������������������ 사용자의����������� ������������������ 변동추이를����������� ������������������ 보고����������� ������������������ 다음����������� ������������������ 전략을����������� ������������������ 세울����������� ������������������ 수����������� ������������������ 있게함.����������� ������������������
10����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
2.2����������� ������������������ LineCocos에서����������� ������������������ 제공하는����������� ������������������ 기능����������� ������������������
11����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
2.3����������� ������������������ LineCocos의����������� ������������������ 활용방안����������� ������������������
- Cocos2d-x에서����������� ������������������ 제공하지����������� ������������������ 않는����������� ������������������ 기능을����������� ������������������ 직접����������� ������������������ 제작하거나����������� ������������������ 확장함.����������� ������������������
- Cocos2d-x도����������� ������������������ 아직����������� ������������������ 발전하고����������� ������������������ 있는����������� ������������������ 단계라����������� ������������������ 변화가����������� ������������������ 많음.����������� ������������������ 상황에����������� ������������������ 맞게����������� ������������������ 대처하는����������� ������������������ 자세가����������� ������������������ 필요.����������� ������������������
- Cocos2d-x가����������� ������������������ 오픈소스인����������� ������������������ 만큼����������� ������������������ LineCocos에서도����������� ������������������ 개발자에게����������� ������������������ 유용한����������� ������������������ 소스/팁은����������� ������������������ 공개?����������� ������������������
- 급변화하는����������� ������������������ 모바일����������� ������������������ 세상에서����������� ������������������ 좋은����������� ������������������ 기술들의����������� ������������������ 공유는����������� ������������������ 게임을����������� ������������������ 더����������� ������������������ 아름답게����������� ������������������ 한다.����������� ������������������
- 라인에서는����������� ������������������ 블로그를����������� ������������������ 통하여����������� ������������������ 지속적으로����������� ������������������ 게임개발자들을����������� ������������������ 케어할����������� ������������������ 계획을����������� ������������������ 갖고����������� ������������������ 있다.����������� ������������������
3.����������� ������������������ LINE����������� ������������������ Rangers����������� ������������������ Client����������� ������������������ Anatomy����������� ������������������
13����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
3.1����������� ������������������ LINE����������� ������������������ Rangers����������� ������������������ 게임소개����������� ������������������
http://www.youtube.com/watch?v=ix2TEO_qWrE����������� ������������������
14����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
3.2����������� ������������������ 유닛����������� ������������������ (애니메이션)����������� ������������������
- Skeleton����������� ������������������ Animation����������� ������������������ 채용����������� ������������������ - Cocos2d-x와����������� ������������������ 호환되는����������� ������������������ Spine,����������� ������������������ Adobe����������� ������������������ DragonBorn이����������� ������������������ 존재.����������� ������������������ - 레인저스에서는����������� ������������������ SuperAnimNode를����������� ������������������ 사용.(raymondLu님����������� ������������������ 제작)����������� ������������������ - Cocos����������� ������������������ Builder라는����������� ������������������ 툴이����������� ������������������ 있으나����������� ������������������ Cocos2d-x에서����������� ������������������ 공식지원대상에서����������� ������������������ 제외함.����������� ������������������ - 현재는����������� ������������������ CocosStudio라는����������� ������������������ 통합툴을����������� ������������������ 제공.����������� ������������������ (Windows,����������� ������������������ MacOS����������� ������������������ 환경에서����������� ������������������ 사용가능)����������� ������������������
15����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
3.2����������� ������������������ 유닛����������� ������������������ (애니메이션)����������� ������������������
- 화면에����������� ������������������ 그려지는����������� ������������������ 유닛이����������� ������������������ 많아질수록����������� ������������������ 프레임이����������� ������������������ 떨어지는����������� ������������������ 현상이����������� ������������������ 발생.����������� ������������������ - 저사양폰에서는����������� ������������������ 30마리만����������� ������������������ 그려도����������� ������������������ 게임을����������� ������������������ 할����������� ������������������ 수����������� ������������������ 없을정도가����������� ������������������ 됨.����������� ������������������ - 하나의����������� ������������������ 픽셀에����������� ������������������ 겹치는����������� ������������������ 색깔이����������� ������������������ 많아지면����������� ������������������ 해당����������� ������������������ 픽셀에����������� ������������������ 표현되는����������� ������������������ 색깔게산을����������� ������������������ 하는데����������� ������������������ 있어����������� ������������������ 많은����������� ������������������ 비용을����������� ������������������ 소모.����������� ������������������ - 적은����������� ������������������ 색깔����������� ������������������ 표현으로����������� ������������������ 유닛을����������� ������������������ 구성할����������� ������������������ 수����������� ������������������ 있도록����������� ������������������ 변경.����������� ������������������ (RGBA8888����������� ������������������ ->����������� ������������������ RGBA4444)����������� ������������������ - 이미지����������� ������������������ 용량도����������� ������������������ 줄고,����������� ������������������ 텍스쳐����������� ������������������ 메모리����������� ������������������ 사용량도����������� ������������������ 감소.����������� ������������������
RGBA����������� ������������������ 4444����������� ������������������ RGBA����������� ������������������ 8888����������� ������������������
16����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
3.2����������� ������������������ 유닛����������� ������������������ (애니메이션)����������� ������������������
17����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
3.2����������� ������������������ 유닛����������� ������������������ (애니메이션)����������� ������������������
18����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
3.3����������� ������������������ 지역맵����������� ������������������ (메모리����������� ������������������ 최적화)����������� ������������������
- Cocos에서는����������� ������������������ PVR,����������� ������������������ ETC1����������� ������������������ 포맷으로����������� ������������������ 압축을����������� ������������������ 권장.����������� ������������������ - 스크롤에����������� ������������������ 따른����������� ������������������ 부분����������� ������������������ 지역로딩.����������� ������������������ - 이미지가����������� ������������������ 앱용량의����������� ������������������ 대부분을����������� ������������������ 차지.����������� ������������������ Png이미지����������� ������������������ 압축.����������� ������������������ (TinyPng����������� ������������������ 툴����������� ������������������ 이용)����������� ������������������ - 안드로이드����������� ������������������ 지원범위����������� ������������������ 고려.����������� ������������������ 초저사양폰.����������� ������������������ - 사용자가����������� ������������������ 보지����������� ������������������ 않는����������� ������������������ 부분은����������� ������������������ 최대한����������� ������������������ 메모리에����������� ������������������ 들고����������� ������������������ 있지����������� ������������������ 않도록����������� ������������������ 설계.����������� ������������������ - 사용자는����������� ������������������ 냉정하기����������� ������������������ 때문에����������� ������������������ 퍼포먼스가����������� ������������������ 제대로����������� ������������������ 나오지����������� ������������������ 않으면����������� ������������������ 배신함.����������� ������������������ - 클라에서는����������� ������������������ 퍼포먼스가����������� ������������������ 생명.����������� ������������������ 최적화된����������� ������������������ 코드도����������� ������������������ 중요하지만����������� ������������������ 무엇보다����������� ������������������ 이미지관리를����������� ������������������ 잘해야함.����������� ������������������
19����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
3.3����������� ������������������ 지역맵����������� ������������������ (메모리����������� ������������������ 최적화)����������� ������������������
20����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
3.4.����������� ������������������ 버튼/터치����������� ������������������ 처리����������� ������������������
21����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
3.5����������� ������������������ Android?����������� ������������������
- 안드로이드에서는����������� ������������������ 지원하는����������� ������������������ 그래픽카드가����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 제조사별로����������� ������������������ 다름.����������� ������������������ ����������� ������������������ - 제조사에서����������� ������������������ 별도로����������� ������������������ 튜닝이����������� ������������������ 된����������� ������������������ 부분이����������� ������������������ 있어����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 특정����������� ������������������ 기능을����������� ������������������ 지원하지����������� ������������������ 않는����������� ������������������ 경우도����������� ������������������ 있음.����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ (예����������� ������������������ :����������� ������������������ STENCIL)����������� ������������������ ����������� ������������������ - 되도록����������� ������������������ 많은����������� ������������������ 기기에서����������� ������������������ 돌아가도록����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ GLSurfaceView����������� ������������������ 튜닝이����������� ������������������ 필요.����������� ������������������ ����������� ������������������ ����������� ������������������ #����������� ������������������ 오른쪽은����������� ������������������ 단말에서����������� ������������������ 특정타이밍에����������� ������������������ holder를����������� ������������������ ����������� ������������������ 가져오지����������� ������������������ 못해서����������� ������������������ 발생하는����������� ������������������ 블랙스크린을����������� ������������������ 해결하기����������� ������������������ 위해����������� ������������������ 작성한����������� ������������������ 코드이다.����������� ������������������ ����������� ������������������
22����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
3.6����������� ������������������ 협업����������� ������������������ 십계명����������� ������������������
1. 기획,����������� ������������������ 디자인,����������� ������������������ 개발,����������� ������������������ QA가����������� ������������������ 서로����������� ������������������ 분리된����������� ������������������ 조직이라는����������� ������������������ 생각을����������� ������������������ 버리는����������� ������������������ 것.����������� ������������������
2. 서로����������� ������������������ 경계하지����������� ������������������ 말고,����������� ������������������ 좋은����������� ������������������ 결과물을����������� ������������������ 만들어����������� ������������������ 내기����������� ������������������ 위해����������� ������������������ 마음을����������� ������������������ 모으는����������� ������������������ 것.����������� ������������������
3. 열심히����������� ������������������ 하는����������� ������������������ 것보다����������� ������������������ 제대로����������� ������������������ 하는����������� ������������������ 것.����������� ������������������
4. 실수를����������� ������������������ 들추기보다����������� ������������������ 다시����������� ������������������ 그����������� ������������������ 실수를����������� ������������������ 하지����������� ������������������ 않도록����������� ������������������ 도우는����������� ������������������ 것.����������� ������������������
5. 칭찬하는����������� ������������������ 것.����������� ������������������
6. 같은����������� ������������������ 말이라도����������� ������������������ 상대방을����������� ������������������ 배려하는����������� ������������������ 언어를����������� ������������������ 선택하는����������� ������������������ 것.����������� ������������������
7. 대화하는����������� ������������������ 자리를����������� ������������������ 많이����������� ������������������ 가지는����������� ������������������ 것.����������� ������������������
8. 서로����������� ������������������ 다른����������� ������������������ 의견이����������� ������������������ 있더라도����������� ������������������ 모든����������� ������������������ 의견에����������� ������������������ 대해서����������� ������������������ 생각해����������� ������������������ 보는����������� ������������������ 것.����������� ������������������
9. 서로가����������� ������������������ 최고의����������� ������������������ 능력을����������� ������������������ 끌어올릴����������� ������������������ 수����������� ������������������ 있도록����������� ������������������ 경쟁하는����������� ������������������ 것.����������� ������������������
10. 성과가����������� ������������������ 있으면����������� ������������������ 함께����������� ������������������ 나누는����������� ������������������ 것.����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ “매출을����������� ������������������ 생각하기����������� ������������������ 전에����������� ������������������ 관계를����������� ������������������ 개선하라!”����������� ������������������
4.����������� ������������������ LINE����������� ������������������ Rangers����������� ������������������ Server����������� ������������������ Architecture����������� ������������������
24����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
4.1����������� ������������������ ����������� ������������������ LINE����������� ������������������ Rangers����������� ������������������ Server����������� ������������������ Architecture����������� ������������������
5.����������� ������������������ DB����������� ������������������ Sharding����������� ������������������
26����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
5.1����������� ������������������ ����������� ������������������ Rangers����������� ������������������ DB����������� ������������������
• DB로는����������� ������������������ Mysql을����������� ������������������ 사용하며����������� ������������������ MMM(http://mysql-mmm.org/����������� ������������������ )을����������� ������������������ 이용하고����������� ������������������ 있음����������� ������������������
• 데이터����������� ������������������ 종류에����������� ������������������ 따라����������� ������������������ DB를����������� ������������������ 나누어서����������� ������������������ 사용����������� ������������������
• Main����������� ������������������ DB����������� ������������������
• 게임의����������� ������������������ 기본이����������� ������������������ 되는����������� ������������������ 데이터(유닛정보,����������� ������������������ 아이템정보����������� ������������������ ����������� ������������������ 등..)����������� ������������������
• User����������� ������������������ Sharding����������� ������������������ 정보����������� ������������������
• User����������� ������������������ Shard����������� ������������������ DB����������� ������������������
• 유저별����������� ������������������ 데이터를����������� ������������������ 저장����������� ������������������
• History����������� ������������������ Shard����������� ������������������ DB����������� ������������������
• 유저별����������� ������������������ 이력����������� ������������������ 데이터를����������� ������������������ 저장����������� ������������������
27����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
5.2����������� ������������������ ����������� ������������������ 확률기반����������� ������������������ DB����������� ������������������ 분산����������� ������������������
• 관리툴을����������� ������������������ 이용하여����������� ������������������ 신규����������� ������������������ 유저의����������� ������������������ 데이터를����������� ������������������ 어느����������� ������������������ DB에����������� ������������������ 배정할����������� ������������������ 지����������� ������������������ 확률에����������� ������������������ 기반하여����������� ������������������ 사용����������� ������������������ 중����������� ������������������
• 각����������� ������������������ 확률들은����������� ������������������ Zookeeper를����������� ������������������ 이용해����������� ������������������ 모든����������� ������������������ 서버들과����������� ������������������ 동기화����������� ������������������ 하며����������� ������������������ 저장하면����������� ������������������ 즉시����������� ������������������ 반영됨����������� ������������������
6.����������� ������������������ Cache����������� ������������������ Strategy����������� ������������������
29����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
6.1����������� ������������������ ����������� ������������������ Main����������� ������������������ Data����������� ������������������
• Main����������� ������������������ Data는����������� ������������������ 잦은����������� ������������������ 변경이����������� ������������������ 있지����������� ������������������ 않는����������� ������������������ 데이터����������� ������������������
• Local����������� ������������������ Cache����������� ������������������ 이용에����������� ������������������ 유리함����������� ������������������
• Mybatis에서����������� ������������������ cache를����������� ������������������ 지원함����������� ������������������
• http://mybatis.github.io/mybatis-3/ko/sqlmap-xml.html#cache����������� ������������������
• 데이터����������� ������������������ 변경����������� ������������������ 시����������� ������������������ 모든����������� ������������������ 서버간����������� ������������������ 동기화를����������� ������������������ 위해����������� ������������������ Zookeeper를����������� ������������������ 이용����������� ������������������
• Mybatis����������� ������������������ Plugin을����������� ������������������ 이용해����������� ������������������ update����������� ������������������ 발생����������� ������������������ 시����������� ������������������ zookeeper에����������� ������������������ cache를����������� ������������������ cle
ar����������� ������������������ 해야한다고����������� ������������������ noti를����������� ������������������ 함����������� ������������������
• 관리자가����������� ������������������ 별도로����������� ������������������ Cache를����������� ������������������ clear할����������� ������������������ 수����������� ������������������ 있도록����������� ������������������ 기능을����������� ������������������ 제공����������� ������������������
30����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
6.2����������� ������������������ ����������� ������������������ User����������� ������������������ Data����������� ������������������
• User����������� ������������������ Data는����������� ������������������ 매우����������� ������������������ 잦은����������� ������������������ 변경이����������� ������������������ 있는����������� ������������������ 데이터����������� ������������������
• DB를����������� ������������������ 사용하는����������� ������������������ 것만으로는����������� ������������������ 서비스를����������� ������������������ 유지할����������� ������������������ 수����������� ������������������ 없음����������� ������������������
• 공통적으로����������� ������������������ 사용하는����������� ������������������ Cache가����������� ������������������ 필요����������� ������������������
• Arcus����������� ������������������ ����������� ������������������ :����������� ������������������ http://naver.github.io/arcus/����������� ������������������
• Redis����������� ������������������ :����������� ������������������ http://redis.io/����������� ������������������
31����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
6.2����������� ������������������ ����������� ������������������ User����������� ������������������ Data����������� ������������������
7.����������� ������������������ 적용����������� ������������������ 코드����������� ������������������
33����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
7.1����������� ������������������ ����������� ������������������ Shard����������� ������������������ DB����������� ������������������ Transaction����������� ������������������
34����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
7.1����������� ������������������ ����������� ������������������ Shard����������� ������������������ DB����������� ������������������ Transaction����������� ������������������
35����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
7.2����������� ������������������ ����������� ������������������ Shard����������� ������������������ DB����������� ������������������ 선택����������� ������������������ ����������� ������������������
36����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
7.2����������� ������������������ ����������� ������������������ Shard����������� ������������������ DB����������� ������������������ 선택����������� ������������������ ����������� ������������������
37����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
7.2����������� ������������������ ����������� ������������������ Shard����������� ������������������ DB����������� ������������������ 선택����������� ������������������ ����������� ������������������
38����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
7.3����������� ������������������ Cache된����������� ������������������ Data����������� ������������������ 가져오기����������� ������������������
39����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
7.3����������� ������������������ Cache된����������� ������������������ Data����������� ������������������ 가져오기����������� ������������������
40����������� ������������������ /����������� ������������������ 2014����������� ������������������ LINE����������� ������������������
참고자료����������� ������������������
http://linegamedev.blog.me/����������� ������������������
Thank you.����������� ������������������