검색결과 리스트
AnimalLand에 해당되는 글 2건
- 2013.12.25 소셜게임 AnimalLand에서의 Mongodb 사용 팁
- 2013.12.23 소셜게임 AnimalLand 개발 정보
사이버에이전트의 게임 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.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
댓글