4.[d2 오픈세미나]line rangers 게임 클라이언트/서버 아키텍쳐

41
LINE Rangers Client / Server 작성자: 신승용, 주수현 소속팀 /상위부서: 라인플러스 게임개발2실 2014 LINE CORPORATION

Upload: naver-d2

Post on 15-Jan-2015

5.513 views

Category:

Technology


13 download

DESCRIPTION

4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

TRANSCRIPT

Page 1: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

LINE����������� ������������������  Rangers����������� ������������������  Client����������� ������������������  /����������� ������������������  Server����������� ������������������  

작성자:����������� ������������������  신승용,����������� ������������������  주수현����������� ������������������  

소속팀����������� ������������������  /상위부서:����������� ������������������  라인플러스����������� ������������������  게임개발2실����������� ������������������  ����������� ������������������  

ⓒ 2014����������� ������������������  LINE����������� ������������������  CORPORATION

Page 2: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

목차����������� ������������������  

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����������� ������������������  가져오기����������� ������������������  

Page 3: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

1.����������� ������������������  Cocos2d-x����������� ������������������  Platform����������� ������������������  

Page 4: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

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����������� ������������������  

Page 5: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

5����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

1.2����������� ������������������  ����������� ������������������  Cocos2d-x로����������� ������������������  개발된����������� ������������������  게임들����������� ������������������  

출처����������� ������������������  :����������� ������������������  cocos2d-x.org����������� ������������������  

Page 6: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

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����������� ������������������  

Page 7: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

7����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

1.4����������� ������������������  cocos2d-x의����������� ������������������  미래����������� ������������������  

-  전����������� ������������������  세계����������� ������������������  모바일����������� ������������������  게임의����������� ������������������  27%차지����������� ������������������  -  다양한����������� ������������������  상용툴과����������� ������������������  호환����������� ������������������  -  지속적인����������� ������������������  업데이트����������� ������������������  -  개발자����������� ������������������  편의를����������� ������������������  위한����������� ������������������  유용한����������� ������������������  도구����������� ������������������  제공����������� ������������������  

Page 8: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

2.����������� ������������������  LineCocos����������� ������������������  Module����������� ������������������  

Page 9: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

9����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

2.1����������� ������������������  LineCocos란?����������� ������������������  

-  Cocos2d-x를����������� ������������������  기반으로����������� ������������������  하는����������� ������������������  게임을����������� ������������������  쉽게����������� ������������������  만들도록����������� ������������������  도와주는����������� ������������������  공통모듈.����������� ������������������  

-  매번����������� ������������������  새로운����������� ������������������  프로젝트����������� ������������������  진행시����������� ������������������  초기셋팅을����������� ������������������  다시해야하는����������� ������������������  번거로움을����������� ������������������  해소.����������� ������������������  

-  라인계정정보와����������� ������������������  친구들과의����������� ������������������  소통을����������� ������������������  중요시하는����������� ������������������  게임일����������� ������������������  경우����������� ������������������  쉽게����������� ������������������  라인연동을����������� ������������������  할����������� ������������������  수����������� ������������������  있도록����������� ������������������  함.����������� ������������������  

-  이미지컨트롤,����������� ������������������  공통팝업����������� ������������������  등����������� ������������������  자주����������� ������������������  사용하는����������� ������������������  기능들을����������� ������������������  템플릿으로����������� ������������������  제공.����������� ������������������  

-  매출과����������� ������������������  직결되는����������� ������������������  결제모듈도����������� ������������������  포함되어����������� ������������������  누구나����������� ������������������  쉽게����������� ������������������  결제시스템����������� ������������������  구현에����������� ������������������  접근할����������� ������������������  수����������� ������������������  있음.����������� ������������������  

-  앱에서����������� ������������������  발생하는����������� ������������������  각종����������� ������������������  에러와����������� ������������������  크래쉬����������� ������������������  현상들을����������� ������������������  수집하여����������� ������������������  분석을����������� ������������������  용이하게����������� ������������������  함.����������� ������������������  

-  동시접속자수를����������� ������������������  파악하여����������� ������������������  사용자의����������� ������������������  변동추이를����������� ������������������  보고����������� ������������������  다음����������� ������������������  전략을����������� ������������������  세울����������� ������������������  수����������� ������������������  있게함.����������� ������������������  

Page 10: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

10����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

2.2����������� ������������������  LineCocos에서����������� ������������������  제공하는����������� ������������������  기능����������� ������������������  

Page 11: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

11����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

2.3����������� ������������������  LineCocos의����������� ������������������  활용방안����������� ������������������  

-  Cocos2d-x에서����������� ������������������  제공하지����������� ������������������  않는����������� ������������������  기능을����������� ������������������  직접����������� ������������������  제작하거나����������� ������������������  확장함.����������� ������������������  

-  Cocos2d-x도����������� ������������������  아직����������� ������������������  발전하고����������� ������������������  있는����������� ������������������  단계라����������� ������������������  변화가����������� ������������������  많음.����������� ������������������  상황에����������� ������������������  맞게����������� ������������������  대처하는����������� ������������������  자세가����������� ������������������  필요.����������� ������������������  

-  Cocos2d-x가����������� ������������������  오픈소스인����������� ������������������  만큼����������� ������������������  LineCocos에서도����������� ������������������  개발자에게����������� ������������������  유용한����������� ������������������  소스/팁은����������� ������������������  공개?����������� ������������������  

-  급변화하는����������� ������������������  모바일����������� ������������������  세상에서����������� ������������������  좋은����������� ������������������  기술들의����������� ������������������  공유는����������� ������������������  게임을����������� ������������������  더����������� ������������������  아름답게����������� ������������������  한다.����������� ������������������  

-  라인에서는����������� ������������������  블로그를����������� ������������������  통하여����������� ������������������  지속적으로����������� ������������������  게임개발자들을����������� ������������������  케어할����������� ������������������  계획을����������� ������������������  갖고����������� ������������������  있다.����������� ������������������  

Page 12: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

3.����������� ������������������  LINE����������� ������������������  Rangers����������� ������������������  Client����������� ������������������  Anatomy����������� ������������������  

Page 13: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

13����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

3.1����������� ������������������  LINE����������� ������������������  Rangers����������� ������������������  게임소개����������� ������������������  

http://www.youtube.com/watch?v=ix2TEO_qWrE����������� ������������������  

Page 14: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

14����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

3.2����������� ������������������  유닛����������� ������������������  (애니메이션)����������� ������������������  

-  Skeleton����������� ������������������  Animation����������� ������������������  채용����������� ������������������  -  Cocos2d-x와����������� ������������������  호환되는����������� ������������������  Spine,����������� ������������������  Adobe����������� ������������������  DragonBorn이����������� ������������������  존재.����������� ������������������  -  레인저스에서는����������� ������������������  SuperAnimNode를����������� ������������������  사용.(raymondLu님����������� ������������������  제작)����������� ������������������  -  Cocos����������� ������������������  Builder라는����������� ������������������  툴이����������� ������������������  있으나����������� ������������������  Cocos2d-x에서����������� ������������������  공식지원대상에서����������� ������������������  제외함.����������� ������������������  -  현재는����������� ������������������  CocosStudio라는����������� ������������������  통합툴을����������� ������������������  제공.����������� ������������������  (Windows,����������� ������������������  MacOS����������� ������������������  환경에서����������� ������������������  사용가능)����������� ������������������  

Page 15: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

15����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

3.2����������� ������������������  유닛����������� ������������������  (애니메이션)����������� ������������������  

-  화면에����������� ������������������  그려지는����������� ������������������  유닛이����������� ������������������  많아질수록����������� ������������������  프레임이����������� ������������������  떨어지는����������� ������������������  현상이����������� ������������������  발생.����������� ������������������  -  저사양폰에서는����������� ������������������  30마리만����������� ������������������  그려도����������� ������������������  게임을����������� ������������������  할����������� ������������������  수����������� ������������������  없을정도가����������� ������������������  됨.����������� ������������������  -  하나의����������� ������������������  픽셀에����������� ������������������  겹치는����������� ������������������  색깔이����������� ������������������  많아지면����������� ������������������  해당����������� ������������������  픽셀에����������� ������������������  표현되는����������� ������������������  색깔게산을����������� ������������������  하는데����������� ������������������  있어����������� ������������������  많은����������� ������������������  비용을����������� ������������������  소모.����������� ������������������  -  적은����������� ������������������  색깔����������� ������������������  표현으로����������� ������������������  유닛을����������� ������������������  구성할����������� ������������������  수����������� ������������������  있도록����������� ������������������  변경.����������� ������������������  (RGBA8888����������� ������������������  ->����������� ������������������  RGBA4444)����������� ������������������  -  이미지����������� ������������������  용량도����������� ������������������  줄고,����������� ������������������  텍스쳐����������� ������������������  메모리����������� ������������������  사용량도����������� ������������������  감소.����������� ������������������  

RGBA����������� ������������������  4444����������� ������������������   RGBA����������� ������������������  8888����������� ������������������  

Page 16: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

16����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

3.2����������� ������������������  유닛����������� ������������������  (애니메이션)����������� ������������������  

Page 17: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

17����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

3.2����������� ������������������  유닛����������� ������������������  (애니메이션)����������� ������������������  

Page 18: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

18����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

3.3����������� ������������������  지역맵����������� ������������������  (메모리����������� ������������������  최적화)����������� ������������������  

-  Cocos에서는����������� ������������������  PVR,����������� ������������������  ETC1����������� ������������������  포맷으로����������� ������������������  압축을����������� ������������������  권장.����������� ������������������  -  스크롤에����������� ������������������  따른����������� ������������������  부분����������� ������������������  지역로딩.����������� ������������������  -  이미지가����������� ������������������  앱용량의����������� ������������������  대부분을����������� ������������������  차지.����������� ������������������  Png이미지����������� ������������������  압축.����������� ������������������  (TinyPng����������� ������������������  툴����������� ������������������  이용)����������� ������������������  -  안드로이드����������� ������������������  지원범위����������� ������������������  고려.����������� ������������������  초저사양폰.����������� ������������������  -  사용자가����������� ������������������  보지����������� ������������������  않는����������� ������������������  부분은����������� ������������������  최대한����������� ������������������  메모리에����������� ������������������  들고����������� ������������������  있지����������� ������������������  않도록����������� ������������������  설계.����������� ������������������  -  사용자는����������� ������������������  냉정하기����������� ������������������  때문에����������� ������������������  퍼포먼스가����������� ������������������  제대로����������� ������������������  나오지����������� ������������������  않으면����������� ������������������  배신함.����������� ������������������  -  클라에서는����������� ������������������  퍼포먼스가����������� ������������������  생명.����������� ������������������  최적화된����������� ������������������  코드도����������� ������������������  중요하지만����������� ������������������  무엇보다����������� ������������������  이미지관리를����������� ������������������  잘해야함.����������� ������������������  

Page 19: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

19����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

3.3����������� ������������������  지역맵����������� ������������������  (메모리����������� ������������������  최적화)����������� ������������������  

Page 20: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

20����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

3.4.����������� ������������������  버튼/터치����������� ������������������  처리����������� ������������������  

Page 21: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

21����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

3.5����������� ������������������  Android?����������� ������������������  

-  안드로이드에서는����������� ������������������  지원하는����������� ������������������  그래픽카드가����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  제조사별로����������� ������������������  다름.����������� ������������������  ����������� ������������������  -  제조사에서����������� ������������������  별도로����������� ������������������  튜닝이����������� ������������������  된����������� ������������������  부분이����������� ������������������  있어����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  특정����������� ������������������  기능을����������� ������������������  지원하지����������� ������������������  않는����������� ������������������  경우도����������� ������������������  있음.����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  (예����������� ������������������  :����������� ������������������  STENCIL)����������� ������������������  ����������� ������������������  -  되도록����������� ������������������  많은����������� ������������������  기기에서����������� ������������������  돌아가도록����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  GLSurfaceView����������� ������������������  튜닝이����������� ������������������  필요.����������� ������������������  ����������� ������������������  ����������� ������������������  #����������� ������������������  오른쪽은����������� ������������������  단말에서����������� ������������������  특정타이밍에����������� ������������������  holder를����������� ������������������  ����������� ������������������  가져오지����������� ������������������  못해서����������� ������������������  발생하는����������� ������������������  블랙스크린을����������� ������������������  해결하기����������� ������������������  위해����������� ������������������  작성한����������� ������������������  코드이다.����������� ������������������  ����������� ������������������  

Page 22: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

22����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

3.6����������� ������������������  협업����������� ������������������  십계명����������� ������������������  

1.  기획,����������� ������������������  디자인,����������� ������������������  개발,����������� ������������������  QA가����������� ������������������  서로����������� ������������������  분리된����������� ������������������  조직이라는����������� ������������������  생각을����������� ������������������  버리는����������� ������������������  것.����������� ������������������  

2.  서로����������� ������������������  경계하지����������� ������������������  말고,����������� ������������������  좋은����������� ������������������  결과물을����������� ������������������  만들어����������� ������������������  내기����������� ������������������  위해����������� ������������������  마음을����������� ������������������  모으는����������� ������������������  것.����������� ������������������  

3.  열심히����������� ������������������  하는����������� ������������������  것보다����������� ������������������  제대로����������� ������������������  하는����������� ������������������  것.����������� ������������������  

4.  실수를����������� ������������������  들추기보다����������� ������������������  다시����������� ������������������  그����������� ������������������  실수를����������� ������������������  하지����������� ������������������  않도록����������� ������������������  도우는����������� ������������������  것.����������� ������������������  

5.  칭찬하는����������� ������������������  것.����������� ������������������  

6.  같은����������� ������������������  말이라도����������� ������������������  상대방을����������� ������������������  배려하는����������� ������������������  언어를����������� ������������������  선택하는����������� ������������������  것.����������� ������������������  

7.  대화하는����������� ������������������  자리를����������� ������������������  많이����������� ������������������  가지는����������� ������������������  것.����������� ������������������  

8.  서로����������� ������������������  다른����������� ������������������  의견이����������� ������������������  있더라도����������� ������������������  모든����������� ������������������  의견에����������� ������������������  대해서����������� ������������������  생각해����������� ������������������  보는����������� ������������������  것.����������� ������������������  

9.  서로가����������� ������������������  최고의����������� ������������������  능력을����������� ������������������  끌어올릴����������� ������������������  수����������� ������������������  있도록����������� ������������������  경쟁하는����������� ������������������  것.����������� ������������������  

10. 성과가����������� ������������������  있으면����������� ������������������  함께����������� ������������������  나누는����������� ������������������  것.����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  “매출을����������� ������������������  생각하기����������� ������������������  전에����������� ������������������  관계를����������� ������������������  개선하라!”����������� ������������������  

Page 23: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

4.����������� ������������������  LINE����������� ������������������  Rangers����������� ������������������  Server����������� ������������������  Architecture����������� ������������������  

Page 24: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

24����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

4.1����������� ������������������  ����������� ������������������  LINE����������� ������������������  Rangers����������� ������������������  Server����������� ������������������  Architecture����������� ������������������  

Page 25: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

5.����������� ������������������  DB����������� ������������������  Sharding����������� ������������������  

Page 26: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

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����������� ������������������  

•  유저별����������� ������������������  이력����������� ������������������  데이터를����������� ������������������  저장����������� ������������������  

Page 27: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

27����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

5.2����������� ������������������  ����������� ������������������  확률기반����������� ������������������  DB����������� ������������������  분산����������� ������������������  

•  관리툴을����������� ������������������  이용하여����������� ������������������  신규����������� ������������������  유저의����������� ������������������  데이터를����������� ������������������  어느����������� ������������������  DB에����������� ������������������  배정할����������� ������������������  지����������� ������������������  확률에����������� ������������������  기반하여����������� ������������������  사용����������� ������������������  중����������� ������������������  

•  각����������� ������������������  확률들은����������� ������������������  Zookeeper를����������� ������������������  이용해����������� ������������������  모든����������� ������������������  서버들과����������� ������������������  동기화����������� ������������������  하며����������� ������������������  저장하면����������� ������������������  즉시����������� ������������������  반영됨����������� ������������������  

Page 28: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

6.����������� ������������������  Cache����������� ������������������  Strategy����������� ������������������  

Page 29: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

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할����������� ������������������  수����������� ������������������  있도록����������� ������������������  기능을����������� ������������������  제공����������� ������������������  

Page 30: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

30����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

6.2����������� ������������������  ����������� ������������������  User����������� ������������������  Data����������� ������������������  

•  User����������� ������������������  Data는����������� ������������������  매우����������� ������������������  잦은����������� ������������������  변경이����������� ������������������  있는����������� ������������������  데이터����������� ������������������  

•  DB를����������� ������������������  사용하는����������� ������������������  것만으로는����������� ������������������  서비스를����������� ������������������  유지할����������� ������������������  수����������� ������������������  없음����������� ������������������  

•  공통적으로����������� ������������������  사용하는����������� ������������������  Cache가����������� ������������������  필요����������� ������������������  

•  Arcus����������� ������������������  ����������� ������������������  :����������� ������������������  http://naver.github.io/arcus/����������� ������������������  

•  Redis����������� ������������������  :����������� ������������������  http://redis.io/����������� ������������������  

Page 31: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

31����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

6.2����������� ������������������  ����������� ������������������  User����������� ������������������  Data����������� ������������������  

Page 32: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

7.����������� ������������������  적용����������� ������������������  코드����������� ������������������  

Page 33: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

33����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

7.1����������� ������������������  ����������� ������������������  Shard����������� ������������������  DB����������� ������������������  Transaction����������� ������������������  

Page 34: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

34����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

7.1����������� ������������������  ����������� ������������������  Shard����������� ������������������  DB����������� ������������������  Transaction����������� ������������������  

Page 35: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

35����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

7.2����������� ������������������  ����������� ������������������  Shard����������� ������������������  DB����������� ������������������  선택����������� ������������������  ����������� ������������������  

Page 36: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

36����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

7.2����������� ������������������  ����������� ������������������  Shard����������� ������������������  DB����������� ������������������  선택����������� ������������������  ����������� ������������������  

Page 37: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

37����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

7.2����������� ������������������  ����������� ������������������  Shard����������� ������������������  DB����������� ������������������  선택����������� ������������������  ����������� ������������������  

Page 38: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

38����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

7.3����������� ������������������  Cache된����������� ������������������  Data����������� ������������������  가져오기����������� ������������������  

Page 39: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

39����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

7.3����������� ������������������  Cache된����������� ������������������  Data����������� ������������������  가져오기����������� ������������������  

Page 40: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

40����������� ������������������  /����������� ������������������  2014����������� ������������������  LINE����������� ������������������  

참고자료����������� ������������������  

http://linegamedev.blog.me/����������� ������������������  

Page 41: 4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐

Thank you.����������� ������������������