때때로 큰 무대에서 자신을 증명할 수 있는 기회가 주어집니다. 4주 전 우리에게도 기회가 찾아왔습니다. 카우치베이스의 사용자 OMGPOP이 무언가 그리기 - 를 출시하여 입소문을 타고 있었습니다. 전례 없는 성장 기회를 활용하기 위해서는 데이터베이스를 반드시 확장해야 했습니다. 사용자 수와 게임 수가 급격히 증가하더라도 성능을 유지해야 하고 게임을 오프라인 상태에서 해제해서는 안 된다는 두 가지 절대 타협할 수 없는 조건이 있었습니다.
역사상 가장 빠르게 성장하는 모바일 게임을 지원하기 위한 확장은 결코 쉬운 일이 아닙니다. 시작은 미약했지만 Draw Something은 다음과 같이 성장했습니다. 5천만 건 이상의 다운로드 를 단 몇 주 만에 달성했으며, 지금도 하루에 약 200만 건의 다운로드가 이루어지고 있습니다. 일일 활성 사용자 수(DAU)는 1,500만 명으로 2위 게임인 Words with Friends를 훨씬 뛰어넘는 수치입니다. 수천만 건의 게임이 시작되었습니다. Over 매초 3,000개의 도면이 생성되어 20억 개의 도면이 추가됩니다. 이미 생성되어 저장되어 있습니다.
그리고 그 성장은 멈추지 않았습니다. OMGPOP은 이제 다음 목표를 향해 나아가고 있습니다. 1억 다운로드.
이러한 성장세는 모든 애플리케이션 개발자가 꿈꾸는 것이지만, 확장성을 미리 계획하지 않으면 개발자에게 최악의 악몽이 될 수 있습니다. 성장하는 게임을 죽이는 가장 빠른 방법은 사용자에게 기다리라고 하거나, 부하를 감당할 수 있을 때 돌아오라고 말하는 것입니다. EA에게 물어보세요.
Draw Something과 거의 비슷한 시기에 출시된 EA의 심슨의 탭 아웃도 엄청난 인기를 얻고 있었습니다. 입소문을 타면서 3월 초에 Apple 앱스토어에서 #2에 도달한 이 게임은 확장 문제에 부딪혔습니다. 며칠 만에 말이죠, 앱 스토어에서 게임이 삭제되었습니다. 기존 플레이어만 게임을 계속 플레이할 수 있게 되었습니다. 몇 주가 지난 지금도 여전히 돌아오지 않고 있습니다.
다행히도 OMGPOP은 확장성을 위해 미리 계획을 세워서 NoSQL 데이터베이스 를 기본 데이터 저장 기술로 사용했습니다. 이 회사의 경우 카우치베이스 서버그리고 모든 것이 순조롭게 진행되었는데, 저희는 카우치베이스가 이 게임의 배후에 있다는 사실조차 알지 못했습니다.
데이터베이스 클러스터의 성장을 계획하는 데 있어 모범 사례를 적용하고 있는지 확인하기 위해 저희에게 연락했을 때 저희는 그들의 성공에 있어 저희의 역할을 알게 되었습니다. 사용자, 게임, 도면의 수가 전례 없는 속도로 증가함에 따라 클러스터에 용량을 지속적으로 추가할 수 있었습니다(100개 이상의 서버로 성장), 애플리케이션 성능을 유지하면서 애플리케이션 다운타임이 발생하지 않습니다.. 하드웨어가 죽어가는 상황에서도 성능 저하나 신규 플레이어가 파티에 참여할 수 없는 순간은 단 한 번도 없었습니다! 한 번은 선택한 하드웨어의 마더보드 문제로 인해 클러스터 멤버가 무서운 속도로 다운된 적이 있었습니다. 카우치베이스는 이러한 장애에도 게임 운영이나 성능을 중단하지 않고 슬기롭게 대처했습니다.
물론 혁신적인 애플리케이션을 개발하는 것은 OMGPOP과 다른 기업의 성공의 토대입니다. 인기 소셜 게임의 확장 요구 사항은 대부분의 애플리케이션보다 더 극단적일 수 있지만, 성능을 유지하면서 다운타임 없이 애플리케이션을 쉽게 확장할 수 있는 능력은 대부분의 애플리케이션의 성공에 매우 중요합니다. 개발자는 앱 자체의 운영을 지원할 뿐만 아니라 쉽게 확장할 수 있는 데이터베이스를 선택하는 것이 중요합니다. 전 세계적으로 큰 인기를 끌고 있는 혁신적인 게임을 개발한 OMGPOP에 축하를 보냅니다. 카우치베이스가 그 성공에 일조할 수 있어서 기쁩니다.
멋지네요. 자랑할 만한 일이죠.
그렇다면 100개의 노드에서 초당 몇 개의 문서를 쓰고 읽을 수 있을까요? 클라우드 환경인가요, 전용 HW인가요?
안녕하세요 Artur
전용 하드웨어(호스팅 제공업체에서 관리)에서 Couchbase를 실행하고 있으며, 게임 지원을 위해 초당 평균 약 120,000건의 문서 읽기 및 쓰기 작업을 수행하고 있습니다. 또한 클러스터 전체에서 비슷한 속도로 데이터를 다중 복제하고 있습니다(덕분에 지난 몇 주 동안 많은 하드웨어 장애를 흡수할 수 있었습니다).
james.
몇 가지 (재미있는) 질문이 있습니다:
드로우 썸씽으로 얼마나 많은 서버를 죽이거나 다운시켰나요?
서버 킬링(드라이브/서버 장애) 비율은 얼마인가요?
실행 중인 시스템에서 예상되는 하드웨어 오류보다 더 많거나 적은가요?
이 유형의 호스팅 서비스 수준에 대한 OMGPOP/Zynga의 비용은 얼마인가요?
CloudAnt와 같은 완전 호스팅 솔루션이 이 정도로 반응이 빠를 수 있는지 궁금합니다.
아니면 관리자를 고용하여 쉽게 확장할 수 있도록 해야 하나요?
완전 호스팅 솔루션(예: CloudAnt)이 서버 인스턴스를 판매하는 것인지, 아니면 필요에 따라 확장할 수 있는 서버 인프라를 판매하는 것인지는 명확하지 않습니다.
안녕하세요.
Cloudant의 제품과 기능에 대한 인사이트를 얻으려면 Cloudant와 상담해야 합니다. 이러한 질문에 답할 준비가 가장 잘 되어 있습니다. Couchbase는 라이트스케일을 통해 EC2에서 소프트웨어의 호스팅 배포를 지원합니다. 사용하기 매우 쉽습니다. 구글 카우치베이스와 라이트스케일만 있으면 됩니다.
James.
안녕하세요 라자마타즈입니다,
Cloudant 또는 다른 비카우치베이스 공급업체에 대해 이야기하기에 적합한 장소는 아니지만, 제기하신 구체적인 질문에 대해 답변해 드리겠습니다.
- Cloudant는 부하 요구 사항에 대응하는 유사한 고객 사례를 보유하고 있습니다.
- Cloudant가 데이터 센터에 있든 Cloudant의 데이터 센터에 있든 모든 것을 관리하므로 관리자를 고용할 필요가 없습니다. API와 상호 작용하기만 하면 됩니다.
- Cloudant 클러스터의 노드 수를 확장할 수 있습니다.
Cloudant에 대해 더 자세히 알고 싶으시면 언제든지 저에게 연락주세요.
건배.
고마워요, 샘!
리밸런싱 기능에서도 같은 문제가 발생하고 있는지 궁금합니다. 카우치베이스 1.8.x를 사용하고 있나요? 9개 노드 aws 클러스터에서 2억 개 이상의 항목이 있는 멤베이스 1.7.1을 사용하고 있지만 리밸런싱에 심각한 문제가 계속 발생하고 있습니다.
안녕하세요 스크류디스크 - 안녕하세요.
문제가 발생해 죄송합니다. 필요한 도움을 받고 계신가요? 이메일로 문의해 주시면 기꺼이 지원 리소스와 연결해 드리겠습니다. 카우치베이스의 제임스입니다.
고마워요
james.
곧 출시될 소셜 게임을 위해 아치를 구축하는 데 도움을 줄 사람을 찾고 있는데, 우리 사무실 직원 중 시간당 수백만 건 이상의 데이터를 처리하고 다운타임 없이 계속 확장할 수 있는 사이트 운영 경험이 있는 사람은 아무도 없습니다. 물론 EA의 경우와 마찬가지로 문제가 발생했습니다.
저희는 json 엔드포인트를 통해 게임 클라이언트와 통신하며, 많은 데이터를 쓰고 클라이언트 시작 시 해당 데이터를 읽기도 합니다. iOS에서 앱이 성장함에 따라 소셜 게임 트래픽을 처리할 수 있어야 하고, Facebook... + CouchBase가 좋은 솔루션인지, 또한 풀타임 관리자가 필요하지 않은 솔루션인지, 클라우드 aws 또는 리얼 메탈 하드웨어에서 실행하는 것이 좋을지 궁금합니다.
버전 1.8을 사용 중인지 2.0을 사용 중인지 알 수 있나요?
버전 1.8.
저는 몽고에서 왔고, 이 멋진 예제와 같은 특정 프로젝트에 대한 다른 옵션을 검색하게 된 몇 가지 보고서를 보았습니다. 더 알아본 결과, 이것은 멋진 솔루션처럼 들립니다. 저는 Node로 작업하는데, 현재로서는 노드 멤캐시드만이 유일한 방법인 것 같습니다. 멤캐시드를 사용해 본 적이 없는데, 드롭인 기능이긴 하지만 제가 놓칠 수 있는 중요한 기능이 있나요?
현재 노드 멤캐시가 프로덕션에 사용할 수 있는 옵션인 것은 사실이지만, 저희는 libcouchbase 기반 노드 클라이언트와 함께 프로젝트를 진행하고 있습니다. 미리 보기를 원하시면 저(매트)에게 이메일을 보내주세요.
노드 멤캐시를 사용하면 정말 아무것도 놓치는 것이 없습니다. 뷰 REST 인터페이스와 직접 상호 작용해야 하지만, 잘 문서화되어 있고 간단한 HTTP이므로 노드를 사용하면 매우 쉽습니다.
대략적인 아이디어는 여기에서 확인할 수 있습니다:
https://www.couchbase.com/wiki/...
... 그리고 기여자들과 핵심 개발자들 사이에서 이메일과 IRC를 통해 더 많은 논의가 이루어지고 있습니다.