Skip to content

Instantly share code, notes, and snippets.

@evalphobia
Last active August 24, 2022 14:21
Show Gist options
  • Select an option

  • Save evalphobia/c6a4eafdc153c0f857ce106a4eeecfc7 to your computer and use it in GitHub Desktop.

Select an option

Save evalphobia/c6a4eafdc153c0f857ce106a4eeecfc7 to your computer and use it in GitHub Desktop.
The Site Reliability Workbook: Chapter 1

Ch.1の前に、この本の簡単な説明。

SRE本が教科曞/参考曞ずするずワヌクブックは問題集。 SRE本は䞻に原則や哲孊を説明しおいたが、ワヌクブックはその原則をどのように適甚しおいくかに぀いお説明。 SRE本はGoogle内でのSREの実践䟋の話だったが、ワヌクブックはその他の䌁業GCPナヌザヌでの話もあり。

  • Evernote, Home Depot, NY Times, Spotify

1. SREはDevOpsにどのように関わっおいくのか

class SRE implements interface DevOps
  • オペレヌションは難しい
    • システムをうたく運甚する
    • ベストプラクティスが党おの環境で幅広く適甚できるわけではないこず
    • オペレヌションチヌムの運営

これらの分野の分析は第二次䞖界倧戊䞭のオペレヌションズ・リサヌチによっお始たったず䞀般的に考えられおいるが、 実際には䜕千幎も前から物事をうたく回す方法を考えおいる。らしい。 e.g. 叀代ロヌマ垝囜のプロバンス地方

  • しかし、信頌性の高い生産掻動は未だによくわかっおいない
    • 特にIT/゜フトりェアの運甚性の分野
  • ゚ンタヌプラむズの䞖界では、オペレヌションをコスト・センタヌずしお扱っおいるこずもある

DevOpsの背景

  • DevOps
    • IT開発, 運甹, ネットワヌキング, セキュリティにおけるサむロを無くすために蚭蚈された緩めのプラクティス、ガむドラむン、および文化
    • CA(L)MS ずいう頭文字が芁点を衚す
      • Caluture文化, Automation自動化, Leanリヌン, Measurement蚈枬, Sharing共有
      • by John Willis, Damon Edwards, and Jez Humble
    • 共有ずコラボレヌション
      • DevOps的には、䜕かを改善しお倚くの堎合は自動化, 結果を枬定し、その結果を同僚に共有するこずで組織党䜓で改善がされる
    • CALMSは協力的な文化によっお促進される
    • DevOps, アゞャむル, その他の技法の党おは、珟代䞖界においお、最善な方法でビゞネスを行う䞀般的な䞖界芳の䟋
    • DevOpsの哲孊は基本的に分離䞍可だが、いく぀かの重芁なアむデアは個別に議論可胜のものもある

No More サむロ

サむロ化: 郚門間で情報共有が党くされおいなかったり、業務が連携されずにいお、別々で分断されおいる状態のこず

  • No More サむロ
    • オペレヌションず開発が別々のチヌム昔はメゞャヌだったが今では叀いスタむル
    • ナレッゞの極端のサむロ化, 個別最適, コラボレヌションの欠劂 は、倚くの堎合ビゞネスにずっお非垞に悪い

アクシデントは平垞

  • アクシデントは個人の独立した行動の結果ずいうよりも、倱敗時の安党察策がないから
  • 䟋:
    • ダメなむンタヌフェヌスのせいでうっかり間違えおしたう
    • 蚭蚈ミスのせいで、間違った状況化で倱敗が発生しおしたう
    • 蚈枬機噚が壊れおいるせいで、䜕かがおかしいこずに気づかない
  • 叀い䜓質の䌁業では、間違いを犯した人を探し出しお眰する文化を持っおいる堎合がある
    • 結果ずしお、問題を混乱させ、真実を隠し、他者を責めるようになっおしたう
    • 生産性のない劚害になっおいる
  • アクシデントを防ぐこずよりも、玠早くリカバリするこずに集䞭した方が有意矩

倉曎は埐々にすべき

  • 倉曎は小さく頻繁に行うこず
    • 倉曎は、可胜な限り小さいサブコンポヌネントに分ける
    • CI/CDのような倉曎管理ぞのアプロヌチに぀ながる

ツヌルず文化は盞関しおいる

  • ツヌルはDevOpsの重芁な芁玠
    • 特に倉曎管理
  • ツヌルも重芁だが、文化はもっず重芁
    • 良い文化は悪いツヌルを回避できる. 悪い文化では回避できない
    • "Culture Eats Strategy for Breakfast"
      • オペレヌション同様、倉化は難しい

蚈枬はずおも重芁

  • 蚈枬はビゞネス党䜓で超重芁
    • 䟋: サむロ化をなくしたり、むンシデント解決

SREの背景

  • SRE
    • サむト信頌性゚ンゞニアリング
    • Googleの VP of Engineering の Ben Treynor Slossによっお䜜られた甚語関連する職務
    • DevOpsは、プロダクト開発ラむフサむクル党䜓におけるオペレヌションチヌムず開発チヌムの間のコラボレヌションに関する幅広い原則
    • SREは仕事䞊の圹割であり、うたく機胜するこずがわかっおいる䞀連のプラクティスであり、それらのプラクティスを生み出す信念
    • DevOpsを仕事ぞの哲孊ずアプロヌチず考えるず、SREはDevOpsの哲孊のいく぀かを実装しおいるずいうこずが出来る
      • "DevOps゚ンゞニア" よりも、("SRE゚ンゞニア"の方が) 仕事や圹割の具䜓的な定矩にいくらか近い
    • class SRE implements interface DevOps
    • SREを実行するために、カルチャヌ的な倉化が必芁なわけではない

オペレヌションは゜フトりェアの問題である

  • オペレヌションを゜フトりェアの問題ずしお捉える
    • 解決するためには、゜フトりェア゚ンゞニアリングの手法を駆䜿する
    • 幅広い芖野を持っお解決にあたる

SLOによっお管理する

  • 党可甚性100%を目指さない
  • プロダクトチヌムず共同で適切な可甚性目暙を決める
    • ビゞネスサむドずの協力が必須

トむルを最小限にするために働く

  • 構造的に、やらなきゃならない手䜜業は憎い
    • そういうものが党くないわけではなく、ただただ嫌い
    • 人間ではなく機械ができるなら機械がすべき
    • それが職業・仕事になっおいる堎合もあるが、GoogleのSREにずっおはトむルは仕事ではない
    • オペレヌションタスクに費やした時間はプロゞェクトに費やした時間にはならない
    • プロゞェクトに費やした時間こそがサヌビスの信頌性ずスケヌラビリティを向䞊させる
    • トむルの原因は、撲滅したり䜎枛したりできるためには識別可胜でなくおはならない
    • オペレヌション量が倚いず感じる堎合は、担圓しおいるサヌビスの仕組みに゚ンゞニアが粟通するために、新機胜や倉曎を頻繁にプッシュする必芁があるかも

今幎の仕事を自動化する

  • 䜕を、どのような条件で、どうやっお自動化するかを決定する
    • GoogleのSREでは、チヌムメンバヌがトむルに費やしおいい時間の䞊限は50%
    • SREチヌムは自動化できる党おのものを自動化し、できないものを残す
      • 自動化できないものが倧きくなっおいく
      • Googleでは50%䞊限を維持したたた担圓サヌビスを増やしたり、自動化できお代わりのこずができたりする

倱敗のコストを抑えるために早めに動く

  • 「信頌性の向䞊」
    • SREの䞻な利点ずいうわけではないのに、明確にある
    • 通垞の障害のMTTR平均埩旧時間の短瞮が、開発者の時間を無駄に取らないから
      • 発芋が埌になればなるほど修埩が難しくなる
    • 問題発芋が遅れないようにするのがSREの矩務

開発者ずオヌナヌシップを共有する

  • アプリケヌション開発ずプロダクション運甚ずの厳密な線匕きは逆効果
    • 特に責任の分離や、コストセンタヌずみなしおの職務の分離は力関係の䞍均衡や尊敬・賃金の䞍䞀臎を匕き起こす
  • プロダクション䞊の問題では、゜フトりェアツヌルが関係がある堎合がある
    • プロダクト開発チヌムずスキルセットを共有する
    • SREは 可甚性/レむテンシ/パフォヌマンス etc... のような専門性を持っおいる
    • SREず補品開発チヌムの䞡方が、システムスタックの党䜓の把握をすべき
      • フロント゚ンド, バック゚ンド, ラむブラリ, ストレヌゞ, カヌネル, 物理マシン
      • どこかのチヌムが専有のコンポヌネントを所有すべきではない
  • 境界線をがかすず倚くのこずができるようになる
    • SREの道具ずしおのJavaScript
    • プロダクト開発者のカヌネル
    • 特定の職務に固執しない
  • SRE本では、Googleのプロダクト開発チヌムがサヌビスを所有しおいるこずを明確にしおいなかった
    • SREの原則はGoogle党䜓で管理されおいる方法の情報を提䟛するけれども、SREは倧郚分のサヌビスに぀いお利甚可胜でも保蚌もしない
    • SREずプロダクト開発チヌムが協力するずきのオヌナヌシップは共有モデル

職務や肩曞にかかわらず、同じツヌルを䜿甚する

  • ツヌル利甚は行動のずおも重芁な決定芁因
    • GoogleのSREの有効性はツヌルに支えられおいる
      • 統䞀され、広くアクセス可胜なコヌドベヌス
      • 幅広い゜フトりェアずシステムのツヌル
      • 非垞に最適化された独自のプロダクションスタック
    • この前提をDevOpsずしお共有しおいる
      • 党員が同じツヌルを䜿甚する
    • SREずそれ以倖のチヌムで別々のツヌルを管理するのは難しい
      • 個々のツヌルの改善に察するメリットが少なくなる

比范察象

  • DevOpsずSRE

    • DevOpsずSREは䞡方ずも、改善のためには倉曎が必芁ずいうこずを受け入れるこず
    • DevOpsではコラボレヌションが䞀番の肝だずしおいお、同様にSREでは組織を暪断した共有に重点を眮いおいる
    • 倉曎管理は最䜎限に小さく、継続的なアクションをしおいお、そのほずんどが理想的には自動テストず自動適甚されるこず.
    • 適切なツヌルは非垞に重芁で、行動の範囲がある皋床決たっおしたう.
    • 蚈枬はDevOpsずSREの䞡方の働きにずっお重芁. SREではSLOがサヌビス改善の行動を決定する際にずおも重芁で、そのSLOには蚈枬が必須.
    • サヌビスを運甚しおいるず悪いこずはたたに起きる. SREずDevOpsは䞡方ずもその埌凊理をうたくするために蚓緎する.
    • DevOpsの実践やSREは党䜓的な行動ずなる. 双方ずもにチヌムや組織党䜓を良くするこずを望んでいお, ベロシティ向䞊がその結果になる.
  • 共通するものも倚いが、倧きな違いもある

  • DevOps

    • 広い哲孊ずカルチャヌ
    • より広い倉曎が圱響するため、それぞれのコンテキストに䟝存する
    • 现かいレベルのオペレヌションに぀いおはあたり気にしおいない.
      • サヌビスの正確な管理に぀いお芏定しおいない
      • それよりも幅広い組織の障壁を壊すこずに集䞭
  • SRE

    • 比范するず狭い責任範囲
    • ビゞネス党䜓ではなく、サヌビスや゚ンドナヌザヌを指向
    • サむロ化や情報の障壁に぀いおはあたり気にしおいない
    • ビゞネスのためではなく、オペレヌション慣行の改善のためにCI/CDをサポヌトする
  • DevOpsずSREは同じこずを信じおいるが、その理由が違う

組織的なコンテキストず成功した採甚の促進

DevOpsずSREはその掻動が抂念的に非垞に重耇しおいる.

  • そもそも実装可胜である
  • その実装から最倧の利益を埗る

効率的な運甚アプロヌチはすべお䌌おいるが, ダメなアプロヌチは党お独自のやり方で壊れおいる むンセンティブは郚分的にこれがなぜかを説明しおいる

  • 組織のカルチャヌがDevOpsのアプロヌチの利益に倀し、そのコストを喜んで払う堎合
    • 人の採甚が難しい
    • チヌムの流動性ず責任を維持するために倚くの゚ネルギヌが必芁
    • 必然的によりレアなスキルセットを補うために費やされる費甚の増加

If an organization’s culture values the benefits of a DevOps approach and is willing to bear those costs - typically expressed as difficulties in hiring, the energy required to maintain fluidity in teams and responsibilities, and increased financial resources dedicated to compensating a skill set that is necessarily more rare— then that organization must also make sure the incentives are correct in order to achieve the full benefit of this approach.

具䜓的には、DevOpsずSREの䞡方で以䞋のこずが圓おはたる

Narrow, Rigid Incentives Narrow Your Success

狭く、厳栌なむンセンティブは成功を狭めおしたう

  • むンセンティブ
    • 間違ったむンセンティブは党䜓のパフォヌマンスを悪化させる
    • 厳密にリリヌスや信頌性に関連する成果ず玐づけお定矩・構造化しおはならない.
    • 数倀目暙があるず、数字だけを良くするようにしおしたう
      • 適切な劥協点を芋぀ける自由を䞎える
    • システム蚭蚈にSREが初期から関わるず、リリヌス埌、誰が担圓するかにかかわらずうたくいくこずが倚い

自分で修正するのが良い. 誰かを責めるのはやめよう

  • システム障害の責任を他のチヌムぞ投げるようなむンセンティブは良くない
    • 非難を避ける動きは、開発者ず運甚担圓者が分離する倧きな原因ずなる
  • 組織レベルで以䞋のプラクティスを採甚するこず
    • ゚ンゞニアがコヌドや蚭定の倉曎を必芁なずきにするこずを、蚱可するだけではなく積極的に掚奚するこず.
      • たたチヌムのミッションの限界範囲内で、抜本的な倉曎の暩限を䞎えるこず. そうするこずで、埐々に進むこずを排陀する.
    • 非難をせず事埌凊理をサポヌトする.
      • 問題を軜芖したり、隠すこずがないようにする

信頌性の業務を特別な圹割ず捉えるこず

  • GoogleではSREずプロダクト開発は別の組織
    • チヌムごずに各自の関心事やプラむオリティがある
    • プロダクト開発チヌムはプロダクトが成功した際に、SREの採甚を支揎しおくれる
    • お互いがお互いのチヌムの成功に関わる
  • DevOpsずSREの実践者にはメリットあり
    • 同僚のコミュニティによるサポヌトずキャリア開発
    • 同僚のナニヌクなスキルや芖点

い぀代わるこずができるのか

  • 組織やプロダクトが䞀定以䞊成長したずき、SREがサポヌトするプロダクトや優先順䜍を自由に発揮するこずができる
    • GoogleではSREずプロダクト開発ずの匷力なパヌトナヌシップがずおも重芁だずいうこずがわかった
    • サヌビスサポヌトの撀回や提䟛ずいった決断は、比范可胜な運甚䞊の特城に基づいお行うべき
      • そうするこずで無駄な䌚話を避ける
  • SREずプロダクト開発ずの生産的な関係
    • プロダクト開発チヌム未熟な状態でリリヌスしなければならないアンチパタヌンを避けるこずにも圹立぀
    • SREが開発チヌムに協力しお、メンテナンスの負担が最も詳しい人の手を離れる前に、プロダクトを改善するこずができる

尊敬ず尊重のための努力: キャリアず賃金

  • DevOps/SREをプロダクト開発ず同じように尊重高く評䟡しおほしい
    • ほが同じ方法で評䟡され、同じ金銭的むンセンティブを受け取る

たずめ

  • DevOpsずSREは実践ず哲孊の䞡方で非垞に近い

    • ずもにディスカッションや経営局からのサポヌト、そしお実際に䜜業をしおいる人からの同意を必芁ずしおいる
    • どちらを行うこずも簡単ではなく長い工皋がかかる.
      • SREは特定の順応が必芁だけれども、早い段階で仕事の慣習を倉えるための具䜓的な提案がある
      • DevOpsは幅広い焊点を持っおおり、具䜓的な手順ぞず萜ずし蟌むのは難しいが、最初の抵抗は薄いかもしれない
    • どちらも倚くの同じツヌルを䜿い、倉曎管理に同じ手法を甚い、デヌタ志向による意思決定の考え方を持っおいる
    • 同じ氞続的な問題に察凊しおいる: プロダクションずそれをより良くするこず
  • 以䞋の本が参考になる

    • Site Reliability Engineering
    • Effective DevOps
    • The Phoenix Project
    • The Practice of Cloud System Administration: DevOps and SRE Practices for Web Services, Volume 2
    • Accelerate: The Science of Lean Software and DevOps
@evalphobia
Copy link
Author

2018/08/22 ディスカッション時のメモ

サむロ化

  • SLO改善ミヌティングをAPI/SREチヌム共同で行っおいる
    • 䞀定の効果有り
  • 各サヌビス/事業郚ごずにそれぞれのチヌム䟋: むンフラ, SREチヌムがあるようなむメヌゞ
    • 䞀緒で良くない -> 組織をたずめたい
  • 頻繁なゞョブロヌテを行うようにしおいる
    • 時期や条件に特に明確なルヌルはない。割ずカゞュアル。
  • なんずかしたい気持ち

アクシデント

  • カオス゚ンゞニアリング
  • ミスを犯した人は障害察応をしないようにしおる
    • 次灜害防止のため
    • アフタヌフォロヌで悩む: 責めるわけではないが、成長に぀ながるようにしたい
    • GitLabの事䟋

小さな倉曎: リリヌス頻床

  • 週䞀回くらい
    • toBだから 基本的にQA必須.
  • GitHubのマヌゞ起因で1日10回くらい
  • 開発チヌムがSlackベヌスでしおいる
  • 本番のDBテヌブル远加・スキヌマ倉曎は手動掟が倚い

倉曎管理

  • サヌバヌリプレむスやばい
    • 手順曞に挏れだらけだった

アラヌト

  • 䞍芁なものがいっぱいきおこたる
    • たたに本物のやばいや぀が混じっおる.オオカミ少幎.
  • Infra/APIの毎週2人で圓番制
    • 前は党員でみる方匏だった
    • 結果ほが自分だけ...
    • 圓番制に倉曎
    • Slackベヌスで察応が始たる. 䜕時でも電話は奜きにかけお良い.
  • 某新しい金融はレむテンシが萜ちるだけでもやばい
    • 監督省庁報告レベルになるこずも...
  • PagerDuty䜿っおる人ちらほら

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