概要
ゲームのインフラ中心の勉強会。
今回はAWSとデータベースの話が主だった、はず。
配信
資料
- 失敗から学ぶ・大規模環境におけるRuby on Rails on AWS での最適化事例
- これで怖くない!?大規模環境で体験するDB負荷対策~垂直から水平の彼方へ~
- ゲームのインフラ6年やっててよく聞かれること - Speaker Deck
- FGO を支える負荷試験ツール – shiguredo – Medium
- はじめてのCode4兄弟 - Speaker Deck
- Fargate起動歴1日の男が語る運用の勘どころ
メモ
- 会場でとったメモ。内容に誤りがあるかもしれないのであしからず。
失敗から学ぶ大規模環境におけるRuby on Rails on AWSの最適化事例
- キャンペーン開始とともに予想以上のアクセスにより障害が連発。
- DBのスケールアップは限界までやったがダメ。4倍のReshardingを実施。
- それによる速度低下が……。
- AWS Sumit Tokyo 2018で発表した内容を再編した内容になる。
- モバイルゲームにおけるサーバサイドの役割と課題
- システム構成
- とある日のバージョンアップでの負債返済
- バージョンアップでレスポンスタイムが200msから100msに
- 高速化1 ミドルウェア部分の実行時間短縮
- コネクション管理を改善した
- コネクションが切れる可能性は低い
- 30秒ごとに疎通確認するようにした
- 実装の関係上、すべてのDBにpingを送ってしまう
- 数ms*数百台で50ms秒縮んだ
- 高速化2 ActiveRecordの実行時間短縮
- 100msの最適化でEC2の台数が2/3になり、数千万円単位でコスト削減につながった
これで怖くない!? 大規模環境で体験するDB負荷対策
第1章
2015年5月、DBサーバを分割することになった。
テーブル単位で分割するのを垂直分割。
水平分割?
垂直分割で負荷を流していた。
2018年1月、テーブルの肥大化が進んで参照クエリのレイテンシが顕著に増加
Slaveを追加し、対応したがデータの増加量に懸念があった
検討時間があったので水平分割も視野にいれて対策を考えた。
垂直構成だと1ユーザの処理が1つのトランザクションにまとまらない。
垂直と水平が混在すると、厄介なことになる。
最終的に水平に一本化することに。
第2章
- 移行の課題
- 何をキーにするか
- 分割数をどうするか
- 失敗時のリカバリは?
- 何をキーにするのか?
- ユーザID
- 分割数は?
- 今回の分割作業で最後にしたいので、今までの実績から考えて20分割
- 移行方法
最終章
- どうやって移行を実現したのか
- 移行プロセス
- DMSのソースフィルタは関数をサポートしていないので専用のカラムを追加した
- FastDDLによる絡む追加を検討し、数十億レコードのテーブルでも1秒で済んだ
- 追加カラムに分割IDを追加
- 負荷試験の実施
- 本番そっくりものにした
- 負荷試験ツールを使って、本番同様のシナリオを実行・対応を繰り返して改善した
- CDCレイテンシ?
- 整合性の確認
- DMSでは制約上難しい
- checksum tableを使って検証した
- 障害テスト
- ダブルライト方式?
- 本番移行作業
- 後日の整合性確認で切り戻し環境でデータ不整合が見つかった
- 移行後DBと切り戻しDB環境
- タイムアウトの時間が短すぎた。時間を長くして、再び移行処理を行なって対処した
- 後日の整合性確認で切り戻し環境でデータ不整合が見つかった
AWSゲームインフラ経験談
- キャラものは大変
- アクセスが増えると大変
- CMとかあるともっと大変
- CM直後のアクセス増加に備えて待機したこともある。ただ、杞憂
- チャット複数やっているとごくまれに誤爆する
- 通勤中にトラブルが発生した
- 特急でMongoDBの環境を構築したが……
- Slackで問い合わせがあったので連絡
- すぐに降りて近くの公園で暫定対応
- 出社後に本対応
- まとめ
- ゲームインフラは大変だけどめちゃくちゃ楽しい
AWSの話
- 今まではオンプレ的に使っていた
- Code4兄弟を活用してみよう
- masterからbranchにマージしてリリースできるようになった
- チャットでマージ確認したりはする
- UIテストのパイプラインに挟みたい(願望)
低予算でもソシャゲで金儲けがしたい
- 前例を参考にしよう
- ひとりぼっち惑星
- ハクレイフロンティア
- 開発者にあってみた
- 出費の管理がシビア
- 人間力が高い
- 腰が低い
- 人への嗅覚はすごい
- 程よい自信
- 踏まえた提案
- インフラ業界の今
- 超買手市場
- インフラ屋さんは優しくて優秀
- 会社間の連携はよい
- 嫌な顔せずに相手にしてくれる
- インフラ業界の今
- 無料でやりたい
- mobile backendというサービスもある
- 個人でも利用しやすい
- mobile backendというサービスもある
AWSのクイズ大会
- AWSの中の人より
Fargateの勘所
- Fargateの運用上のポイント
- サーバレスのコンテナ管理サービス
- インフラを用意しなくてすむ
- ブルーグリーンデプロイ
- 容易なオートスケール設定
- 運用ポイント1 - 1コンテナあたりのリソースが小さい - カーネルパラメータのチューニングはほとんどできない - root権限はほとんどない - ログインの概念もない - 小さなコンテナで起動し、大きくスケールするという運用アプローチが求められる
- 運用ポイント2
- ログの管理
- CloudWatchLiogsで管理する
- CLIを使いこなした方がよい
- トライ&エラーを繰り返すのは難しいので工夫がいる
ゲームのインフラ6年やっててよく聞かれること
- どのアプリ担当ですか?
- インフラ担当は少ないので、ぜんぶのアプリに縦断して関わっている
- 障害発生してないときは暇ですか?
- だといいですね。障害を出さないように監視体制の見直しなどをしている
- 仕事は何をされているんですか?
- 他業種の人から聞かれると、ゲーム作ってます、とざっくり答えている
- 6年経っても楽しいよ
追記
- 主催の株式会社アカツキさんのカレー、美味でした