$30 off During Our Annual Pro Sale. View Details »

最高のITエンジニアリングを支える守りと攻めの「設計技術」と「SRE」

 最高のITエンジニアリングを支える守りと攻めの「設計技術」と「SRE」

最高のITエンジニアリングとは、ユーザーへの価値提供に最大限集中できる状態を維持し続ける技術だと私は考えます。では、その状態を阻害する要因は一体何であり、どうすれば取り除くことができるのでしょうか。このような具体的な問題と向き合い、近年注目されているSRE の考え方を取り入れ、実装しながら乗り越えてきた体験談についてお話します。(HashiCorp ツールの実装、運用自動化など)また、一歩進んだITエンジニアになるため、実装に留まらない組織的な施策実行の考え方や実際の進め方についてもお伝えします。July Tech Festa 2018 での発表資料です。

katsuhisa_

July 29, 2018
Tweet

More Decks by katsuhisa_

Other Decks in Technology

Transcript

  1. \最高のITエンジニアリングを支える/ 守り と 攻め の 設計技術とSRE JULY TECH FESTA 2018/07/29 (日)

    北野 勝久 @katsuhisa__ Copyright (C) 2018 Studist Corporation. All Rights Reserved
  2. • 北野 勝久 / @katsuhisa__ • SRE @ Studist Corporation

    • Organizer of SRE Lounge / Rails Developers Meetup • Developers Summit 登壇 etc.
  3. 価値提供を阻害する要因 • 障害対応全般 ◦ On-Call 対応, 障害未然防止策含む • 不具合調査 •

    Toil サービス運営において 価値があっても、 ユーザーにとっては 価値がない施策
  4. SRE ? • Google の運用チームを率いていた Ben Treynor 提唱 「 SREは、ソフトウェアエンジニアに

      運用チームの設計を依頼した時にできあがるもの 」 • class SRE implements DevOps ◦ それ以外の役割も担う ◦ 「それ以外」の中身は各社で異なる
  5. 自分の経歴 • 前職 ◦ インフラ・ミドルウェア エンジニア ▪ DB リストアとか、ミドルウェア設定とか、 システム移行とか

    • スタディスト入社後 ◦ ずっとアプリケーション側の開発 ▪ バグつぶしや新機能開発など ◦ その後、運用まわりも徐々に
  6. Agenda • 自己紹介 • 最高のITエンジニアリングとは? • なぜSRE ? • 0→1

    フェーズ • 守りの具体事例 • 攻めの具体事例 • まとめ
  7. 0→1 フェーズ まとめ • 業務時間と学習時間のバランスを見直す ◦ As-Is, To-Be を描くのが遅れると、歪が拡大する •

    ドキュメントをこまめに書くのは おすすめ • 自動化・効率化は適用範囲を見極めて行う
  8. Agenda • 自己紹介 • 最高のITエンジニアリングとは? • なぜSRE ? • 0→1

    フェーズ • 守りの具体事例 • 攻めの具体事例 • まとめ
  9. Monitoring の実装 • インスタンスの死活監視 ◦ CloudWatch • コンピュータリソース, プロセス監視 /

    外形監視 ◦ Stackdriver • エラー監視, 性能(レイテンシなど)監視 ◦ NewRelic • エラー可視化, 性能可視化 ◦ fluentd, Elasticsearch, Kibana
  10. The Four Golden Signals • latency • traffic • errors

    • saturation ◦ How full your service is. http://landing.google.com/sre/book/chapters/monitoring-distributed-systems.html
  11. There are alerts, which say a human must take action

    right now. Something that is happening or about to happen, that a human needs to take action immediately to improve the situation. The second category is tickets. A human needs to take action, but not immediately. You have maybe hours, typically, days, but some human action is required. The third category is logging. No one ever needs to look at this information, but it is available for diagnostic or forensic purposes. The expectation is that no one reads it. What is ‘Site Reliability Engineering’? https://landing.google.com/sre/interview/ben-treynor.html
  12. アウトプット分類に沿ったアラート設計 • alerts, tickets ごとに通知先を分ける ◦ 通知先の出し分けがしやすいツールだとなおよし ▪ 通知先を出し分けた上で、 通知方法を変える

    ◦ すぐ対応しなくてよい監視通知が増えると アラートがオオカミ少年化する • logging は、データレイクへの格納を基本とする
  13. 事例 • 特定条件下でのUnicorn の自動再起動 ◦ メモリ枯渇防止, 回復 ◦ unicorn-worker-killer •

    非同期処理 worker の数が、特定数を下回ったら 自動復旧する仕組み【WIP】 ◦ そもそもworker が死なないように コード側も修正したい・・・
  14. 問題だったこと • Golden AMI 方式で運用していた ◦ Golden AMI ▪ サービス稼働に必要な

    一通りの汎用的な設定を終えた独自マシンイメージ • が、変更が手動で継ぎ足し長年運用されており、 中身がブラックボックス化していた • 構成分からないストレス半端ないし、 調べ物にいちいち時間がかかる
  15. 実装 • Ansible + Serverspec + Packer + AWS CodeBuild

    ◦ ローカルでlint を回して、GitHub にプッシュ ◦ PR をmerge すると、AWS CodeBuild が動く ◦ マシンイメージが自動ビルドされる
  16. Ansible + Packer の設定 "provisioners": [ { "type": "ansible", "playbook_file":

    "main.yml", "host_alias": "app", "user": "sample_user" } ]
  17. 守り まとめ • Monitoring やSelf-Healing に取り組んだ結果、 直近の月間稼働率は 99.98 % まで改善

    • インフラコード化とマシンイメージ作成の自動化で、 パッチ適用などの運用効率化ができた • 運用効率化に取り組んでいると、 サービス全体の指標 (SLI ) に目が行きがちだけど・・・
  18. Agenda • 自己紹介 • 最高のITエンジニアリングとは? • なぜSRE ? • 0→1

    フェーズ • 守りの具体事例 • 攻めの具体事例 • まとめ
  19. Aurora SQL Transactions Caching SQL Transactions Caching Logging + Storage

    Master Replica メタ情報 参照 書き込み • レプリカラグが 数十ミリ秒 • データの 複数のコピーを 3つのAZ に保持 • クラッシュ回復を 並列スレッドで 非同期実行
  20. ツールについて • あったほうがよい機能 ◦ 複数人で同時編集可 ◦ コメント機能 ◦ テンプレート機能 ◦

    アクションアイテムを管理する機能 ▪ アサイン・期限指定もできれば最高 • Dropbox Paper は、↑すべてを満たす
  21. 記入項目の例 • 作成者 • ステータス • サマリ • インパクト •

    根本原因 • 発生要因 • 対応 • 検出 • アクションアイテム • 教訓 ◦ うまくいったこと ◦ うまくいかなかったこと ◦ 幸運だったこと • タイムライン • 参考情報
  22. 成果 • 平均レスポンスタイム 3倍高速化 • 0.5s 以上かかるスロークエリ 98 % 削減

    • サービスの根幹をなす処理のいくつかで、 10倍以上の高速化
  23. Agenda • 自己紹介 • 最高のITエンジニアリングとは? • なぜSRE ? • 0→1

    フェーズ • 守りの具体事例 • 攻めの具体事例 • まとめ