投稿

本番インフラ移行のカットオーバー判定は、エンジニアだけで下してよいか

本番インフラ移行のカットオーバー判定は、エンジニアだけで下してよいか

まとめ

  • 「コードを変更していない」はテスト範囲を狭める根拠になる。判定権を狭める根拠にはならない
  • 判定に入らない人へ説明責任だけを乗せる配分は成立しない。権限と説明責任は同じ側に置く
  • 巻き込みの是非を関係者の議論で決めようとすると平行線になる。権限を渡される本人に聞いたほうが早い

判定を誰が出すか

本番環境を丸ごと別基盤へ移す。

切り替えてよいかの最終判定を、エンジニアだけで出す形にできるか。

表1: 判定の出し方を決めるフロー

手順 判断すること 結果
1 サービス停止やデータ不整合が利用者に到達しうるか 到達しないならエンジニア単独で可
2 障害時に外部へ説明する主体がエンジニア以外にいるか いるならその主体を判定に含める
3 上のどちらにも当てはまらない エンジニア単独で判定する

既定はビジネスオーナーを含めた判定になる。

本番の移行は、手順1でほぼ必ず引っかかるからだ。

手順1で落ちるのは、ステージング以下の環境に閉じた作業。ここは単独でよい。

本番を特別扱いしているのではなく、利用者に届くかどうかで切っている。

「ソース変更なし」はどこまで効くか

インフラだけを入れ替える移行では、アプリケーションのコードに一切手が入らないことがある。

このとき「変更点が明確なので確認範囲も絞れる」という主張が出る。

フレームワークのバージョンアップのように影響範囲が読めない変更なら、変わった箇所を特定できないので広くテストするしかない。

環境の入れ替えはどこが変わったかわかっているので、そこを厚く見れば足りる。全面的な受入テストを敷かない判断には、それなりの根拠があると思う。

問題は、この根拠が効く先だ。効くのは確認の範囲であって、判定を誰が出すかではない。

切り替えてよいかの判断には、停止を何分許容するか、障害が出たときにどこまで受け入れるかが含まれる。

そこはエンジニアの担当ではない。

「どこが変わったか知っているのはエンジニアだけだ」という主張はその通りで、だから確認の実行はエンジニアが持つ。

そこから判定も持つ、へは繋がらない。範囲の話で権限の話まで決めてしまうと、議論は噛み合わなくなる。

2つの配分を比べる

表2: 判定権と説明責任の配分

観点 エンジニア単独で判定 ビジネスオーナーを含めて判定
確認作業の実行 エンジニア エンジニア
確認観点の提示 エンジニア 双方
切り替え実行の判定 エンジニア 双方の合意
障害時の外部説明 ビジネスオーナー ビジネスオーナー
停止許容時間の決定 明示されない ビジネスオーナー
ビジネスオーナーの稼働 ほぼゼロ 判定と観点提示の分

左の列は、外部説明の行だけが他と揃っていない。

判定に入っていない人が、結果の説明だけを引き受ける形になる。

停止許容時間が「明示されない」に落ちるのも同じ理由で、決める人がいないまま当日を迎える。

右の列がただしいわけでもない。

ビジネスオーナーの稼働は希少で、巻き込みを増やすほど良いという性質のものではない。

判定と観点提示だけを渡し、確認作業そのものは渡さない。そのあたりが落としどころだと思っている。

議論で決まらないときの抜け方

この論点は、関係者の間で議論しても収束しにくい。

巻き込むべきだと考える側は「観点が漏れる」を根拠にし、必要ないと考える側は「観点を出せる人がいない」を根拠にする。

どちらも確認の話をしていて、権限の話に入っていない。だから何度やっても同じところへ戻る。

自分の場合は、同じやり取りを複数回繰り返して、そのたびに同じ結論に着地した。同席していた別のメンバーが同趣旨を述べても変わらなかった。

言い方を変えれば通る、という前提はここで捨てた。

抜け方は、議論の相手を変えることだった。

判定に入るかどうかを判断する権利は、もともとビジネスオーナー本人にある。

責任分界の説明を本人にして、「判定に入らないまま説明だけするのは困る」と言われれば、その場で論点は終わる。何も言われなければ、少なくとも当事者間では合意が成立している。

どちらに転んでも、関係者の平行線からは出られる。

権限の配分で社内の意見が割れたときは、配分される側に聞くのが最短になる。

割れている当人同士は、相手を説得する材料を持っていない。持っているのは、その権限を渡される本人だけだ。

トレンドのタグ