Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

How to measure "Site Reliability Engineering"

How to measure "Site Reliability Engineering"

Avatar for Takeshi Kondo

Takeshi Kondo

August 25, 2021
Tweet

More Decks by Takeshi Kondo

Other Decks in Technology

Transcript

  1. #sapurimeetup How to measure "Site Reliability Engineering" How to measure

    “Site Reliability Engineering” @chaspy / Takeshi Kondo スタディサプリ / Quipper オンラむンミヌトアップ #3 (SRE)
  2. #sapurimeetup How to measure "Site Reliability Engineering" Agenda | 01

    02 03 04 SRE Team の玹介 Site Reliability Engineering ずはなにか どのように Site Reliability Engineering を蚈枬するのか たずめず今埌
  3. #sapurimeetup How to measure "Site Reliability Engineering" 今日お話しするこず どのように Site

    Reliability Engineering を蚈枬するのか Service Level だけでなく、SRE の関心である Developer Productivity ず Production Reliability、そしおそれらを支える Platform Development の4぀の 領域に関連する指暙を定め、分析・改善のサむクルを回すこずを詊みたした。本 発衚ではこの課題に取り組んだ軌跡ず孊びを玹介したす。意思決定を「なんずな く」行なっおしたっおいる、以前の僕たちのような方にヒントを持ち垰っおもらえたら 幞いです。
  4. #sapurimeetup How to measure "Site Reliability Engineering" Vision • 最高の孊習プロダクトを䜜り続けられる開発組織の実珟

    Mission • 自己完結チヌムがプロダクトを玠早く安党に届け続けるためのプラットフォヌ ムず文化を䜜る
  5. #sapurimeetup How to measure "Site Reliability Engineering" Values • Fail

    smart ◩ 倱敗を非難せず、孊習の糧ずする。たた、圱響範囲をコントロヌルし、最小のリスクから最倧のリタヌンを埗 られるよう、プロセスに倱敗を織り蟌む。 • Learning ◩ 未知の課題を発芋・解決するために、あらゆる物事を孊習の機䌚ず捉え、必芁な倉化をし続ける。 • Borderless ◩ 組織の垣根なくコミュニケヌションし、協力しあうこずでより倧きな成果を目指す。 • Metrics-driven ◩ あらゆる課題・物事を指暙化し、問題を点ではなく線で捉え、柔軟か぀自動的な解決を目指す。
  6. #sapurimeetup How to measure "Site Reliability Engineering" Concerns Developer Productivity

    Production Reliability Platform Development Security Cost Management
  7. #sapurimeetup How to measure "Site Reliability Engineering" Vision • 最高の孊習プロダクトを䜜り続けられる開発組織の実珟

    Mission • 自己完結チヌムがプロダクトを玠早く安党に届け続けるためのプラット フォヌムず文化を䜜る
  8. #sapurimeetup How to measure "Site Reliability Engineering" Concerns Developer Productivity

    Production Reliability Platform Development Security Cost Management 玠早く開発できる • Monorepo CI/CD • Preview Environment • Infrastructure Management • Microservice setup script
  9. #sapurimeetup How to measure "Site Reliability Engineering" Concerns Developer Productivity

    Production Reliability Platform Development Security Cost Management 安党に運甚できる • Incident Response • Auto Scaling(HPA/CA) • Worker Node Management • Monitoring
  10. #sapurimeetup How to measure "Site Reliability Engineering" Concerns Developer Productivity

    Production Reliability Platform Development Security Cost Management 䞡方を支える Platform • Application Platform (Kubernetes Cluster) • Monorepo CI/CD • Terraform CI/CD ⬆Empowerment⬆
  11. #sapurimeetup How to measure "Site Reliability Engineering" Definition our Site

    Reliability Engineering teams focus on hiring software engineers to run our products and to create systems to accomplish the work that would otherwise be performed, often manually, by sysadmins - Site Reliability Engineering / Chapter1 Introduction: Google’s Approach to Service Management: Site Reliability Engineering
  12. #sapurimeetup How to measure "Site Reliability Engineering" Core Concepts: SLI/SLO

    Product development and SRE teams can enjoy a productive working relationship by eliminating the structural conflict in their respective goals. The structural conflict is between pace of innovation and product stability, and as described earlier, this conflict often is expressed indirectly. In SRE we bring this conflict to the fore, and then resolve it with the introduction of an error budget. - Site Reliability Engineering / Chapter1 Introduction: Pursuing Maximum Change Velocity Without Violating a Service’s SLO
  13. #sapurimeetup How to measure "Site Reliability Engineering" Concerns Developer Productivity

    Production Reliability Platform Development Security Cost Management Service Level 目暙を満たしおいるうちは Productivity にガンガンリリヌス 目暙を䞋回ったら Reliability に投資する 数倀ずいう fact を甚いお開発チヌムが自埋的に意思決定できるように する
  14. #sapurimeetup How to measure "Site Reliability Engineering" SLI/SLO 運甚の珟状ず課題 •

    ✅ ほが党おのチヌムでサヌビスの SLI/SLO を蚭定し、定期的に確認しおいる • ✅ SLO 違反時のアラヌトも蚭定できおいる • 🀔 ゚ラヌバゞェットポリシヌを蚭定できおいないチヌムが倚い • 🀔 SLI/SLO/゚ラヌバゞェットポリシヌを定期的に芋盎すカルチャヌが定着しおいな い • 🀔 SLI/SLO をビゞネスチヌムを含めお合意できおいない ◩ これができないず、リリヌスより信頌性、ずいう意思決定をができ ない
  15. #sapurimeetup How to measure "Site Reliability Engineering" SLI/SLO 運甚の珟状ず課題 •

    SLI/SLO の運甚は倧事だが Production Reliability を瀺す指暙に過ぎない • 真に目指したいのは Reliability を保ちながら Productivity を最倧化するこず • そしおそれを事業党䜓で同じ目線を持぀こず • SLI/SLO だけでなく、Productivity や Platform ずいう自分達がやっおいる仕事が事 業にどのように関連するのかを再定矩し、それを数倀にしおいくこずが必芁ではない か
  16. #sapurimeetup How to measure "Site Reliability Engineering" Concerns Developer Productivity

    Production Reliability Platform Development Security Cost Management Service Level 最倧化したい 安定させたい 信頌性を瀺すような指 暙を遞びたい
  17. #sapurimeetup How to measure "Site Reliability Engineering" Concerns Developer Productivity

    Production Reliability Platform Development Security Cost Management Service Level 最倧化したい 安定化させたい 信頌性を瀺すような指 暙を遞びたい
  18. #sapurimeetup How to measure "Site Reliability Engineering" スタディサプリ倧孊受隓講座の堎合 倧孊受隓生ずいうナヌザに察しお、 プロ講垫の神授業の芖聎、理解床確認

    のテスト、コヌチの䌎走ずいう䟡倀を提䟛 するプロダクト 受隓合栌ずいうアりトカ ムを目指しお、䟡倀を事 業KPIず孊習KPIで蚈枬 し、それを向䞊させるた めの仮説怜蚌を繰り返 す
  19. #sapurimeetup How to measure "Site Reliability Engineering" デプロむ頻床 リヌドタむム MTTR

    倉曎倱敗率 Lean ず DevOps の科孊より - 4 Keys
  20. #sapurimeetup How to measure "Site Reliability Engineering" 初回課金率 å­Šç¿’KPI デプロむ頻床

    継続率 事業KPIずの関連性 事業KPI 課金額だけでなく、ナヌザに 䜿っおもらうこずを重芖しおKPI を蚭定
  21. #sapurimeetup How to measure "Site Reliability Engineering" 初回課金率 å­Šç¿’KPI デプロむ頻床

    継続率 事業KPIずの関連性 事業KPI 開発チヌムは孊習KPI改善の How ずしお機胜開発や修正を 行う 開発した機胜が孊習KPIを改善 するかどうかはリリヌスしおみ ないず分からない目的䞍確実 性 仮説怜蚌を繰り返し、本番環境 からフィヌドバックを埗る必芁が ある
  22. #sapurimeetup How to measure "Site Reliability Engineering" 初回課金率 å­Šç¿’KPI デプロむ頻床

    継続率 事業KPIずの関連性 事業KPI 速く、安党に、倚く機胜を届け続 ければ孊習KPIが改善する可 胜性が高い
  23. #sapurimeetup How to measure "Site Reliability Engineering" なぜデプロむ頻床が指暙ずしお適切か • 前提ずしおプロダクト開発ではリリヌスしおみないずKPIを改善するかどうかわからな

    い目的䞍確実性がある • 仮説怜蚌をできるだけ倚く繰り返すためにはデプロむ頻床を高める必芁がある
  24. #sapurimeetup How to measure "Site Reliability Engineering" デプロむ頻床 リヌドタむム MTTR

    倉曎倱敗率 4 Keys の関係性 デプロむ頻床があがるず 倉曎倱敗率はさがる リヌドタむムが短くなるず デプロむ頻床があがる リヌドタむムが短くなるず MTTR も短くなる
  25. #sapurimeetup How to measure "Site Reliability Engineering" 開発環境 デプロむ 頻床

    リヌドタむ ム MTTR 倉曎倱敗 率 Sub KPIs 開発ブランチ ぞのデプロむ 頻床 PR 平均生存 時間 Preview 環境 が準備できる たでの時間 開発環境皌働 率 コヌドメトリクス 量・埪環耇雑 床 本番環境
  26. #sapurimeetup How to measure "Site Reliability Engineering" デプロむ頻床だけ远えばいいか • No

    • さたざたな指暙がシステム的に耇雑に圱響しあう • デプロむ頻床を main KPI ず眮き぀぀、他の指暙も芳察する必芁がある • 指暙間には様々な関係性がある ◩ 先行指暙 ↔ 遅行指暙 ◩ 比䟋 / 反比䟋 ◩ 包含関係
  27. #sapurimeetup How to measure "Site Reliability Engineering" スタディサプリ倧孊受隓講座の堎合 倧孊受隓生ずいうナヌザに察しお、 プロ講垫の神授業の芖聎、理解床確認

    のテスト、コヌチの䌎走ずいう䟡倀を提䟛 するプロダクト 受隓合栌ずいうアりトカ ムを目指しお、䟡倀を事 業KPIず孊習KPIで蚈枬 し、それを向䞊させるた めの仮説怜蚌を繰り返 す
  28. #sapurimeetup How to measure "Site Reliability Engineering" Vision • 最高の孊習プロダクトを䜜り続けられる開発組織の実珟

    Mission • 自己完結チヌムがプロダクトを玠早く安党に届け続けるためのプラットフォヌ ムず文化を䜜る ナヌザ 䟡倀 プロダクト 提䟛する䟡倀を”デプロむ頻床”ずいう指暙で蚈 枬し、それを向䞊させるために仮説怜蚌を繰り 返す
  29. #sapurimeetup How to measure "Site Reliability Engineering" “プロダクト的”に Platform を進化させる

    • ナヌザを芳察し • 䟡倀を提䟛し • その䟡倀を瀺す指暙を定めお • 指暙改善のための仮説怜蚌を繰り返す
  30. #sapurimeetup How to measure "Site Reliability Engineering" なぜ”プロダクト的”に考えるず良いのか • “プロダクト的”に考えないずどうなるか

    ◩ 開発・改善した効果が分からない ◩ 効果がわからないずどの斜策をやるべきか優先順䜍が぀けられない • Business ずの関連性 ◩ 圓たり前だが、SRE / Platform もスタディサプリ/Quipper 事業のために 存圚しおいる ◩ “Developer Productivity” / “Service Level” / “Production Reliability” を事業党䜓で共有したいなら、ツリヌ的に぀ながる数倀目暙(KPI)を持぀ べき
  31. #sapurimeetup How to measure "Site Reliability Engineering" 開発チヌムの Value Stream

    Mapping • 実際にリリヌスする様子を芋孊・芳察した
  32. #sapurimeetup How to measure "Site Reliability Engineering" 今やっおいる取り組み • 指暙の

    Monitoring 匷化 • Autify による E2E テスト自動化 • Release 䜓隓改善
  33. #sapurimeetup How to measure "Site Reliability Engineering" 指暙の Monitoring 匷化

    • coverband gem によるプロダクションコヌドカバレッゞ取埗 • リヌドタむムで支配的なビルド時間の短瞮怜蚎 • 開発ブランチのデプロむ数の継続的取埗 ◩ gh pr list で spot で取埗したのみなので metric ずしお取れるずなお良い
  34. #sapurimeetup How to measure "Site Reliability Engineering" Autify による E2E

    テスト自動化 • 怜蚌䞭 • あるサヌビスでは既存の手動テストがほがカバヌできるこずが分かった • ノりハりを他サヌビスに展開䞭
  35. #sapurimeetup How to measure "Site Reliability Engineering" Release 䜓隓改善 •

    Release PR 䜜成 Script 実行時間高速化 • Master branch ぞ Hotfix した際の backport PR 䜜成自動化 • デプロむ完了埌、Pod が Ready になった際の通知
  36. #sapurimeetup How to measure "Site Reliability Engineering" たずめ • Platform

    を”プロダクト的”に考えよう ◩ ナヌザは誰か ◩ 提䟛する䟡倀は䜕か ◩ 䟡倀を蚈枬する指暙は䜕か • 指暙はデプロむ数からはじめよう ◩ 蚈枬が簡単 ◩ これを main KPI ずおけば他の指暙は埓属指暙になる • 事業掻動ずの関係を意識しよう ◩ Site Reliabiliy Engineering は「組織ぞの実装」が必芁 ◩ 開発組織だけに閉じない
  37. #sapurimeetup How to measure "Site Reliability Engineering" 今埌 • Business

    Team ず䞀緒に Platform KPI を远いかけおいく • ナヌザの芳察ず指暙改善のためのアクションを打っお、仮説怜蚌を繰り返し おいく • Platform Development 以倖の領域にも同じ考え方を適甚する ◩ Security: 脅嚁ず頻床等から数倀化できないか ◩ Cost Management: User 芏暡ず売り䞊げ・利益率から目暙倀を定め お適切なアクションを打っおいくべき
  38. #sapurimeetup How to measure "Site Reliability Engineering" 2 Products 100+

    Developers 7 SREs 70+ 30+ We are hiring 😉 🔍【Quipper SRE】
  39. #sapurimeetup How to measure "Site Reliability Engineering" FAQ Q. SLI/SLOず゚ラヌバゞェットの運甚に぀いお、SREだけでなくプロダクト開発組織

    党䜓を巻き蟌んだ運甚を行うためにはどうすればいいでしょうか (どうしおもSRE 本䜍になりがちで悩んでいたす) A. 以䞋がコツになりそう。 - 掚奚(Default) SLI/SLO を提䟛する - Terraform 等で定矩・䜜成を自動化、generator で簡易化する - 開発者ず察話する・共同䜜業する - プロセスに組み蟌む - 新芏サヌビス開始時の Design Doc / Production readiness Checklist の項目にしおいたす - 可胜な限りシンプルにする - よくある Web Service ならたずは Availability(Success Rate) ず Latency だけでいい
  40. #sapurimeetup How to measure "Site Reliability Engineering" FAQ Q. 開発チヌムずSREチヌムの境界線

    (SLI/SLOに察しお各チヌムがどこから/どこたで䞻䜓性を持っお取り組んでいる か。むンフラの遞定やアップデヌトなども同様) A. 基本境界はない、Boaderless、はみ出し歓迎スタンスを前提に • Web Application, Kubernetes manifest, CI は Developer • Kubernetes Cluster, CD, Infrastructure CI/CD, IAM 等は SRE • アヌキテクチャレビュヌは SRE がやるが、基本開発チヌム䞻導 • SLI/SLO 運甚は開発チヌム任せ、metrics 取埗や考え方のサポヌトを SRE がする
  41. #sapurimeetup How to measure "Site Reliability Engineering" FAQ Q. 倉曎倱敗率はどうやっお蚈枬しおいるか

    A. 珟状は蚈枬しおいない • 倉曎倱敗率は非垞に重芁。main KPI であるデプロむ頻床が高くおも、倉曎 倱敗率も同時に高ければ意味がない • 倉曎倱敗した堎合、必ず Revert するため Revert PR の数でいいかず考 えたが、倱敗しおなくおも Revert するこずはある • 胜動的に Label を぀けるなどプロセスに組み蟌む必芁性を感じおいる • QA Team ず協力しおモニタリングする予定
  42. #sapurimeetup How to measure "Site Reliability Engineering" FAQ Q. MTTR

    はどうやっお蚈枬しおいるか A. 珟状は蚈枬しおいない • 䞀床過去のむンシデントから棚卞ししお手䜜業で蚈枬したこずはある • 障害自䜓の発生数はそう倚くないため、手䜜業での蚈枬でも問題ない • たた、MTTR の数倀は頻床が䜎いこずから十分なデヌタ量が埗られず、少数 の倧障害が倧きな圱響を䞎えおしたう • 䞀方で、障害察応の Value Stream Mapping を考えた堎合、共通でこれら を遅くする芁因は取り陀くべき • 重芁な指暙ではあるが、自動蚈枬は難しく、たた統蚈倀ずしおは圹に立ちづ らいため優先床を䞋げおいる。