Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Cedec2013 report 急激なユーザやデータの増加を支えるアーキテクチャについて

468 views

Published on

Published in: Technology
  • Be the first to comment

Cedec2013 report 急激なユーザやデータの増加を支えるアーキテクチャについて

  1. 1. 急激なユーザやデータの増 加を支えるアーキテクチャに ついて CEDEC2013 REPORT
  2. 2. Session Title How Draw Something Absorbed 50 Million New Users, in 50 Days, With Zero App Downtime  -急激なユーザやデータの増加を支えるアーキテ クチャについて-
  3. 3. Speaker Couchbase Inc. Frank Weigel
  4. 4. Couchbase概要 ● NoSQL Database ● Document Oriented ● Scalable KVS ● Zyngaなどで使われている
  5. 5. Couchbaseの特徴 ● スケールアウトするまでの時間 ○ Easy Scalability ● 一貫したパフォーマンス ○ Consistent High Performance ● ダウンタイムを必要とせず、常にオンラインでメ ンテナンス可能 ○ Always On 24 x 365 ● ドキュメント指向のスキーマレスなデータモデル ○ Flexible Data Model
  6. 6. Market Adoption ● Internet Companies ○ Zynga ○ Salesforce など ● Enterprises ○ Adobe ○ Disney ○ Starbucks など ● More than 350 customers 8,000 productions
  7. 7. 成功事例 ● OMBPOP社のソーシャルアプリ「Draw Something」 ● バイラル効果を実現 ● 有名人がTwitterでPostしたことにより人気上昇 ● Fastest Growing in Mobile App ● DAU 1,600万
  8. 8. 失敗事例 ● The Simpson’s Tapped Out ● 急成長にバックエンドが対応できず、ユーザエ クスペリエンスが悪化し、AppStoreでの提供が 止められた ● 従来型のスタックで、MySQLなどを使用してい た
  9. 9. Draw Something ● Launch Day : 30,000 DL ● Initial Scalable Architecture ○ Smart client style mobile app ○ Scalable app server tier ■ HAProxy ■ Nginx ■ Ruby ○ Scalable KVS as SaaS ■ Amazon S3
  10. 10. Draw Something ● First Week : Million DL ● Scalability isn’t all you need ● Synchronicity & high throughput don’t mix ○ データの同期と高速スループットが同時進行されない ● AppServer を Goliath Ruby App Server に変 更 ○ AppServer を 15台 → 7 or 8 台に
  11. 11. Draw Something ● 2 weeks in : 1.2 million DL ● 30drawings/sec ● 600accesses/sec ● S3の想定スループットを超えて制限がかかった ● NoSQL to the rescue ○ Couchbase Server NoSQL Database ■ Easy on-line scalability ■ Lazy migration for existing data ● 既存データの移行が手軽にできる ● 新しいデータストアになければ古い方を参照し、書き込みは新し い方へ行う
  12. 12. Draw Something ● Scaling out under load ● Partitioning the data - bucket (internal shards) map ○ key -> vBuckets -> Servers ● 一晩でS3からCouchbaseに移行 ● Dataレプリカは他のActiveサーバに分散保持 ● アプリ側ではクライアントライブラリがHash関数 によって対象サーバを特定する ● サーバ追加時 ○ re-balanceを実行する ○ CLUSTER MAPがアップデートされる
  13. 13. Draw Something ● 4 weeks in : ○ Number 1 in AppStore ○ Millions of new layers per day ○ 1000 drawings/sec ○ DAU 2 million -> 4 million
  14. 14. Draw Something ● Bigger is still better ○ Linear Scalability! Oh no… ■ 水平方向にスケール ○ Size Matters ■ サイジング ○ SSD to fight fragmentation impact ■ フラグメンテーションインパクトをSSDで緩和 ○ Higher likelihood for hardware failure ■ ハードウェアに障害が発生する可能性が高い ● フリーのCouchbaseを使っていたがサポートを 依頼
  15. 15. Draw Something ● 5.5 weeks in : ○ 3,000 drawings/sec ○ Over 1 billion drawings ○ 60,000 - 70,000 DBアクセス/sec ● Whack-a-bottleneck ○ 120ぐらいのグラフを提供 ● Race to Keep Up ○ Continue scaling all tiers ○ Scale HAProxy tier ○ Add DNS load balancing ○ Scale up DB tier to 128GB RAM
  16. 16. Draw Something ● 50 Million DL in 50 Days ○ 5400+ drawings/sec ○ 2 billion drawings ○ 105,000 TPS ○ 3.3 TB data stored ○ Sub msec response time ● Zyngaが2億ドルで買収
  17. 17. Scalability Takeaways ● You can tune, but you can’t retrofit. ○ サーバの調整は可能でも、組み換えは難しい ● Scaling needs to be easy and online. ○ スケールは操作が簡単でオンラインでできる必要がある ● Failure is a certainly. ○ サーバ障害の可能性を考える ● Bigger is still better. ● Sleep is overrated.

×