研究所の雑談会で、クラウド上の分散システムに対して、統計的なアルゴリズムをもつ異常検知を導入する是非について話をしていた。[[notes/sre/SRE]]以前の信頼性100%を目指す方針であれば、異常検知アルゴリズムの適用により、わずかな異常の予兆も見逃さないようにすることには意味がある。しかし、SREを前提とすると、実際に異常検知をかけて、それ以前では見つけられなかったような振る舞いを発見したとしても、それを単に人間へのアラートとして出力してしまうと、人間がアクションするべきかどうかはわからない。たちまち人間に対するノイズとなってしまう。異常検知アルゴリズムがシステムの利用者の体験悪化を直接検知できれば理想であるが、例えばレイテンシが〇〇ms以下であれば利用者が満足するかどうかは、システムのメトリックをいくら集めて解析してもわかるとは思えない。 一方で、クラウドの下位システム(サーバ仮想化基盤やネットワーク仮想化基盤など)はマルチテナント方式となっていることと、テナント側のアプリケーションはいじれないので、テナント単位でSLIを定義し監視することは不可能である。マルチテナント全体を抽象化したSLIを定義しようにも、利用形態がある程度規定されるリクエスト駆動のWebサービスと異なり、利用者が任意のプログラムを動かせたりするので、SLIを定義すること自体が難しい。( [[2019__HotOS__Nines are Not Enough Meaningful Metrics for Clouds]] も参照) クラウドの上であっても下であっても、異常検知の結果、人間がアクション可能なアラートになるかの保証はない。アラートにするとノイズになるなら、公平性のために特定のテナントの負荷を抑え込むなどの自律制御に異常検知アルゴリズムを利用するのはよいかもしれない。アラートのような白黒つける処理に持ち込むとノイズの問題がでてくるので、異常度合いに応じて制御幅を決めればよいと考えることもできる。 SLIの定義が難しいクラウドの下位システムのほうが異常検知アルゴリズムを適用するメリットがより大きいと思う。 なんかあまりうまくまとまらなかったので、今後の思考実験の材料にしていく。