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.

イケメンシリーズでのORMとスロークエリ対策について

1,357 views

Published on

ゲームサーバ勉強会#7に登壇した際の発表資料です。

Published in: Technology
  • Be the first to comment

イケメンシリーズでのORMとスロークエリ対策について

  1. 1. Copyright CYBIRD Co., Ltd. All Rights Reserved. イケメンシリーズでのORMと スロークエリ対策について 2017/11/25 株式会社サイバード 伊藤 雅俊
  2. 2. Copyright CYBIRD Co., Ltd. All Rights Reserved. 2  ORMで書いたプロダクトを運営した話です  「継続的に計測して対策しました」というお話しです  ORMの技術Tips等はありません 今日の話は
  3. 3. Copyright CYBIRD Co., Ltd. All Rights Reserved. 3  イケメンシリーズでのORMとスロークエリ対策について  話す人  イケメンシリーズ5年13作の歴史  イケメンシリーズシステム構成  ORM利用状況  DB処理の改善  まとめ 目次
  4. 4. Copyright CYBIRD Co., Ltd. All Rights Reserved. 4  話す人は... 株式会社サイバード 技術統括部 伊藤 雅俊 ( @masatoshiitoh ) 話す人
  5. 5. Copyright CYBIRD Co., Ltd. All Rights Reserved. 5  昔、RBB SPEED TESTという回線速度測定サービスを作ったりしました ※画像は初期の計測画面です 現在もspeed.rbbtoday.comにて運営されているのでご興味のある方は一度 アクセスしてみてくださいね 自己紹介オマケ
  6. 6. Copyright CYBIRD Co., Ltd. All Rights Reserved. 6 自己紹介オマケ オライリー「ゲームクリエイターが知るべ き97のこと 2」 こちらで、「発表・講演は、前半にメディア 向けの「おみやげ」を」という項を書いて います。
  7. 7. Copyright CYBIRD Co., Ltd. All Rights Reserved. 7  イケメン大奥◆恋の園 (2012/6/14)  イケメン恋戦◆平清盛 (2012/9/10)  イケメン源氏◆恋物語 (2012/10/29)  イケメン王宮◆真夜中のシンデレラ (2012/11/30)  新章イケメン大奥◆禁じられた恋 (2013/3/18)  イケメン夜曲◆ロミオと秘密のジュリエット (2013/8/26) イケメンシリーズ5年、アプリ13作の歴史 (1/2)
  8. 8. Copyright CYBIRD Co., Ltd. All Rights Reserved. 8  イケメン幕末◆運命の恋 (2013/12/9)  100日間のプリンセス◆もうひとつのイケメン王宮 (2014/6/5)  スイートルームの眠り姫◆セレブ的贅沢恋愛 (2014/9/11)  イケメン王国◆女王と真実のキス (2015/2/17)  イケメン戦国◆時をかける恋 (2015/6/22)  イケメン革命◆アリスと恋の魔法 (2016/10/20)  イケメンヴァンパイア◆偉人たちと恋の誘惑 (2017/7/31) イケメンシリーズ5年、アプリ13作の歴史 (2/2)
  9. 9. Copyright CYBIRD Co., Ltd. All Rights Reserved. 9 イケメンシリーズ以外のサイバードコンテンツたち
  10. 10. Copyright CYBIRD Co., Ltd. All Rights Reserved. 10  オーソドックスなLAMP環境  Linux/Apache/MySQL/PHP  インフラは時期による変遷も…  データベースの使い方も基本に忠実  処理能力の向上方法も含めて イケメンシリーズシステム構成 基本的な構成はこんな感じ
  11. 11. Copyright CYBIRD Co., Ltd. All Rights Reserved. 11  イケメン大奥 (1作目) ~イケメン幕末 (7作目)  IIJ/AWS上でMySQLを採用  DB関連のトピック  参照クエリをリードレプリカへ振り向け  集計用DBの分離  プラットフォームごとにDBサーバを分離 初期
  12. 12. Copyright CYBIRD Co., Ltd. All Rights Reserved. 12  100日間のプリンセス (8作目)~イケメン革命(12作目)  IDCフロンティア (オンプレミス)  DB関連トピック  オンプレ移行→ Fusion-ioの恩恵  DBチームによるチューニング支援が開始 中期
  13. 13. Copyright CYBIRD Co., Ltd. All Rights Reserved. 13  最新作「イケメンヴァンパイア」(13作目)  AWS (←戻ってきました!)  DB関連トピック  S-in : Auroraのr3.4xlarge  DBチームによる支援は継続 最近
  14. 14. Copyright CYBIRD Co., Ltd. All Rights Reserved. 14  負荷対策の基本は「計測」に基づく「対策」  目的:プレイヤーの皆様に快適に遊んでいただく! いつも、こんな感じの応答時間で遊んでいただけるように... !! DB処理の改善
  15. 15. Copyright CYBIRD Co., Ltd. All Rights Reserved. 15  計測:ツールによる収集  Monyog  内製ツール  対策  チューニング  負荷の分散  DBサーバの強化 計測と対策
  16. 16. Copyright CYBIRD Co., Ltd. All Rights Reserved. 16  DBチーム「スロークエリ道場」の継続的な開催  スロークエリログの取得と、対策の提案(2015年9月~ 毎週) 対策:チューニング
  17. 17. Copyright CYBIRD Co., Ltd. All Rights Reserved. 17  イケメンシリーズでのORM  Fuel PHP  DBアクセスを抽象化でき、メリットも大きい  生SQLと比較して、開発者ごとのクエリのクオリティ差を抑えられる  一方で…  動かしてみないと実際のクエリが分からない  スロークエリによるサービス影響時に対応が難しいケースも ORMについて
  18. 18. Copyright CYBIRD Co., Ltd. All Rights Reserved. 18  プレイヤー向けサーバコード  基本的にはORMで  Fuel PHP ORM  管理画面用コード  生SQLも使用 ORM利用状況
  19. 19. Copyright CYBIRD Co., Ltd. All Rights Reserved. 19  道場開始当時(2015年9月)  閾値10秒でも数百件/日 スロークエリ道場開始当時
  20. 20. Copyright CYBIRD Co., Ltd. All Rights Reserved. 20  開発チームと運営チームが分離している  エンジニア入れ替えの発生  ORMと生SQLの紐づけが遠い  技術部(開発・運営)とインフラ部(DBチーム)が分離している 難しさが生み出されてくる場所
  21. 21. Copyright CYBIRD Co., Ltd. All Rights Reserved. 21  イケメン大奥◆恋の園 (2012/6/14)  イケメン恋戦◆平清盛 (2012/9/10)  イケメン源氏◆恋物語 (2012/10/29)  イケメン王宮◆真夜中のシンデレラ (2012/11/30)  新章イケメン大奥◆禁じられた恋 (2013/3/18)  イケメン夜曲◆ロミオと秘密のジュリエット (2013/8/26) イケメンシリーズ5年、アプリ13作の歴史 (1/2)
  22. 22. Copyright CYBIRD Co., Ltd. All Rights Reserved. 22  イケメンシリーズ初期タイトル当時は「開発チームがそのまま運営」してい た  ⇒ 「開発」チームと「運営」チームを分離  ⇒ 運営についても「各タイトル」「横断」でチームを分離  問題 ⇒ 情報の属人化、タイトル知識の分散 開発チームと運営チームの分離
  23. 23. Copyright CYBIRD Co., Ltd. All Rights Reserved. 23  新規タイトル開発にもっていかれてしまう  入社&退職  パートナーの入退場  ・・・いろいろなケースでエンジニアの交代が発生します エンジニア入れ替え対応
  24. 24. Copyright CYBIRD Co., Ltd. All Rights Reserved. 24  スロークエリログには実クエリが記録される  サーバのコードはORMで書かれている  DBチームからスロークエリログの生SQLで指摘されても、サーバプログラ マ側ではソースのどこに原因があるかわからない!!! ORMと生SQLの紐づけが遠い
  25. 25. Copyright CYBIRD Co., Ltd. All Rights Reserved. 25  DBチームが「スロークエリ道場」を開催するも…  DBチームの指摘が強制力を持たない  工数が取れない時期には放置され気味…  技術部側のリードを巻き込んで対応 技術部(開発・運営)とインフラ部(DBチーム)が分離
  26. 26. Copyright CYBIRD Co., Ltd. All Rights Reserved. 26  なんとか対応  スロークエリ道場の継続的実施  多くはインデックスの設定不足  スロークエリ道場では、使用されていないインデックスの指摘も そうは言いながらも…
  27. 27. Copyright CYBIRD Co., Ltd. All Rights Reserved. 27  道場開始当時(2015年9月)  閾値10秒でも数百件/日  改善後の現在  閾値0.5秒で数件/日 これにより
  28. 28. Copyright CYBIRD Co., Ltd. All Rights Reserved. 28  改善できましたー つまり
  29. 29. Copyright CYBIRD Co., Ltd. All Rights Reserved. 29  Aurora、インスタンスサイズ変更でスロークエリログが消えるので注意!  消えるのは以下のログ  スロークエリログ  エラーログ  一般クエリログ  監査ログ ご参考: RDS (Aurora)での注意点!
  30. 30. Copyright CYBIRD Co., Ltd. All Rights Reserved. 30  負荷分散  RDBを横に並べる  RDBとKVSの組みあわせ  DBサーバ強化 その他のDB負荷対策
  31. 31. Copyright CYBIRD Co., Ltd. All Rights Reserved. 31  リードレプリカ  集計用データベース  プラットフォームごとにDBサーバ分割  Redis併用  DWH導入 対策:負荷の分散
  32. 32. Copyright CYBIRD Co., Ltd. All Rights Reserved. 32  オンプレミス  Fusion-io !!  AWS  スケールアップ  DBサーバ分割  ゲーム仕様の変更が必要な場合も… 対策:DBサーバの強化
  33. 33. Copyright CYBIRD Co., Ltd. All Rights Reserved. 33  鉄板の「2 Phase Commit」もあっさり壊れる可能性… …  「分散システムについて語らせてくれ」 (@kumagi さん) https://www.slideshare.net/kumagi/ss-78765920 分散DBは壁が高い
  34. 34. Copyright CYBIRD Co., Ltd. All Rights Reserved. 34  Jepsen Testを生き残ったetcdやRiakであれば可能?  etcdを設定共有以外に使用する?  Riakは開発元のBasho Inc.が休止 ⇒ Bet365による買収  素直にDynamoDBを使うべきか... 分散DBは壁が高い
  35. 35. Copyright CYBIRD Co., Ltd. All Rights Reserved. 35  CPU、シングルコアのクロック向上は頭打ち...  ストレージはFusion-io、NVMe。その先は...?  ⇒ フリーランチの終了?? 新製品買えば高性能、という時代が終わりそう…
  36. 36. Copyright CYBIRD Co., Ltd. All Rights Reserved. 36  Google Cloud Spanner ! ! 次のフリーランチ
  37. 37. Copyright CYBIRD Co., Ltd. All Rights Reserved. 37  課金体系は、必要なクエリ処理能力ベース  1ノードあたり  最大10,000QPSの読み取り または  最大2,000QPSの書き込み  ストレージは2TiB  1ノードあたり約900ドル/月 ※商用環境は3ノード以上で構成 ⇒ R 30K QPS / W 6K QPSのDBが30万円/月 Google Cloud Spanner https://cloud.google.com/spanner/docs/instance-configuration?hl=ja
  38. 38. Copyright CYBIRD Co., Ltd. All Rights Reserved. 38  スロークエリ対策は継続的な集計と対策で  ORM利用時はログと発生場所の突き合わせがポイント  RDBでトランザクション性を確保  RDBMSが提供する機能で水平・垂直分割  用途ごとにRDBMS/KVSを使い分ける  新技術もいろいろ楽しみ まとめ
  39. 39. Copyright CYBIRD Co., Ltd. All Rights Reserved. 39 サイバードでは、いっしょに開発・運営する 仲間を募集しています! 

×