法則一覧

第77条運用

作った者が運用する

サービスを作るチームが運用も担えば、運用上の弱点のコストは、それを直せる人のところに落ちる。

Amazon

心得

直せる人が、起こされる人であるべきだ

どうするか

サービスをリリースしたチームを、そのサービスのオンコールに就ける。呼び出しの原因を直す権限とデプロイ権限も渡す。デプロイ、可観測性、アラートの共通基盤(舗装された道)とオンコールのローテーションを用意し、一人が全部を抱えないようにする。呼び出される対象を自分で変えられないチームには適用しない。それでは所有を渡したことにならず、呼び出しを押しつけるだけだ。

なぜ起きるか

ソフトウェアを壁の向こうの運用チームに投げ渡すと、呼び出しを受けて怒った顧客に向き合う人と、コードを変えられる人が別々になる。だから修正は遅れるか、回避策で終わる。自分のサービスで呼び出される開発者は、どの手抜きが痛いかを身をもって知り、夜中に起こされるのが自分なので障害を前提に設計する。運用していれば顧客とも日々接するので、苦情から変更までの距離も縮まる。ただしこの動機づけが働くのは、オーナーシップに実態があるときだけだ。呼び出しの原因になったものを、チーム自身が変えられなければならない。

当てはまらなくなるとき

開発者の認知負荷:開発から運用までを丸ごと持つと、開発者一人が知るべきことと毎週抱える優先事項が増える。共通の道具とオンコールのローテーションがなければ燃え尽きに行き着く。このモデルを採る Netflix も、幅より深さを求める人には、そうした役割を見つける手助けをするとしている。

出典

Jim Gray「A Conversation with Werner Vogels」『ACM Queue』4(4) (2006)。Amazon の CTO が、各サービスチームが作ったものを自分で運用する理由を語ったインタビューで、"You build it, you run it." の出典。トレードオフは Philip Fisher-Ogden, Greg Burrell & Dianne Marsh『Full Cycle Developers at Netflix — Operate What You Build』(Netflix Technology Blog, 2018) から。

原典を読む

ロゴ:Public domain · Wikimedia Commons

引用するとき

Hammurabi『第77条 作った者が運用する』 https://kanywst.github.io/hammurabi/ja/laws/you-build-it-you-run-it/

BibTeX
@misc{hammurabi-you-build-it-you-run-it,
  title  = {作った者が運用する},
  author = {{Hammurabi contributors}},
  note   = {Hammurabi, § 77},
  url    = {https://kanywst.github.io/hammurabi/ja/laws/you-build-it-you-run-it/}
}

本文は CC BY-SA 4.0 です。Hammurabi の名前と記事へのリンクを添えてください。

XBlueskyはてブLinkedIn

関連する法則

GitHub で誤りを指摘する