사이버에이전트의 게임 http://www.serkantoto.com/2011/12/10/cyberagent-animal-land-facebook-social-games/

 

 

1. 트랜잭션이 필요하지 않은 구조를 잡는다.

유저의 정보를 하나의 도큐먼트에 보존하여 일괄 갱신

 

 

2. 데이터 양을 가능한 줄인다.

을 아래처럼 구조를 바꾼다

 

 

3. 필드 수는 너무 많지 않도록 한다.

데이터 전송량만이 아닌 BSON Parse에 걸리는 시간도 고려해야 한다.

 

 

4. Global은 절대 피하고, Targeted 중심으로

샤드 키로 데이터 조작

샤드 키 이외의 조작은 Index를 이용

 

 

5. 데이터 시리얼라이즈 사용으로 개발을 효율적으로 한다.

 

 

6. 롤백은 불가능함을 전제로 구현한다

어느 정도 데이터 불이치는 감안한다.

꼭 유저가 불이익을 입지 않도록 한다.

 

 

7. 져널링은 유효화 한다.

장해 시 데이터 유실의 위험성을 줄여준다.

성능은 저하하므로 주의

 

 

8. oplogsize를 10GB로 설정

기본은 전체의 5%로 크기 때문에

장해 발생에서 복수 작업이 끝날 때까지의 예정 시간에서 산출

 

 

9. 필요한 인덱스는 처음부터 만들어 둔다.

통상 인덱스 작성 중에는 모든 오퍼레이션이 블럭된다.

20만건의 데이터(각각 50kb정도)에 인덱스를 걸면 2분 정도 걸린다.

뒤에 추가할 경우는 점검 중에 만들던가 백그라운드로 만든다.

 

 

10. 컨넥션 풀을 튜닝

connectionsPerHost                    컨넧션 수            100

threadsAllowedToBlockForConnectionMultiplier    1 컨넥션 당 접속 대기 수     4

 

nginix의 worker 수, Tomcat의 Thread 수의 밸런스를 고려하여 설정(nginix와 Tomcat 사용 시).

풀이 부족하게 될 때의 에러(Out of Semaphores)에 주의.

위의 예에서는 100 + (100*4) = 500

 

 

 

 

문서 출처: http://www.slideshare.net/matsukaz/awsmongodb

신고
by 흥배 2013.12.25 08:00

사이버에이전트의 게임 http://www.serkantoto.com/2011/12/10/cyberagent-animal-land-facebook-social-games/


개발 기간

2011.03 시작. 3.11일에 첫 미팅

본격적인 개발은 2011.05부터

2011.12.09에 서비스



개발 멤버

PD - 2명

디자이너 - 1명

Flash Developer - 3명

Engineer - 4명 + 알파 



미들웨어 

ngnix 1.0.x

Tomcat 7.0.x

MongoDB 2.0.4

MySQL 5.5.x

memcached 1.4.x



프레임워크 / 라이브러리

Spring Framework, Spring MVC

BlazeDS, Sprinf Flex

Spring Data - MongoDB 1.0.0 M4

mongo-java-driver 2.6.5

Ehcache

spymemcached

RestFB

MyBatis 






문서 출처: http://www.slideshare.net/matsukaz/awsmongodb

저작자 표시
신고
by 흥배 2013.12.23 08:00
| 1 |