責任分解点という崩壊点

あるサービスを維持していくために複数の企業が関わっている場合、それぞれの企業が分担すべき責任範囲を定義します。つまり「○○から△△まではA社が責任を持って、△△から□□まではB社が責任を持ってね」ということを明確にするのです。この場合、△△がA社とB社の責任分解点となります。A社もB社も、自社に際限のない責任が発生することを防止するために、このような方法を採用します。この方法がうまく働く場合もあります。何か問題が発生したときに、△△から□□の間で発生したのであれば、B社に問題の解決を依頼すれば良いからです。

しかし、ここで注意しなければならない点があります。責任分解“点”と言っていますが、実際には点ではなく、ある程度の厚みがあるということです。
この厚みの部分で問題が発生したとき、A社とB社のどちらが主体となって問題を解決するのでしょうか?多くの場合、どちらの会社も自社の責任になることを防ぐことを優先します。問題を解決することよりも、責任回避に力を注ぐのです。この空白地帯の問題は従来から指摘されてきた問題でした。


そして、責任分解点がレイヤによる分解であった場合、問題はさらに深刻になるのではないかというのが今回のエントリです。

例えばWebサービスを提供する場合を考えてみます。
A社は、ネットワークサービスを提供するので、インターネットとWebサーバとの間で通信できる状態を維持することが義務です。B社は、Webサーバ上で動作するアプリケーションを提供するので、Webサーバ内でアプリケーションが正常に動作する状態を維持することが義務です。さらに、B社が提供しているWebアプリケーションにデータを投入するC社が存在しているとします。このような役割分担はよく採用されているのではないでしょうか。

ある日、このサービスの応答が非常に遅くなってしまいました。利用者からのクレームもたくさん入ってきます。
しかし各社は次のように主張します。

A社「ネットワークに問題は発生していない。通信はできているのでWebサーバの問題なのではないか。」
B社「Webサーバに問題は発生していない。ネットワークまたは投入されたデータに問題があるのではないか。」
C社「我々は通常のオペレーションをしただけだ。我々の業務で問題が発生することはない。」

ここで致命的なのは、責任が自社に無いことを各社が主張していることではありません。どこに問題があるのかを、どの会社も見つけ出す能力が無いことが問題なのです。レイヤによる役割分担は、各社の専門性を高めるというメリットがある半面、専門外のレイヤに関する知見が非常に少なくなるという問題を抱えているのです。責任分解点が、サービス全体の崩壊点(=最も脆弱な点)となっているのです。


さて、このサービスの応答が非常に遅くなった問題は、時間の経過とともに解決しました。各社とも胸をなでおろします。
A社、B社、C社「やっぱりオレたちは悪くなかった。いや〜。よかった。よかった。」

でも・・・、これって本当によかったんですかね?