モニタリングとテスト: 優れたオブザーバビリティがあってもマージ前テストが必要な理由

優れたモニタリング(Datadog、Sentry、PagerDutyなど)があれば、テストの重要性は低いと主張するチームもあります。本番環境で問題を即座に検出し、迅速にロールバックできるなら、なぜマージ前テストに投資する必要があるのでしょうか?
この主張は、検出と予防を混同しています。どちらも必要であり、それぞれ異なる目的を果たします。
モニタリング: 落下後のセーフティネット
モニタリングは、本番環境で問題が発生したことを通知します。アラートをトリガーし、ダッシュボードを提供し、迅速な対応を可能にします。
しかし、モニタリングが発火した時点で、すでに被害は発生しています。ユーザーはバグを経験し、一部のトランザクションは失敗し、データが不整合な状態になっている可能性があります。インシデントのタイマーは既に動いています。
モニタリングは、テストをすり抜けたバグに対して不可欠です。しかし、それらのバグのリリースを防ぐための代替手段にはなりません。
テスト: 落下前のガードレール
マージ前テストは、バグが本番環境に到達する前に検出します。影響を受けるユーザーはゼロ、インシデントもなく、ロールバックも不要です。バグは一度もマージされなかったブランチ上に存在するだけです。
コストの差は甚大です。PRで検出されたバグ: 修正に5分。モニタリングによって本番環境で検出されたバグ: 数時間のインシデント対応、潜在的なデータクリーンアップ、ユーザーへの連絡、そしてポストモーテムが必要になります。
機能する組み合わせ
マージ前: TestSpriteがすべてのPRに対して包括的なテストを実行します。マージ前に機能上のバグ、セキュリティの脆弱性、リグレッションの問題を検出します。
デプロイ後: モニタリングが本番環境の健全性を追跡します。テストでカバーできなかった問題――インフラの問題、スケーリングの問題、データ依存のバグ――を検出します。
インシデント後: テストとモニタリングの両方のデータがポストモーテムに活かされます。なぜテストで検出できなかったのか?なぜモニタリングがより早く検出できなかったのか?各インシデントが両方のシステムを改善します。
最良のチームは両方を持っています。テストは本番インシデントの頻度を減らし、モニタリングはインシデントが発生したときの深刻度を軽減します。
TestSpriteは無料で始められます。その後に起きることはモニタリングスタックに任せましょう。組み合わせることで、完全な品質システムが実現します。
TestSpriteを無料で試す →