アラームの設計について

アラームの実装について

システムエラーを通知する方法としてアラームが使われることがある。何か問題が起きたらアラームをつければよいので簡単だ。さらにアラームを一か所して管理すれば、システムの異常を一括して確認できる。

アラームをクリアしようとすると話は少しだけ難しくなる。アラームがクリアされるということは、システムに異常が無くなったことをシステム自身がどこかで検知し、回復処理を行ったということだ。この処理は誰が何処でやるべきなのだろうか。

一つ目はアラームをセットする場所で異常がなかった場合、異常をクリアする方法。これが多分一番簡単。ただしアラーム解除のコードはシステム中に散らばるし、重複するし、複数アラームの解除のタイミングも揃えられない。

二つ目はアラームを管理している場所で周期的に一括チェック&解除する方法。解除機能が一か所にまとまるものの、アラームを管理する存在がモジュールの回復を実行する。何か違和感を感じたが、別に間違えていない気もする。アラームに回復処理を紐づけるのならば、アラームに判定式やアラーム処理を紐づけるべきではないか。アラームを点灯させる処理はコールバックのようにシンプルではないので、まとめるのは困難だ。いや、よく考えるとアラームに回復処理を紐づける行為も困難だ。

どうするのがいいかな?