Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
運用規模の拡大を乗り越える 〜Toilの撲滅〜
Search
Cygames
January 09, 2019
Technology
3
3k
運用規模の拡大を乗り越える 〜Toilの撲滅〜
2018/12/15 Developers Boost
Cygames
January 09, 2019
Tweet
Share
More Decks by Cygames
See All by Cygames
TiDBにおけるテーブル設計と最適化の事例
cygames
2
1.6k
『グランブルーファンタジー』100万行を超える大規模なシステム再構築~10周年のその先へ~
cygames
10
31k
グラブルミュージアム蒼の追想 MX4Dシアターのサウンド制作事例〜ゲームの世界観とアトラクション体験の両立に必要なこと〜
cygames
0
1.1k
AIによる自然言語処理・音声解析を用いたゲーム内会話パートの感情分析への取り組み
cygames
0
1.8k
最大100倍高速化!PHPからJavaへのFFIを実現する、JNIを用いた高速なサーバAPIの実装方法
cygames
0
370
AIによる自然言語処理を活用したゲームシナリオの誤字検出への取り組み
cygames
0
260
ツール保守コスト大幅削減!テクニカルアーティストによるツールログサービスの開発と運用事例
cygames
0
300
C#によるクライアント/サーバーの開発言語統一がもたらす高効率な開発体制 ~プリコネ!グランドマスターズ開発事例~
cygames
25
20k
「最高のコンテンツ」を支える、Cygamesのデータベース技術の今までとこれから 〜次世代データベース「TiDB」の検証を開始したCygamesの取り組み〜
cygames
0
5.6k
Other Decks in Technology
See All in Technology
E2Eテスト自動化プラットフォームにおけるAIの活用
shift_evolve
0
190
Matterport を使ってクラスメソッド各拠点のバーチャルオフィスツアーを作成してみた
wakatsuki
0
160
累計ダウンロード数1億8000万を超えるアプリケーションプラットフォームのレガシーシステム脱却とモダン化への道
kmitsuhashi
0
120
ゆめみのアクセシビリティの現在地と今後
ryokatsuse
3
290
LINE WORKSへ簡単通知!Incoming Webhookアプリの紹介
mmclsntr
0
110
AOAI Dev Day LLMシステム開発 Tips集
hirosatogamo
15
3.8k
LLMアプリケーションの評価の実践と課題 ~PharmaXにおける今後の展望~
pharma_x_tech
2
170
Github Actions 로 Android 팀의 효율성 극대화
hadonghyun
0
160
データベース研修 DB基礎【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
210
JBUG岡山 #6 WordCamp男木島の チームビルディング
takeshifurusato
0
150
[NIKKEI Tech Talk]Bias for Action!! 実践から学ぶための仕組とコミュニティ / Community for Practice and Learning
kanamasa
0
280
スタートアップにおける組織設計とスクラムの長期戦略 / Scrum Fest Kanazawa 2024
yoshikiiida
13
3.6k
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
121
18k
Fireside Chat
paigeccino
25
2.8k
How To Stay Up To Date on Web Technology
chriscoyier
784
250k
Making the Leap to Tech Lead
cromwellryan
127
8.7k
Creatively Recalculating Your Daily Design Routine
revolveconf
214
11k
Navigating Team Friction
lara
181
13k
The Power of CSS Pseudo Elements
geoffreycrofte
64
5.2k
Being A Developer After 40
akosma
72
580k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
17
1.5k
Faster Mobile Websites
deanohume
303
30k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
248
20k
Making Projects Easy
brettharned
111
5.7k
Transcript
None
2
3 and more!
4 アジェンダ • Cygamesのインフラチームについて • 運用負荷を下げるために行っていること ◦ 自動化の取り組み ◦ ナレッジ共有の取り組み
5 Cygamesのインフラチーム
インフラチーム 6 Project A Project B Project C … 横断部署になっています
7 インフラチームの職務 • サーバー構築 • ソフトウェアインストール • モニタリング • 負荷対策
• オンコール対応 • 基盤ソフトウェア開発 • データ処理パイプライン構築
8 運用タイトル数は年々増加
9 ゲーム性・インフラ構成も多様化 グローバル化 スマートフォンアプリ開発 オンプレミス・クラウドのハイブリッド
10 運用負荷との戦い • 運用中タイトルで… ◦ アクセス数変動に合わせたスケーリング ◦ 大量のサーバーのモニタリング ◦ アップデートなどの保守作業
• 新規開発で… ◦ 開発環境の作成 ◦ 構成の検証
11 Toilを減らしエンジニアリングをして 運用負荷を下げる
12 “トイルとは、プロダクションサービスを動作させることに関係する作業で、 手作業で繰り返し行われ、自動化することが可能であり、戦術的で長期的な価値を持たず、 作業量がサービスの成長に比例するといった傾向を持つものです。” “エンジニアリングの作業とは、新しいことをするものであり、本質的に人間の判断を必要とします。 エンジニアリングの作業は、サービスに恒久的な改善を加え、戦略によって導かれるものです。” ―SRE サイトリライアビリティエンジニアリング Googleの信頼性を支えるエンジニアリングチーム. O'Reilly
Japan, Inc.
13 Engineering Toil Toilの作業時間は運用規模の拡大とともに肥大化し エンジニアリングができなくなっていく 繰り返す作業 手作業 恒久的な改善
14 Toilを放置 運用負荷が 規模に比例して増大 更新・開発の速度が低下
15 自動化でToilを減らす
16 • サーバー構成情報管理のToil • サーバー構築のToil
17 ホスト追加のたびに /etc/hosts の編集… 特定の環境や種別のサーバー群のリストアップ… ミドルウェアのバージョン情報の管理… サーバー構成情報管理のToil
サーバー情報データベース 18 プライベートDNS 構成情報の収集・活用を自動化してToilを減らす DNS 自動登録 On-Premise Cloud 情報取得 Database
Project Type Hostname IP 自動登録 情報取得
19 AWS Cloud Servers On-Premise EC2 Client Client Servers On-Premise
EC2
20 AWS Cloud Servers On-Premise EC2 Client Client エージェントをインストールすると 検索・名前解決が可能になる
Servers On-Premise EC2
21 AWS Cloud Servers On-Premise EC2 Client Client Servers On-Premise
EC2 マネージドサービス構成でサーバーレス
AWS Cloud 22 Servers On-Premise EC2 Client Client Servers On-Premise
EC2 非同期処理 スケーラブル
23 $ eshosttag -qs "hostname:test-web01" | jq . { "hits":
[ { "_index": "hosts", "_type": "hosts", "_id": "test-web-192.168.1.1", "_source": { "created_at": "2018-10-09T21:34:21+09:00", "datacenter": "aws", "env": "dev", "hostname": "test-web01", "ip": "192.168.1.1", "lastping_at": "2018-12-14T09:17:37+09:00", "project": "test", "type": "dev", "dead": null, "ver_apache": "Apache/2.4.6 (CentOS)", "ver_hash_httpd_conf": "abcdefghijklmnopqrstuvwxyz123456", "ver_os": "CentOS Linux release 7.4.1708 (Core)", "ver_hash_php_ini": "abcdefghijklmnopqrstuvwxyz123456", "ver_php": "7.2.8" } } ] } 使用イメージ
24 • サーバー構成情報管理のToil • サーバー構築のToil
25 手順書に沿ってセットアップ… 既存のものと同様のサーバーの増築… 認証情報の受け渡し… サーバー構築のToil
26 サーバー構築を自動化してToilを減らす 保存 利用 playbook セットアップ RPM repository プライベートリポジトリ プロビジョニングツール
27 • S3にプライベートリポジトリを構築 ◦ 内製ツール ◦ ビルド済みのミドルウェア・ライブラリ ◦ 過去バージョンのアーカイブ •
yumで簡単にインストール RPM repository tool Web server software PHP Library
28 Key Web server ansible common apache php playbook RPM
repository Encrypted credentials • 作業をplaybookにコード化し ansibleでプロビジョニング ◦ ロールごとに再利用が可能 ◦ オンプレミス・クラウド両用 • プライベートリポジトリを活用 • ホスト用の認証情報は KMSを使用して暗号化保存
29 自動化以外の方法でToilを減らす
30 障害対応をToilとして考える • 緊急の障害対応はそれまでの作業を中断させ エンジニアリングの時間を奪ってしまう • 障害対応にかける時間が減る=Toilが減る
31 ナレッジの属人化… 手探りの原因調査… 障害対応の課題
32 ポストモーテム • 障害対応の後に作成する チーム共有用のドキュメント • Pagerdutyを使用 • チーム全体で学びを得て 障害対応の時間を減らす
33 Toilを放置 運用負荷が 規模に比例して増大 更新・開発の速度が低下
34 Toilが減る エンジニアリングが できる チームが改善する
35 Toilを撲滅し 最高のコンテンツを効率よく届ける