Upgrade to Pro — share decks privately, control downloads, hide ads and more …

運用規模の拡大を乗り越える 〜Toilの撲滅〜

Cygames
January 09, 2019

運用規模の拡大を乗り越える 〜Toilの撲滅〜

2018/12/15 Developers Boost

Cygames

January 09, 2019
Tweet

More Decks by Cygames

Other Decks in Technology

Transcript

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

    View full-size slide

  2. 5
    Cygamesのインフラチーム

    View full-size slide

  3. インフラチーム
    6
    Project
    A
    Project
    B
    Project
    C

    横断部署になっています

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  12. 15
    自動化でToilを減らす

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide