Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
リアルタイム通信を支えるブラナイのサーバ開発と運用(後編)
Search
yoan
August 04, 2016
Programming
480
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
リアルタイム通信を支えるブラナイのサーバ開発と運用(後編)
yoan
August 04, 2016
Other Decks in Programming
See All in Programming
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
550
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.1k
What We Talk About When We Talk About XP
m_seki
2
660
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
500
SREの越境 / SRE Collaboration
y0hgi
2
250
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
350
スマート反転とウェブアクセシビリティ
camiha
0
210
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
JRuby: Past, Present, and Future
headius
0
120
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
550
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
260
WebAssembly in Android Apps 〜 WASMはJNIの夢を見るか
keiji
1
110
Featured
See All Featured
A Tale of Four Properties
chriscoyier
163
24k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Mind Mapping
helmedeiros
1
360
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Done Done
chrislema
186
16k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
470
Raft: Consensus for Rubyists
vanstee
142
7.7k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
It's Worth the Effort
3n
188
29k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Ethics towards AI in product and experience design
skipperchong
2
380
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
530
Transcript
リアルタイム通信を⽀える ブラナイ TM のサーバ開発と運⽤ 2016/08/03
2 ⾃⼰紹介 • 養安元気(ようあん もとき) • XFLAG TM スタジオゲーム開発室 •
2013年 株式会社ミクシィに⼊社 • SNS mixiの運⽤部に配属 • 2014年 モンスターストライク ® サーバチームにジョイン • 2015年 ブラナイの開発/運⽤に従事
3 ブラナイにおける運⽤の⾃動化
概要 4 • ブラナイのサーバ開発をメインで⾏っているのは3⼈ • 今回は⾃動化内容として以下の3つを紹介します • 環境構築 • ゲームデータのインポート
• QAの⽀援
5 環境構築
環境構築 (モンスト) 6 • 環境 • オンプレがメイン • クラウド •
GMOアプリクラウド • ⼀部Appサーバ • AWS • ⼀部Appサーバ • TURNサーバ • インスタンス作成 • aws-cli のラッパーツール • コンフィグを読み込みインスタンス作成 • コンフィグ修正 • マネジメントコンソールで修正 • Security Group • Route53 aws-cli Management console
環境構築 (ブラナイ) 7 Terraform Jenkins • 環境 • すべてAWS •
インスタンス作成 • Terraform • コンフィグ修正 • Terraform GitHub
環境構築 - Terraform 8 • HashiCorp製のインフラ管理ツール • https://www.terraform.io/ • 各種設定をtfファイルに記述し、クラウドに適⽤
• 様々なクラウドに対応 • AWS • GCP • Windows Azure • 詳しくは以前XFLAGで発表した資料を参照 • http://www.slideshare.net/w1mvy/terraform-58090306
photon環境構築 9 • tfファイルにコンフィグ追加 • PullRequestにしてマージ • photonや監視設定を含むAMIをpackerで事前に作成 • Terraformだけでサーバの準備が整う
resource "aws_instance" “photon" { ami = "ami-xxxxxxxx“ instance_type = "m4.large“ count = 1 subnet_id = "subnet-xxxxxxxx“ vpc_security_group_ids = [ "sg-xxxxxxxx", "sg-yyyyyyyy“ ] root_block_device { volume_type = "gp2“ volume_size = "32“ } }
Terraformの利点 その1 10 • PullRequestから作者と⽬的を把握できる • 設定がファイルで残るためバージョン管理が可能 • インスタンスの存在理由がわかる •
過去の作業履歴を参照できる
Terraformの利点 その1 11 • PullRequestから作者と⽬的を把握できる • 設定がファイルで残るためバージョン管理が可能 • インスタンスの存在理由がわかる •
過去の作業履歴を参照できる • 棚卸しが容易 • 不要なインスタンスを削除するPullRequestを作成 • 利⽤しているのであればメンバーがコメント • そうでなければマージしてインスタンス破棄
Terraformの利点 その2 12 • インスタンスのコピーが⼿軽 • 適⽤処理には冪等性がある • 差分だけ適⽤される •
現在の設定ファイル(.tf) = 最新のAWSの状態 • 同じ役割のインスタンスを作成 • モンスト: 作成時と現状の差分を確認 • ブラナイ: 設定をコピーするだけ
Terraformの利点 その2 13 • インスタンスのコピーが⼿軽 • 適⽤処理には冪等性がある • 差分だけ適⽤される •
現在の設定ファイル(.tf) = 最新のAWSの状態 • 同じ役割のインスタンスを作成 • モンスト: 作成時と現状の差分を確認 • ブラナイ: 設定をコピーするだけ • 新規に開発環境を3つ構築したが設定抜けもなく稼働中 • EC2 x 6 • ELB x 1 • Route53 x 1
14 ゲームデータの インポート
ゲームデータのインポートとは 15 • プランナーやデザイナーがデータを作成する • イベント情報 • キャラ情報/画像 • データインポート
• データ配信を⾏うサーバにデータを置く作業 • サーバ • DBサーバ • イベント情報 • キャラ情報 • S3 • キャラ画像 • サウンド
インポートの流れ(モンスト初期) 16 S3 Capistrano ユーザ DB サーバエンジニア プランナー • コマンドを⼿動で作成
• sshしてインポート • 修正ファイル⼀覧
インポートの流れ(hubot利⽤) 17 S3 Capistrano Hubot Slack ユーザ DB サーバエンジニア プランナー
• 修正ファイル⼀覧 • コマンド⽣成 • sshしてインポート
インポートの流れ(現在) 18 S3 Capistrano Jenkins Hubot Slack ユーザ DB サーバエンジニア
プランナー • 修正ファイル⼀覧 • インポート
インポートの流れ(本番環境) 19 S3 Capistrano Jenkins Hubot Slack ユーザ DB サーバエンジニア
プランナー • 修正ファイル⼀覧 • チケット作成
ブラナイ独⾃の問題 • ファイル数がおおい • 現状約2,000ファイル • Slackにインポートコマンドを貼ろうとするも⽂字制限に 引っかかる • 理由
• アクションゲーム • キャラ • ステージ • 各プラットフォームごとにファイル分け • 結果: ファイルのインポート漏れが発⽣ 20
PR-Command-Generator • PullRequestを利⽤して • 修正ファイルリストを表⽰ • コマンドを⽣成 • ステージング/本番環境 •
プランナーは別途Jiraチケットを作成 • Generatorで⽣成されたリストとチケットを⽐較 • サーバエンジニアがインポート 21
データ作成の流れ 22 S3 Capistrano Jenkins Hubot Slack ユーザ DB サーバエンジニア
プランナー • 更新ファイル⼀覧 • コマンド⽣成 • チケット作成 • ⽣成されたファイル ⼀覧と⽐較 GitHub
インポート依頼 23 S3 Capistrano Jenkins Hubot Slack ユーザ DB サーバエンジニア
プランナー GitHub インポートお願いします コマンドはこちらです GitHub はい、実⾏します
結果 • 開発環境ではサーバエンジニアのインポート作業はない • プランナーがHubot と Jenkins経由でインポート • 更新ファイル⼀覧を⽣成することでチケットとの 整合性を確認でき、インポート漏れが減らせた
24
25 QAの⽀援
開発環境でのQA • ある条件を満たした時の挙動を調べる • クエスト100回クリアするミッション報酬は正常か • BOXが満杯のときクエストが開始できないか • レアキャラのSS威⼒は妥当か 26
開発環境でのQA • ある条件を満たした時の挙動を調べる • クエスト100回クリアするミッション報酬は正常か • クエストを100回クリアする • BOXが満杯のときクエストが開始できないか •
BOX満杯までキャラを集める • レアキャラのSS威⼒は妥当か • レアキャラをゲットする 27
開発環境でのQA • ある条件を満たした時の挙動を調べる • クエスト100回クリアするミッション報酬は正常か • クエストを100回クリアする • BOXが満杯のときクエストが開始できないか •
BOX満杯までキャラを集める • レアキャラのSS威⼒は妥当か • レアキャラをゲットする 28 • QAチームがサーバチームにユーザデータの作成を依頼 • QA⽬的によって異なるため作業量が多い
Debug⽤API • ローンチ前は開発環境だけ利⽤できるAPIを⽤意 • クライアントソースはユーザが取得できる • チート⾏為の危険性 • 誤って本番のコードに含まれてしまったら事故 •
DebugAPIの利⽤は危険と判断 29
QA⽀援ツール • ブラウザから操作 • アカウント認証 • サービスに沿った機能 • 例 •
ユーザのランクを上げる • 進化素材全種追加 • ミッション達成 • 環境ごとに機能制限 • 本番環境でキャラやアイテムの操作はできない 30
機能 • キャラ/ミッション/アイテムの付与 • 時間操作(タイムトラベラー) • 未来のイベントをQA • 時間のかかるQA •
イベント終了後でもクエストクリアできるか • イベント⽂⾔の閲覧 • ステージ情報の閲覧 31
(時間があったら)Demo • アイテムの付与 32
(時間があったら)Demo • 時間操作 33
結果 • QA⽤のデータを作る作業が減った 34
今後やりたいこと • Fail Over • MHA • Redis-sentinel • 事故防⽌
• Serverspec • Data Validation機能 35
まとめ • Terraformで環境構築を⾃動化 • インスタンスの追加/削除が容易になった • HubotとJenkinsでインポートを⾃動化 • 開発環境の作業はなくなった •
データの漏れも減らせた • QA⽀援ツールでQAデータの作成を⾃動化 • QA⽤ユーザデータの作成作業を減らせた 36
最後に 37 • ブラナイDASH • 7⽉26⽇ティザーサイト公開 • 8⽉中旬リリース予定 • 事前登録絶賛受付中!!
• http://bks-dash.com
Thank You!!