会員登録すると
学習することができます。
会員登録する(無料)
登録済みの方はこちら
ログイン

監視の設計 ― 「壊れた」と「動かなかった」に気づく

目安学習時間 18分

課題

全問正解でレクチャー完了です。

【問題1】

定期処理が「そもそも動かなかった」ことに気づく方法として、この講座が紹介しているものはどれですか。

[選択肢]

【問題2】

naminori でサイトマップの定期処理が6週間止まっていたことに、長く気づけなかった理由はどれですか。

[選択肢]
会員登録すると
学習することができます。
会員登録する(無料)

学ぶ目的

見張るものを4つに分ける

監視とは、壊れたときに、利用者より先に気づくための仕組みです。何を見張るかを4つに分けて考えます。

種類 何を見るか 気づけること
外形監視 外から主要なページを開き、正常に返ってくるか 利用者から見て使えない状態
死活監視 サーバやプロセスが動いているか 止まった、再起動を繰り返している
エラー監視 プログラムの中で起きたエラーの件数と中身 特定の画面・操作だけが失敗している
定期処理の監視 決まった時刻に動く処理が、動いて成功したか 夜中の集計や更新が止まっている

外形監視は「利用者に見えているか」、エラー監視は「中で何が起きているか」を教えてくれます。どれか1つでは足りません。サーバが動いていても、特定の画面だけ500エラーを返していることはあるからです。

naminori では、エラーを GlitchTip(エラーを集めて知らせるツール)に集めています。OSを更新したときは、作業の最後に、主要なページ(トップ・講座・求人・記事・ログイン)が正常に返ることを確かめてから公開に戻しました。

いちばん気づきにくいのは「動かなかった」こと

エラーが起きれば、エラー監視が気づきます。気づけないのは、そもそも処理が動かなかったときです。動かなければ、エラーも出ません。

naminori の実例を、設計の目で見直す

講座34の第1回で、naminori のサイトマップ(検索エンジンにページの一覧を伝えるファイル)を作る定期処理が、約6週間止まっていた件を見ました。ここでは「なぜ気づけない作りだったのか」を見ます。

  • 定期処理を動かす環境で、必要な道具と設定が読み込まれず、起動すらしていなかった。起動しない処理は、エラーを出さない
  • 出力を捨てる設定にしていたため、失敗しても何も言わなかった
  • 同じ理由で、ほかの定期処理もまとめて止まっていた。新しく公開したレクチャーページ49本が、検索エンジンに伝わっていなかった

つまり、「失敗したら知らせる」も「動かなかったら気づく」も、最初から作られていなかったのです。

直したこと:失敗を知らせる、成果物を見張る

直したのは、壊れた原因だけではありません。気づけなかった仕組みのほうです。

  1. 定期処理は共通の入口から動かし、結果を記録し、失敗したら通知する
  2. 通知は、アプリが起動できない種類の失敗でも届くよう、アプリを経由せずに送る
  3. 毎朝、できあがっているはずのもの(サイトマップと、定期処理の記録)が新しいかを確かめ、2日以上古ければ通知する

3つ目が大事です。個々の処理の失敗通知そのものが壊れていても、「成果物が古い」という症状の側から気づけます。実際、その後に別の定期処理が失敗したときは、通知がエラー監視に届きました。

最初に決めること

定期処理を1本足すときは、処理と一緒に次を決めます。

  • 失敗したら、どこに知らせるか
  • 動かなかったことに、何で気づくか(成果物の新しさ、最後に成功した時刻)
  • 何日止まっていたら困るか(それが通知のしきい値になる)

このレクチャーで学ぶこと

  • 外形・死活・エラー・定期処理の4つの監視
  • 「動かなかった」ことは、エラーでは気づけない
  • 定期処理が6週間止まっていた実例
  • 成果物の新しさを見張る

質問

まだ質問は投稿されていません。

質問投稿

ログイン後に質問の投稿ができます。