Your SlideShare is downloading. ×
0
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Phpconf2010
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Phpconf2010

20,739

Published on

0 Comments
15 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
20,739
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
171
Comments
0
Likes
15
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 大ヒット!ソーシャルアプリの裏側 2010/9/24 KLab株式会社 Kラボラトリー 高田敦史 第2開発部 新田 祐介 Copyright 2010 KLab Inc. All right reserved.
  • 2. ■会社紹介 • 2000年8月設立、今年10周年を迎えます • 大規模/高負荷モバイルサイトの構築/運用にて 負荷対策のノウハウを蓄積してきました • ソーシャルアプリ向けホスティングサービス「DSAS Hosting for Social」提供中! http://www.klab.jp/dsas_host/index.html Copyright 2010 KLab Inc. All right reserved.
  • 3. ■会社紹介 • 弊社にてソーシャルアプリを多数展開中! Copyright 2010 KLab Inc. All right reserved.
  • 4. ■スピーカー紹介 ■氏名 ・新田 祐介(twitter:@fushianako) ・KLab 株式会社 第2開発部 グループマネージャー ■略歴 ・2006年にKLabに入社。 ・以降、公式モバイルサイト/自社SNS開発をしてました。 ・最近はソーシャルゲーム開発の駆け出しPMしてます。 ・プロジェクトが佳境になるとうまい棒を持って登場します。 ■趣味・特技 ・毎週日曜の娘とのプリキュア観賞。 ・native japanese(興味のある人はお問い合わせください) Copyright 2010 KLab Inc. All right reserved.
  • 5. ■スピーカー紹介 • 自己紹介 – 高田敦史 – KLab株式会社: Kラボラト リー、第二開発部PMO • 略歴 – 2008年入社 – 研究開発 + ソーシャルアプリ の開発 + アーキテクト – 最近はくまをかかえています • つくったものなど – http://paintica.com/ – PHPは主にソーシャル アプリの開発に使用。 Copyright 2010 KLab Inc. All right reserved.
  • 6. ■発表内容 ■対象者 これからソーシャルアプリを開発する、もしくは 興味のあるエンジニア、開発リーダー、PM。 ■発表内容 第1部: ソーシャルアプリの概要(新田) 第2部: 激戦!ソーシャルアプリ格闘日記(新田) 第3部: ソーシャルアプリ負荷対策(高田) Copyright 2010 KLab Inc. All right reserved.
  • 7. ■第1部 ソーシャルアプリの概要 Copyright 2010 KLab Inc. All right reserved.
  • 8. ■ソーシャルアプリの概要 ■ソーシャルアプリとは? ・SNSの機能を使う事が出来るアプリケーション。 ex)自分が作ったアプリからSNSの友達情報を取得する。 ・SNSの機能を使いたい場合は、各プラットフォームが提供する JavaScriptAPIやWebAPIを利用する。 ■実際、どのような事が出来るの? ・ギルドのような、SNS上の友達と協力して1つの目標を 達成するような協力プレイが出来る。 →SNS上の友達とプレイ出来る事で、気軽に始められる。 (友達がやってるから自分もやってみよう的な意味で。) お陰で、トラフィックが激しくて負荷に悩まされます(><) Copyright 2010 KLab Inc. All right reserved.
  • 9. ■ソーシャルアプリの概要 ■ソーシャルアプリの特徴 サービスを気軽に立ちあげられる 【ビジネス的観点】 ・ユーザの母体がSNSにあるが故の集客コストの削減。 ・流行っているからという理由で納得する人が多い(w ※ 半分冗談、半分本気です。 【技術的観点】 ・OpenSocialAPIを使う事による、開発コストの削減。 ※ PCサービス立ち上げ時には認証系で助けられました。 気軽に立ちあげられる反面、同じようなテーマのアプリが 多いため、他アプリとの差別化が重要です! Copyright 2010 KLab Inc. All right reserved.
  • 10. ■ソーシャルアプリの概要 ■どうやって差別化していくか? ① アプリのテーマの選定 ・ 誰も考えていないようなテーマを選定していく事が重要。 ※ 最近だと乙女系が流行っているみたいですね。 ② 独自機能の提供 ・ ソーシャルアプリは数が多く、テーマがかぶる事が多いです。 ・ 既にかぶっている場合は、他のアプリを研究して 他アプリには無い機能を作り込むと効果的! 恋愛と同じように、自分をアピールしなきゃダメ! 劣化コピーでは誰もあなたには振りむきませんよ! Copyright 2010 KLab Inc. All right reserved.
  • 11. ■ソーシャルアプリの概要 ■まとめ ・ ソーシャルアプリとはSNSの機能を使えるアプリケーション。 ・ SNSの機能による、友達の輪(ソーシャルグラフ)を 使った協力プレイが特徴。 ・ 母体がSNSであるため、ヒットするとトラフィックが高く 負荷に悩まされる。 ※ 負荷に困ったら DSASに相談だ!(w ・ 気軽に始められる半面、同じようなアプリが乱立するため 他社との差別化をしないと生き残れない。 Copyright 2010 KLab Inc. All right reserved.
  • 12. ■第2部 激戦!ソーシャルアプリ開発日記 Copyright 2010 KLab Inc. All right reserved.
  • 13. ■激戦!ソーシャルアプリ開発日記 ソーシャルアプリの特徴も含めた、私の苦労話を ノンフィクションでお送りいたします。 Copyright 2010 KLab Inc. All right reserved.
  • 14. ■激戦!ソーシャルアプリ開発日記 その1 集中砲火 Copyright 2010 KLab Inc. All right reserved.
  • 15. ■激戦!ソーシャルアプリ開発日記 ソーシャルアプリは他社との差別化が重要と言いましたが… Copyright 2010 KLab Inc. All right reserved.
  • 16. ■激戦!ソーシャルアプリ開発日記 恋してキャバ嬢は見事に差別化に成功しました\(^o^)/ Copyright 2010 KLab Inc. All right reserved.
  • 17. ■激戦!ソーシャルアプリ開発日記 が、しかし、問題が・・・ 「弾幕薄いぞ!何やってんの!」 負荷に耐えきれなくなったのです\(^o^)/ Copyright 2010 KLab Inc. All right reserved.
  • 18. ■激戦!ソーシャルアプリ開発日記 サーバの状態を見ていたら・・・・ 最大秒間PV(※)が・・・ 初日 :380PV/sec(な、なんだってー!!) 翌日 :580PV/sec(ぇぇぇぇぇぇぇぇぇぇぇぇ) 最大 :2000pv/sec以上(\(^o^)/ ) ※最大秒間PV:1秒間のページ閲覧数が一日で最も多いときのページ閲覧数 ※500pv/secになると普通のWebアプリでは考えられない量です。 というわけで、地道に負荷対策をし始めました。 結果、最大秒間PVはさばけるようになりました。 (詳細は高田から説明します。) Copyright 2010 KLab Inc. All right reserved.
  • 19. ■激戦!ソーシャルアプリ開発日記 その2 ハイブリッド化 Copyright 2010 KLab Inc. All right reserved.
  • 20. ■激戦!ソーシャルアプリ開発日記 同じテーマのアプリが出てくることはしばしばありますが… Copyright 2010 KLab Inc. All right reserved.
  • 21. ■激戦!ソーシャルアプリ開発日記 キャバをテーマにしたアプリも出てきました… Copyright 2010 KLab Inc. All right reserved.
  • 22. ■激戦!ソーシャルアプリ開発日記 ソーシャルアプリ業界ではよくあることです Copyright 2010 KLab Inc. All right reserved.
  • 23. ■激戦!ソーシャルアプリ開発日記 テーマがかぶった場合は… 新規機能を開発して差別化を行わないと死にます。 ここではその時のお話をしようと思います。 Copyright 2010 KLab Inc. All right reserved.
  • 24. ■激戦!ソーシャルアプリ開発日記 ■新田が開発リーダーしていた頃のよくある光景 企画者 「他社アプリが伸びてきたから、うちも対策しないと」 「新田さん、こんな機能作れる?」 新田 「○○人日くらいあれば作れるので、作りますね。」 開発者 「新田さん、作り終わったので企画チェックしますね。」 企画者 「やっぱり、ここ、こう作りなおしてもらって良い?」 新田 「謀反じゃーーー!!! 」 Copyright 2010 KLab Inc. All right reserved.
  • 25. ■激戦!ソーシャルアプリ開発日記 仕様変更による、手戻りが発生し、リリースが遅れます。 他社からも遅れを取ってしまい、機会損失になります。 Copyright 2010 KLab Inc. All right reserved.
  • 26. ■激戦!ソーシャルアプリ開発日記 ■新田が開発リーダーをしていたころに気をつけた事 企画者 「他社アプリが伸びてきたから、うちも対策しないと」 「新田さん、こんな機能作れる?」 新田 「作れるけど、こういう仕様にした方が面白くないっすか?」 企画者 「そうだね、こうした方が良さそうだね」 開発者 「新田さん、作り終わったので企画チェックしますね。」 企画者 「OK!じゃリリースしましょう。」 Copyright 2010 KLab Inc. All right reserved.
  • 27. ■激戦!ソーシャルアプリ開発日記 ソーシャルアプリは、スピードの流れが早いため 自分の担当にとらわれず、担当外の作業を積極的に 行なう事が、ヒットアプリを生み出す要因になります。 エンジニアのみなさん、少しでも良いので 企画のフィールドに首を突っ込むと楽になれますよ! Copyright 2010 KLab Inc. All right reserved.
  • 28. ■激戦!ソーシャルアプリ開発日記 ■まとめ ・ソーシャルアプリはヒットすると、ありえない負荷がかかる。 → 負荷対策をきちんとしないと機会損失になります。 ・ソーシャルアプリは常に追加開発をしないと他アプリに 追いぬかれ埋もれていく。 → 結果として、機会損失に繋がる。 ・開発者が企画者マインドを少し注入しハイブリッドに なることでヒットアプリへの道が広がる。 Copyright 2010 KLab Inc. All right reserved.
  • 29. ■第3部 ソーシャルアプリ負荷対策 Copyright 2010 KLab Inc. All right reserved.
  • 30. アジェンダ 1.ソーシャルアプリの負荷特性 2.KLabのシステム構成 3.リソース有効活用テクニック •Webアプリ負荷対策の基本をおさえる •リソースの特性を意識する •参考: •LAMPで作るソーシャルアプリの負荷対策 http://tinyurl.com/orehamorimoto Copyright 2010 KLab Inc. All right reserved.
  • 31. ■ソーシャルアプリの負荷特性 • ユーザー固有のデータ – 大量 • ゲーム内ステータス(体力、経験値など) • アイテム所持情報 よくある高ARPUな • 課金、購入ログ ソーシャルゲーム – 更新頻度: 高い モデルを想定 • ボタンを押すだけでステータス変化 • 大量のログ • 高頻度 + 大量のHTTPリクエスト(更新系) Copyright 2010 KLab Inc. All right reserved.
  • 32. ■ソーシャルアプリの負荷特性 大量の更新リクエスト ミニゲーム アプリケーション 結果 アイテム 購入 他ユーザー を応援 Copyright 2010 KLab Inc. All right reserved.
  • 33. ■ソーシャルアプリの負荷特性 マスターDBへの負荷集中 1台に負荷が 集中! スレーブDB スレーブDB スレーブDB マスターDB 分散可能 Webサーバーebサーバーebサーバー W W Webサーバー Copyright 2010 KLab Inc. All right reserved.
  • 34. ■ソーシャルアプリの負荷特性 ソーシャルアプリで重要なリソース • データベース(特にマスター) – 最大コネクションは数百程度 – 負荷分散も難しい 大量の更新系リクエストをさばくため、マスターDBの リソースが枯渇! Copyright 2010 KLab Inc. All right reserved.
  • 35. ■ソーシャルアプリの負荷特性 モバイルサイトとの比較 モバイルサイト モバイル向けソーシャルア プリ 情報閲覧 + DL中心 ユーザーのアクション+ ユーザー間アクション リクエスト数 少 リクエスト数 多 参照(多) > 更新(少) 参照(多) = 更新(多) Copyright 2010 KLab Inc. All right reserved.
  • 36. ■ソーシャルアプリの負荷特性 まとめ • ソーシャルアプリ = 大量の更新系リクエスト • マスターデーターベースに負荷が集中し、ボ トルネックになりがち Copyright 2010 KLab Inc. All right reserved.
  • 37. ■KLabのシステム構成 • DSAS – 高負荷・大規模サイト構築用インフラ統合技術 • オープンソースベース • 単一故障点が存在しない高信頼構成 • 容易なメンテナンス・柔軟なスケーラビリティ • 充実した監視機構とモニタリング http://www.klab.jp/dsas/ Copyright 2010 KLab Inc. All right reserved.
  • 38. ■KLabのシステム構成 システム構成(インフラ) Webサーバー マスターDB スレーブDB Webサーバー LVS(ロードバランサ) Webサーバー KVストレージ (TokyoTyrant) Webサーバー Internet キャッシューサーバー (memcached) Copyright 2010 KLab Inc. All right reserved.
  • 39. ■KLabのシステム構成 Gangliaによるモニタリング 監視対象も追加 できる Copyright 2010 KLab Inc. All right reserved.
  • 40. ■KLabのシステム構成 システム構成(アプリケーション) 高速画像合成ライブラリ アプリ固有コード (KGD) Flash合成ライブラリ KLabSocialGamePlatform Symfony APC Copyright 2010 KLab Inc. All right reserved.
  • 41. ■KLabのシステム構成 • Symfonyを大幅に改造した独自フレームワー クを使用 – 必要ない機能を省いて軽量化 – 開発効率の向上 • Opensocial用の独自ライブラリ • 画像合成、Flash合成は高速化改造済み PHPエクステンションを使用 Copyright 2010 KLab Inc. All right reserved.
  • 42. ■KLabのシステム構成 画像合成について 背景画像 ボディ画像 表情画像 ドレス画像 髪型画像 Copyright 2010 KLab Inc. All right reserved.
  • 43. ■KLabのシステム構成 • キャッシュは非効率 + 必要ない • 1ユーザー(50KB) × 100万 – 合成したアバター画像だけで、50GB • Memcachedへのキャッシュ: 非現実的 • ローカルファイルへのキャッシュ – メモリにキャッシュできないためI/Oアクセス増加 – むしろ遅くなる Copyright 2010 KLab Inc. All right reserved.
  • 44. ■KLabのシステム構成 • 素材ファイル – 数百から数千程度 – キャッシュ可能! • 画像ライブラリの高速化 + キャッシュなし – 高速改造版GDライブラリKGDは、DSAS Hosting for Socialでも提供中! – http://www.klab.jp/dsas_host/kgd.html Copyright 2010 KLab Inc. All right reserved.
  • 45. ■リソース有効活用テクニック • ハードウェアベース – CPU かぎりあるリソースを有効 – メモリ 活用する – HD • 役割ベース – DBサーバー(マスター / スレーブ) – キャッシュサーバー + キーバリューストレージ – Webサーバー(Apache, PHP) Copyright 2010 KLab Inc. All right reserved.
  • 46. ■リソース有効活用テクニック マスターDB有効活用 処理時間 をへらす コネクション をへらす • なるべくデータベースに接続しない – コネクション数をへらす • データベースへの接続時間を短かくする – クエリを最適化 – 接続を切る Copyright 2010 KLab Inc. All right reserved.
  • 47. ■リソース有効活用テクニック • SQL最適化、DBサーバーチューニングの話 は、ソーシャルアプリにかぎらないので省略 – ほんとはとても重要 – I/Oアクセスをへらせ!とだけ言っておく • DBコネクションの節約方法について話します – キャッシュサーバーの利用 – KVSの利用 – スレーブDBヘの分散 – ソーシャルAPIに関する注意点 Copyright 2010 KLab Inc. All right reserved.
  • 48. ■リソース有効活用テクニック キャッシュの利用 • 効率的なキャッシュの利用 – Memcachedの最大接続数は数万から数十万 – 秒間数万リクエストを処理 先にキャッシュを検索 DB更新時に なければDBに問い合わせ キャッシュも更新 Memcached アプリ(PHP) MySQL Copyright 2010 KLab Inc. All right reserved.
  • 49. ■リソース有効活用テクニック Webサーバー Webサーバー APCキャッシュ Memcached Webサーバー Webサーバー Copyright 2010 KLab Inc. All right reserved.
  • 50. ■リソース有効活用テクニック KVSの利用 • KVS(キーバリューストレージ)の利用 – 更新の一部をKVSに分散する – KVS: 連想配列のような、キー+値の形式でデー タを保持するストレージ • TokyoTyrant – 平林幹雄さん(mixi)作 – Memcacheに近い高速な処理 – エビクション(データ消滅)の心配がいらない – http://fallabs.com/tokyotyrant/ Copyright 2010 KLab Inc. All right reserved.
  • 51. ■リソース有効活用テクニック TokyoTyrantの特性 データ信頼性 高速 MySQL TokyoTyrant Memcached レプリケーション HDにも書き込む 基本はオンメモリ a 高度なトランザクション/ レプリケーション トランザクション/ロック ロック機構 機構なし エビクションなし HDへの書き込みが保 エビクションによる 証される データ不整合の危険 データ消滅 Copyright 2010 KLab Inc. All right reserved.
  • 52. ■リソース有効活用テクニック TokyoTyrantの使い道 • 頻繁に更新されるユーザーステータス – 体力 – アイテム装備情報 – ログイン情報etc. • RDBの機能(ロック、トランザクションなど)が 必要ないデータ Copyright 2010 KLab Inc. All right reserved.
  • 53. ■リソース有効活用テクニック 注意点 • TokyoTyrantとMySQLの間の不整合が起こりうる。 • アトミックな更新処理は困難 • ユーザーが得する方向で処理を行なう – 順番が重要 – (1)(2)(3)、どのタイミングで例外が起きてもよいようにする (1)ユーザーの利益になる処理 on TT: 体力回復 (2)MySQLへの更新処理: アイテム消費など (3)ユーザーの損になる処理 on TT: 体力消費 Copyright 2010 KLab Inc. All right reserved.
  • 54. ■リソース有効活用テクニック スレーブDBへの分散 スレーブDB スレーブDB マスターDB スレーブDB • スレーブDB: マスターからデータをコピーしたDB(レ プリケーション) • DBへの参照をスレーブDBに逃がすことで、マス ターDBの負荷を減少 Copyright 2010 KLab Inc. All right reserved.
  • 55. ■リソース有効活用テクニック スレーブDB スレーブDB マスターDB スレーブDB • 注意点: 最新のデータがあるとはかぎらない • レプリケーション遅延はいつでも起こりうる • スレーブDBを利用できるデータ: – ランキングなど、更新が少なく、遅延が致命的でないデー タ Copyright 2010 KLab Inc. All right reserved.
  • 56. ■リソース有効活用テクニック ソーシャルAPIの注意点 • ソーシャルアプリ = SNS APIを使用 – ユーザー情報(ユーザー名、SNSフレンドデータ) – ユーザー投稿テキストの保存 – アクティビティ送信 • SNSが提供するAPIの使用は避けて通れな い Copyright 2010 KLab Inc. All right reserved.
  • 57. ■リソース有効活用テクニック ガジェットサーバー ユーザー SAP APIサーバー • ガジェットサーバー経由の認証情報を利用し、API サーバーに問い合わせる • APIとの通信はHTTP – 最短でも数十msのコスト Copyright 2010 KLab Inc. All right reserved.
  • 58. ■リソース有効活用テクニック • レスポンスタイムアウトは日常的に起こりえる • API通信がつねに成功する前提でアプリケーション を開発してはいけない タイムアウトの場合、DBコネクションを 危険なコード 数秒間無意味に 数秒間無意味に保持 通信が成功しても、数十 程度のロス 数十ms程度 数十 程度の - トランザクション開始 - => APIに問い合わせ - トランザクション終了 Copyright 2010 KLab Inc. All right reserved.
  • 59. ■リソース有効活用テクニック それでも足りない場合 • 水平分割 / 垂直分割を利用 • データベースを複数に分割 – 機能単位の分割(垂直分割) – ユーザー単位など、データ単位の分割(水平分 割) • 注意点は、KVSの利用に似てくる – データ整合性がネック Copyright 2010 KLab Inc. All right reserved.
  • 60. ■リソース有効活用テクニック まとめ • マスターDBへの接続をへらそう – キャッシュサーバーを利用 – 一部の更新をKVSなどNoSQLに分散 – 参照系の処理をスレーブDBに分散 – API通信に気をつけよう – 垂直分割+水平分割の利用 Copyright 2010 KLab Inc. All right reserved.
  • 61. ■最後に・・・ ご静聴ありがとうございました。 不明点はお気軽にお問い合わせください。 Copyright 2010 KLab Inc. All right reserved.

×