Skip to content

Instantly share code, notes, and snippets.

@NewGyu
Last active October 24, 2017 15:30
Show Gist options
  • Save NewGyu/360b02845678816a7317dc756a946fdc to your computer and use it in GitHub Desktop.
Save NewGyu/360b02845678816a7317dc756a946fdc to your computer and use it in GitHub Desktop.
SRE本の読書感想文

SREとは

  • Site Reliability Enginieering
  • 本番環境の信頼性を担保する人

つまりは運用チーム

信頼性ってなによ

ISO25010より

明示された時間帯で,明示された条件下に,システム,製品又は構成要素が明示された機能を実行する度合い。

つまりは、

  • サイトが落ちてなくてちゃんと使える
  • バグってない

信頼性を脅かすもの

信頼性を脅かすものの80%は新規機能の追加などの変更

つまり、触らぬ神に祟りなし

利害関係衝突のジレンマ

ビジネス要求

  • 色々機能的に改善したい
  • 停止せずに正常に動き続けてほしい

相反している!

障害ゼロは目指さない

  • 極論すれば触らぬ神に祟りなしが障害ゼロへの最短ルート それでいいの?
  • 稼働率99.999%->100% は ユーザーから見たら月に30秒の差 それ、マジで維持しないと死ぬんですか? その0.001%のためにものすごいコストかかりますよね?

エラーバジェット

イノベーションと信頼性の適切なバランス

  • システムと成長と安定の両立を目指す線を決める
  • エラーバジェットが満タンになるまでは障害を起こしても良い
  • 満タンになったら機能追加を諦めて安定を死守

エラーバジェットの力学

  • リスクをコントロールするようになる  * リスクを取るべき時  * リスクを軽減するために時間を使う時

例1: フールプルーフ設計

  • ある程度は防御的にしないとアホな操作でシステムダウン
  • バリデーションを入れすぎるとユーザーはだれも使いたがらなくなる

例2: テストをどこまでやるか

  • テストが不足していればプライバシーデータの漏洩、大障害でニュースに
  • 臆病にテストばかりしていると商機を逃して結局誰にも使われない

サイトの成長と運用負荷

  • 機能が増えればサーバーが増える → デプロイ手順、扱うミドルウェア、見るべきメトリクス
  • 負荷が増えればサーバーが増える → 何かが故障する率はどんどん上がる

どんどん人が必要になる

どんな人がSREなのか

  • OSレイヤーの知識
  • ネットワークプレイヤー(特にL1〜L3)の知識
  • 手作業でタスクをこなすことにすぐに飽きる
  • 手作業を自動化するソフトウェアを書くエンジニアリングスキル

SREのお仕事

  • 50%はいわゆる運用作業    チケット処理、監視アラート対応など
  • 50%はエンジニアリングでなければならない  アラートに対するリアクションの自動化、デプロイ効率化

増えゆく運用コストをエンジニアリングの力で押さえ込む

高すぎる稼働率も問題

ポストモーテム

  • 端的にいうと前向きな障害報告書
  • 組織が学ぶために積極的に公開されるべきもので「サービスのどの部分をどうすれば改善できるのかを提起するもの」
  • 人を非難しない
  • 人を修正することはできないがシステムやプロセスを修正して、人が正しく判断できるようにする事はできる

マイナスの結果を積極的に公開する

トイル

設定管理

リリースエンジニアリング

デッドコード

運用負荷の調整

  • 開発

DevOps? それともSRE?

2つよく似ている

  • 人手ではなく自動化に頼ること
  • 運用タスクにエンジニアリングのプラクティス

SRE extends DevOps

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment