Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

2

Slide 3

Slide 3 text

3 and more!

Slide 4

Slide 4 text

4 アジェンダ ● Cygamesのインフラチームについて ● 運用負荷を下げるために行っていること ○ 自動化の取り組み ○ ナレッジ共有の取り組み

Slide 5

Slide 5 text

5 Cygamesのインフラチーム

Slide 6

Slide 6 text

インフラチーム 6 Project A Project B Project C … 横断部署になっています

Slide 7

Slide 7 text

7 インフラチームの職務 ● サーバー構築 ● ソフトウェアインストール ● モニタリング ● 負荷対策 ● オンコール対応 ● 基盤ソフトウェア開発 ● データ処理パイプライン構築

Slide 8

Slide 8 text

8 運用タイトル数は年々増加

Slide 9

Slide 9 text

9 ゲーム性・インフラ構成も多様化 グローバル化 スマートフォンアプリ開発 オンプレミス・クラウドのハイブリッド

Slide 10

Slide 10 text

10 運用負荷との戦い ● 運用中タイトルで… ○ アクセス数変動に合わせたスケーリング ○ 大量のサーバーのモニタリング ○ アップデートなどの保守作業 ● 新規開発で… ○ 開発環境の作成 ○ 構成の検証

Slide 11

Slide 11 text

11 Toilを減らしエンジニアリングをして 運用負荷を下げる

Slide 12

Slide 12 text

12 “トイルとは、プロダクションサービスを動作させることに関係する作業で、 手作業で繰り返し行われ、自動化することが可能であり、戦術的で長期的な価値を持たず、 作業量がサービスの成長に比例するといった傾向を持つものです。” “エンジニアリングの作業とは、新しいことをするものであり、本質的に人間の判断を必要とします。 エンジニアリングの作業は、サービスに恒久的な改善を加え、戦略によって導かれるものです。” ―SRE サイトリライアビリティエンジニアリング Googleの信頼性を支えるエンジニアリングチーム. O'Reilly Japan, Inc.

Slide 13

Slide 13 text

13 Engineering Toil Toilの作業時間は運用規模の拡大とともに肥大化し エンジニアリングができなくなっていく 繰り返す作業 手作業 恒久的な改善

Slide 14

Slide 14 text

14 Toilを放置 運用負荷が 規模に比例して増大 更新・開発の速度が低下

Slide 15

Slide 15 text

15 自動化でToilを減らす

Slide 16

Slide 16 text

16 ● サーバー構成情報管理のToil ● サーバー構築のToil

Slide 17

Slide 17 text

17 ホスト追加のたびに /etc/hosts の編集… 特定の環境や種別のサーバー群のリストアップ… ミドルウェアのバージョン情報の管理… サーバー構成情報管理のToil

Slide 18

Slide 18 text

サーバー情報データベース 18 プライベートDNS 構成情報の収集・活用を自動化してToilを減らす DNS 自動登録 On-Premise Cloud 情報取得 Database Project Type Hostname IP 自動登録 情報取得

Slide 19

Slide 19 text

19 AWS Cloud Servers On-Premise EC2 Client Client Servers On-Premise EC2

Slide 20

Slide 20 text

20 AWS Cloud Servers On-Premise EC2 Client Client エージェントをインストールすると 検索・名前解決が可能になる Servers On-Premise EC2

Slide 21

Slide 21 text

21 AWS Cloud Servers On-Premise EC2 Client Client Servers On-Premise EC2 マネージドサービス構成でサーバーレス

Slide 22

Slide 22 text

AWS Cloud 22 Servers On-Premise EC2 Client Client Servers On-Premise EC2 非同期処理 スケーラブル

Slide 23

Slide 23 text

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" } } ] } 使用イメージ

Slide 24

Slide 24 text

24 ● サーバー構成情報管理のToil ● サーバー構築のToil

Slide 25

Slide 25 text

25 手順書に沿ってセットアップ… 既存のものと同様のサーバーの増築… 認証情報の受け渡し… サーバー構築のToil

Slide 26

Slide 26 text

26 サーバー構築を自動化してToilを減らす 保存 利用 playbook セットアップ RPM repository プライベートリポジトリ プロビジョニングツール

Slide 27

Slide 27 text

27 ● S3にプライベートリポジトリを構築 ○ 内製ツール ○ ビルド済みのミドルウェア・ライブラリ ○ 過去バージョンのアーカイブ ● yumで簡単にインストール RPM repository tool Web server software PHP Library

Slide 28

Slide 28 text

28 Key Web server ansible common apache php playbook RPM repository Encrypted credentials ● 作業をplaybookにコード化し ansibleでプロビジョニング ○ ロールごとに再利用が可能 ○ オンプレミス・クラウド両用 ● プライベートリポジトリを活用 ● ホスト用の認証情報は KMSを使用して暗号化保存

Slide 29

Slide 29 text

29 自動化以外の方法でToilを減らす

Slide 30

Slide 30 text

30 障害対応をToilとして考える ● 緊急の障害対応はそれまでの作業を中断させ エンジニアリングの時間を奪ってしまう ● 障害対応にかける時間が減る=Toilが減る

Slide 31

Slide 31 text

31 ナレッジの属人化… 手探りの原因調査… 障害対応の課題

Slide 32

Slide 32 text

32 ポストモーテム ● 障害対応の後に作成する チーム共有用のドキュメント ● Pagerdutyを使用 ● チーム全体で学びを得て 障害対応の時間を減らす

Slide 33

Slide 33 text

33 Toilを放置 運用負荷が 規模に比例して増大 更新・開発の速度が低下

Slide 34

Slide 34 text

34 Toilが減る エンジニアリングが できる チームが改善する

Slide 35

Slide 35 text

35 Toilを撲滅し 最高のコンテンツを効率よく届ける