見出し画像

ソフトウェア開発者の7つの誤り その2

  • 私のコードは動く

  • 私のコードは常に機能する

  • 私のコードは規模に関係なく動く

  • ユーザーの不正入力がシステムを壊したのは私のせいではない

  • 後でリファクタリングしよう

  • ただの設定変更だ

  • それは私の分野ではない

私のコードは常に機能する

徹底的なテストを経ると動くコードは出来上がります
でも出来上がってデプロイされたプログラムが本番環境でずっと正常に動き続ける保証はありません
だから監視するのです

本番で稼働するアプリケーションにはいつか障害が発生します
障害は防ぎようがないので、発生したときにいかに素早く正確に検知して正確な情報を出力するかが大切です

監視は障害検知のためだけではありません
アプリケーションを動かすのに必要なシステムリソースや、ユーザーがどのようにアプリケーションを使用しているかといった情報も監視を通して得られるのです

何を監視すればよいかはアプリケーションやインフラの提供形態(サーバレスかオンプレミスかなど)にもよりますが、次のものがあります

  • スループット

    • ある期間内にシステムが処理できる量

  • 飽和

    • サーバやキューなどのリソースが使い果たされた状態

  • エラー

    • 障害や失敗についての情報

  • レイテンシ

    • ある処理を実行するのに要した時間

何を監視するかについて別の軸もあります

  • ログ

    • 開発者がアプリケーションの動作を追跡するために取得する、アプリケーションからの出力

  • トレーシング

    • リクエストがシステムを通過する様子を監視することで、各コンポーネントの処理時間やリソース消費量を確認し、ボトルネックを特定できる

  • メトリクス

    • アプリやインフラから取得する定量的な測定値で、リクエストレートやエラー率、レイテンシなど、システムの健全性を表す

これら監視はできるだけリアルタイムに取得して、可能であれば障害を予想できれば文句なしです

監視しましょう!

よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただきます!