More Related Content Similar to DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて (20) More from Makoto Haruyama (12) DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて4. DeNA for GAME CREATORS
参照元 : http://recruit-games.dena.jp/technology/
5. DeNA for GAME CREATORS
参照元 : http://recruit-games.dena.jp/technology/
6. DeNA for GAME CREATORS
参照元 : http://recruit-games.dena.jp/technology/
7. DeNA for GAME CREATORS
参照元 : http://recruit-games.dena.jp/technology/
23. ○ MySQLのMaster/Slave構成 + sharding
○ MHAでMasterの高可用性
○ MySQLへの接続は都度接続
○ DNSサーバーはMyDNSを使って、DeNA独自の拡張も入っている
DB周りは、基本インフラチームの指針にそっており、DeNAのオーソドックス
な構成になっています
Sakashoの構成について
DBに関して
26. 1. API サーバー : Sinatra + Sequel + Jbuilder
a. アクセス数が多いので、省メモリ・ハイパフォーマンス
b. JSONしか返さない
2. Web View向けWeb サーバ : Ruby on Rails
a. アクセス数は少ない
b. DBに直接アクセスせずに、1のAPIを経由してデータを取得する(API
の仕様そのまま)
c. Web UIを簡単に作れる
フレームワーク選定
Rubyを使った開発
27. 1. 管理 ツール : Ruby on Rails
a. アクセス数は限られている
b. Web UIを簡単に作れる
c. 多少パフォーマンスが犠牲にしても、開発スピードを上げる
フレームワーク選定
Rubyを使った開発
45. 最近の取り組み
DeNAのオーソドックスなプロセス管理
● daemontools + unicorn
○ unicornをdaemontoolsの配下で動かそうと思ったとき、masterを
graceful restartしようとSIGUSR2を送信すると、親プロセス(旧
worker)が終了した時点で子プロセス(新worker)がinitプロセスの養
子に入ってしまう
○ そうするとdaemontoolsの管理から外れてしまう
○ そこでgraceful restartをServer::Starterに任せる構成にしている
参照元 : http://d.hatena.ne.jp/limitusus/20131225/1387993119
46. 最近の取り組み
DeNAのオーソドックスなプロセス管理
/bin/sh /command/svscanboot
_ svscan /service
| _ supervise log
| | _ multilog t s999999 n10 ./main
| _ supervise sake
| | _ perl start_server --path=/sake/current/tmp/sockets/unicorn.sock --
signal-on-term=QUIT --signal-on-hup=QUIT --status-file=/sake.status --
pid-file=/sake.pid --dir=/sake/current --envdir=/sake/env --
/sake/current/bin/unicorn -c config/unicorn.rb
| | _ unicorn master #sake -c config/unicorn.rb
| | _ unicorn worker[0] #sake -c config/unicorn.rb
47. 最近の取り組み
● すでにServer::Starter + kill-old-delay で運用されている
● 稼働サーバー台数も増えている
○ --signal-on-hupの変更(QUITからCONTへ)を行うことは、作業量が
多すぎるため避ける
○ ワーカー数の多いAPIについてはkill-old-delayを伸ばした上で、
slow restartを導入する
Sakashoの場合の運用事情
48. 最近の取り組み
● check-rack-server-status での監視が unicorn の masterプロセスに対
して、空いているワーカー数を数えている
○ 再起動直後はワーカー数が足りない状態が検出されてしまうという
問題
○ 回避するためcheck-rack-server-statusは複数リクエストの結果で
判断してもらうように監視を修正
Sakashoの場合の運用事情
51. 最近の取り組み
● リソースの取得方法
○ 自前 daemon
○ fluentd
● リソースの可視化
○ kpi-viewer
○ kibana
● 必要リソースの見積もり + リソースレポート作成
○ report-sakasho-web-kpi
キャパシティ管理
55. ● に集めた の可視化
● を駆使して頑張っている
○ 単位の や実行回数の可視化
■ 性能劣化があればひと目で分かる
○ 単位の表示にも切り替え可能
57. ● の 回数はゲームによって異なる
○ なら 万 捌けても、 は一極集中型のため、 万が限界
○ ということもあり、リソース見積もりが難しい
○ 分間 万回のコールならば捌けるという視点で考える
● 単位の収容限界値は、ここまでで取得したデータから見積もり可能
○ ならば、 万 処理可能
● つまり、テストプレイで得られたデータ 目標 の負荷が乗った場合、耐え
られるか計算すればよい
64. ● 要望確確認会: リリースに含める
フィーチャーを検討
● Sakasho定例: リリースに含める予
定のフィーチャーをチームにシェア
● QA Kickoff: リリースに予定の
フィーチャーをQAに伝え、リリース
するフィーチャーとリリース日を決
める
● リリース告知: ゲームデベロッパに
アナウンスする。
リリースサイクルを細かく
● 仕様書コンプリート
● 開発開始
● SDKのスケルトン提出
● フィーチャーコンプリート
● QA開始
● サインオフ(QA完了)
● リリース
● QA確認
● ゲームデベロッパにリリースした旨をア
ナウンス
● Sakasho定例: フェーズの振り返り
Sakashoチーム