본문 바로가기
SNS | SNG

GREE에 의한 대규모 소셜 게임 만드는 방법

by 두루물 2011. 3. 25.
*이 카테고리는 게임과 무관한 길을 걸어온 나에게 어느날 때아닌(?) 2D 소셜 플래시 게임을 급개발하게 됨으로 인해 빠듯하게 한달새에 플래시 액션스크립트 & 디자인 관련서적 3-4권을 읽고 곧바로 개발시작하면서 필요한 자료를 스크랩 하고자 개설 하였습니다.(모든 서적이 디자이너를 위한 액스3.0 샘플위주로 된 겉핡기식 교재만 있을 뿐, 이 계통에 입문하려는 분에게는 마로의 꿈을 권장합니다)

그런데,결국 플래시는  Layer 상에서의 addChild 나 EventDispatch,addListener 의 조합으로 이루어진 껍데기에 불과하고 중요한건 플래시 액션 스크립트 자체가 아니란걸 알게 되는군요..


CEDEC 2010 GREE에 의한 대규모 소셜 게임 만드는 방법

급성장을 이루고 있는 소셜 게임 기업 중 하나 GREE 주식 회사의 세션.

「대규모 소셜 게임 만드는 방법 ~ 60분으로 밝혀지는 서버 사이드 기술~」에서는 GREE 주식회사 후지모토 마키씨, GREE 주식회사 마스야마 카즈유키씨가 등단 하여 온라인 게임과 다른 소셜 게임의 서버 구성 등을 말하였다.

GREE20106월 시에 있어서 회원 수는 2059만명, 페이지 뷰는 월간 357, 데일리에 11, 서버의 구성은 수 천대, 그 대부분이 x86계 서버를 이용하고 있다라는 것. 대체로 최대 동시 접속수는 1, 서버로부터의 응답 시간이 0.2초가 된다. 서버 트래픽의 물결은 온라인 게임의 물결이 밤부터 심야인 것에 비해 휴대폰이 메인이 되는 GREE에서는 밤부터 심야에 더하여 아침 8시 전후, 12시 전후에 증가하는 경향이 있다고 말해지고 있었다.

플레이어층은 코어 게이머가 아니고, 캐쥬얼 게이머나 게임을 플레이 했던 적이 없는 사람이 즐기고 있다고 한다.

온라인 게임과 소셜 게임의 서버 구성의 차이로서는 전용 클라이언트를 필요로 하는 온라인에 대해 소셜에서는 Web 브라우저가 있으면 좋다고 하는 차이를 시작하여 Proxy에 대해 LVS(Linux Virtual Server)Proxy, Frontend 서버가 Web서버, BackendDataBase 서버라고 하는 구성이 된다. 결론으로서는 그만큼의 차이는 없다고 한다.

마스야마씨에 의하면 예를 들어 「낚시스튜디오」온라인 게임의 구성으로 설명 했을 경우 게임중의 낚시터가 이른바 월드 서버로서 동작하기 때문에 서버의 자원에 의해서 낚시터의 인원수의 한계가 있다고 하는 문제나 그 때문에 Backend 서버를 확장이 필요하다라고 말해지고 있다.

그럼 GREE에서 구성되어 있는 것은 어떻게 되어 있는가? 라는 부분에서는 전술의 브라우저를 클라이언트로 하고, LVS+Proxy로 제일 부하가 낮은 Web 서버에 처리를 할당하여 리퀘스트 때마다 유저 데이터를 데이터베이스 서버에 저장이라고 하는 흐름이 된다고 한다.

단지 기록 매체인 디스크상에 기록하는 Write 부분을 분산하거나 가능한 한 디스크에 쓰지 않게 하는 궁리가 필요하다고 한다.
구체적으로는 디스크로의 부담을 줄이기 위해 MySQL 이라면 replication 기능을 사용하고, 데이터 베이스 서버의 Slave를 늘려, 읽기 액세스의 부하를 분산한다고 하는 방법으로부터 메모리 상에 작성하는 파일 시스템(tmpfs)으로 데이터를 운용. memcached 호환의 분산Key Value Store(KVS) 를 작성/이용하여 데이터 보존에 대한 디스크 액세스 회수를 줄였다고 한다.

, 커뮤니티의 소식 기능 등 멤버에게 메일을 일제 전달하는 기능에서는 일제 송신을 실시하지 않고, Queue() 서버를 설치하여 비동기 처리를 실시하면서 차례차례 메일 송신을 해 나가는 방법을 취하고 있다고 한다. 그 외에도 과금 아이템의 처리에서는 사이버 머니인 포인트의 인출 전에 아이템을 건네주거나, 고부하에 의해서 데이터가 로스트 했을 경우 등을 근거로 하여 로스트 했을 경우는 로그를 참조하여 후일 보완하는 것으로 최대한 유저에게 불이익이 가지 않게 하고 있다고 한다.

그 외에도 데이터 베이스 서버에서 어떠한 장해가 발생했을 경우나, 서버 OS 등의 버전 업을 실시할 때는 Master 측을 정지하고 Slave를 마스터로 올린다고 하는 수법을 취하는 것으로 서비스를 정지하는 일 없이 이행 한다고 한다.

 

 

출처 : http://www.gamebusiness.jp/article.php?id=2095

출처: http://jacking.tistory.com/806