システムをダイナミックに運用する from devlove関西

29
システムをダイナミックに 運用する 2014-10-03 DevLOVE 関西 運用現場の話を聞いてみる @daiksy

Upload: daisuke-kasuya

Post on 07-Dec-2014

531 views

Category:

Services


4 download

DESCRIPTION

2014/10/3 DevLove関西 発表資料

TRANSCRIPT

Page 1: システムをダイナミックに運用する from DevLove関西

システムをダイナミックに 運用する

2014-10-03 DevLOVE関西 運用現場の話を聞いてみる

@daiksy

Page 2: システムをダイナミックに運用する from DevLove関西

自己紹介

粕谷 大輔 (@daiksy)

フリュー株式会社ソーシャルゲームの運用・開発Scala + Playframework2

Page 3: システムをダイナミックに運用する from DevLove関西

何に対して”ダイナミック”に運用するのか?

Page 4: システムをダイナミックに運用する from DevLove関西

1日数回のリリース

ボタンサイズ・位置調整

文言の変更

画像差し替え

軽微な不具合修正 etc

Page 5: システムをダイナミックに運用する from DevLove関西

1日数回のリリース

商用リリースがゼロの営業日は 基本的に存在しない!

Page 6: システムをダイナミックに運用する from DevLove関西

2-4週間おきに大型アップデート

機能追加

販売アイテムの追加

イベント(クリスマス・ハロウィンなど)

Page 7: システムをダイナミックに運用する from DevLove関西

アップデート時は原則無停止

2-4週間おきに大型アップデート

DBの定義変更時などは

計画停止する場合もある

Page 8: システムをダイナミックに運用する from DevLove関西

高負荷

広告出稿

期間(時間帯)限定イベント

瞬間的に通常の2~10倍のPVイベントで秒間2万リクエストくらい

Page 9: システムをダイナミックに運用する from DevLove関西

1. インフラ

Page 10: システムをダイナミックに運用する from DevLove関西

1.インフラ

AWSを利用EC2, RDS, S3

スケーラビリティを重視

Page 11: システムをダイナミックに運用する from DevLove関西

1.インフラ

スケールアウトの自動化1日1回商用サーバのAMIを作成このAMIから自動的に指定台数分サーバーを自動構築負荷タイミングが比較的読みやすいので、 オートスケールはやっていない

Page 12: システムをダイナミックに運用する from DevLove関西

2.ワンタッチデプロイ

Page 13: システムをダイナミックに運用する from DevLove関西

1.ワンタッチデプロイ

hikyakuさん社内IRCに常駐するbot

IRCでhikyakuさんにお願いするとデプロイしてくれる

Page 14: システムをダイナミックに運用する from DevLove関西

1.ワンタッチデプロイ

hikyakuさんの仕事githubからコードを取得してビルド

対象サーバをロードバランサから切り離す対象サーバに対してデプロイ & アプリケーションの再起動

ロードバランサに再接続↑ロードバランサに接続されてる全サーバに対してこれを実施

Page 15: システムをダイナミックに運用する from DevLove関西

1.ワンタッチデプロイ

きめ細やかなデプロイアプリケーションの構成要素すべてviewのみ

画像やアニメーションのみアプリケーションのメンテナンスモードへの切り替え

Page 16: システムをダイナミックに運用する from DevLove関西

3.サーバ監視

Page 17: システムをダイナミックに運用する from DevLove関西

3.サーバ監視

外部会社に監視を依頼CPU使用率, ディスク使用率, ロードアベレージ etc

閾値超過でアラート・または電話連絡CPU使用率80%以上 etc

Page 18: システムをダイナミックに運用する from DevLove関西

3.サーバ監視

RDSのディスク容量は過去数回、アラートを検知して増設(なぜかいずれも長期休暇中……)

AWSなので増設は簡単(数回クリックするだけ)

Page 19: システムをダイナミックに運用する from DevLove関西

3.サーバ監視

EC2はまれにインスタンスが勝手に再起動されたりする

デプロイを必要としない軽微な障害は監視会社が 復旧手順を実施してくれる

たまに夜中に電話で起こされるが、 だいたい「復旧済みです」連絡 !ありがたい

Page 20: システムをダイナミックに運用する from DevLove関西

4.障害対応

Page 21: システムをダイナミックに運用する from DevLove関西

4.障害対応

リモート接続(VPN)

緊急連絡網なぜかLINE

夜中に友達からLINEが来ると心臓止まりそうになる

一斉通知できるツールならなんでもいいが、 割りとリアルタイムでのやりとりが求められるので チャットツールの方がよい(メールはだめ)

Page 22: システムをダイナミックに運用する from DevLove関西

5.テスト

Page 23: システムをダイナミックに運用する from DevLove関西

5.テスト

今年から テストチームを

新設

Page 24: システムをダイナミックに運用する from DevLove関西

5.テスト

テストチームゲームは人依存の確認項目が多いシナリオの整合性プレイ感覚(難易度調整とか遷移の快適さとか)デザインの美しさ(ボタンサイズは適切か etc)

Page 25: システムをダイナミックに運用する from DevLove関西

5.テスト

テストチーム導入以前開発チームがテストケース作成 & 実施

-> システムテストに近いイメージ?

企画チームが通しチェック

-> シナリオとかデザインとか

Page 26: システムをダイナミックに運用する from DevLove関西

5.テスト

テストチーム導入以降開発チームは単体テストと簡単な動作確認だけ

-> 単体テストはJenkinsでCI

出荷前にテストチームがプレイ-> 新規開発時約5日間、イベント開発時約2日間程度-> システム的な観点(仕様を満たせているか)-> プレイヤー的な観点(シナリオやデザイン、動線など)

最低限のテストだけでカバレッジは低い

Page 27: システムをダイナミックに運用する from DevLove関西

5.テスト

品質はどうなったか?テスト期間中の課題摘出件数は実施以前と以降でほぼ横ばい

リリース後の重篤な不具合は今のところゼロ

テストチーム導入後も 信頼度成長曲線による出荷判定をクリア

システム的な品質は以前と変わらないプレイヤー的な観点からの課題摘出が増加

-> ゲーム的なクオリティがアップ!

Page 28: システムをダイナミックに運用する from DevLove関西

まとめ

インフラはAWSでスケーラブル

hikyakuさんで楽々デプロイ

サーバー監視で障害時の手順削減

テストチームは神チーム

Page 29: システムをダイナミックに運用する from DevLove関西

ご清聴ありがとうございました