2024年7月19日、サイバー セキュリティ大手の CrowdStrike が提供したアップデートの不具合が原因で、大規模なコンピューター障害が発生しました。全世界で数百万台の Windows デバイスに影響を与えたこのインシデントは、ソフトウェア エラーが引き起こすドミノ効果を明らかにしました。
それ以来、CrowdStrike と業界の専門家は、インシデントの概要と、今後このような問題を防ぐために取るべき措置をまとめた技術情報を公開しています。とはいえ、このバグは小さくなく、このエラーにより、フォーチュン 500 企業だけで 54 億ドルを超える収益損失が発生しました。たとえ最善の前向きな意図があったとしても、この出来事は取り返しのつかない評判の低下を招き、将来的に同社に損害を与えることは間違いありません。
バグは常にリスクですが、適切な開発およびテスト プロセスを導入することでビジネスを保護することができます。このシリーズでは、何が起こったのか、どのような影響があったのか、そしてあなたのアプリで同様の問題をどのように防ぐことができるのかを、2 部構成で探ります。
- パート 1: 本番環境での重大なエラーを防ぐ
- パート 2: リリース後のアプリを監視してバグを迅速に解決する
CrowdStrike の障害の原因は?
障害の原因は、Windows マシン上の CrowdStrike の Falcon ウイルス対策ソフトウェアのセンサー設定の更新でした。この更新には、起動時にシステム クラッシュとブルー スクリーン (BSOD) を引き起こすロジック エラーが含まれていました。詳細については、CrowdStrike のサイトに掲載されている技術情報を参照してください。
CrowdStrike の技術情報によると、設定の更新がロジック エラーを引き起こしたということです。このエラーにより、システム クラッシュが発生し、影響を受けたデバイスが再起動を繰り返して使用不能になりました。
グローバルな影響
CrowdStrike の障害による影響は広範囲に及び、混乱を招きました。次のような影響がありました。
- 企業: 障害により、フォーチュン 500 企業だけでも 54 億ドル以上の損失を被ったと推定されています。金融、医療、小売、輸送など、さまざまな業界の数え切れないほどの企業が麻痺状態に陥りました。従業員がワークステーションにアクセスできないため、重要な業務が停止しました。企業がこの障害からの復旧を試みている間も、影響は続くと思われます。
- 個人: 仕事やプライベートで Windows マシンに依存している個人ユーザーも不便を被り、場合によっては危険にさらされました。航空業界は大きな打撃を受け、何日も復旧できず、乗客は世界中で立往生しました。さらに問題なのは、消防指令センターの係が電話に出られず、緊急サービスを 7 時間以上提供できなかったケースもあったという報告です。
- 全体的な生産性: この障害は、今日のデジタル環境の相互接続性を浮き彫りにし、世界中で生産性を大きく低下させました。また、単一のソフトウェア プロバイダーへの過度の依存の可能性も浮き彫りになりました。Microsoft が別の、あるいは複数のセキュリティ ソフトウェアを使用していれば、今回の障害はこれほど広範囲に及ばなかったかもしれません。
- CrowdStrike 自身: CrowdStrike は今後、経済面と評判面の両方の戦いに直面するでしょう。デルタ航空などの企業はすでに、損失回復のために法的措置を講じ始めています。たとえ訴訟による経済的負担に対処できたとしても、評判は回復不能なほど損なわれています。さらに、CrowdStrike の株価は 2 週間で 41% も下落しました。この状態から回復するには多大な努力が必要ですが、ほとんどの企業にはそのリソースがありません。
どうすれば回避できたのでしょうか?
簡単に言うと、今回の障害は、一見小さなアップデートが、リリース前に通常のテスト チャンネルを通らなかったために引き起こされました。バグは避けられませんが、ビジネスに壊滅的な影響を与えるのを防ぐためにできる対策はあります。
バグが本番環境で発生するリスクを最小限に抑えるためのヒントをいくつか紹介します。
- QA プロセス標準の強化: CrowdStrike は、自動テスト、手動テスト、検証、ロールアウト手順を含む広範な QA プロセスがあることを認めていますが、この更新が配信された Rapid Response Content は異なるプロセスに従っていたことも認めています。配信方法が異なれば、必要なテスト手順も異なるかもしれませんが、組織の標準を設定することで、エッジ ケースであってもリリースの品質に影響を与えないようにする考え方が促進されます。どんなに小さなリリースであっても、標準に従うべきです。
- すべてのリリースに同じ注意を払う: 多大な損害をもたらしたこのバグは、40KB の小さなリリースによって引き起こされました。これほど大きな問題を引き起こすとはどのチームも予想していなかったでしょう。これは、コードがますます複雑になり、最小の更新でも大きな変化が生じる可能性があるという注意喚起になりました。リリースの規模に関係なく、完全なテスト カバレッジと品質を維持することが重要です。
- 洞察を得るために自動化を利用: 自動化はチームが効率良く業務を行うために不可欠ですが、AI と同様に自動化は 100% 完璧ではなく、人間の目の代わりにはならないことを覚えておくことが重要です。テストの自動化を進める際には、手作業によるチェックをきちんと行い、自動化に過度に依存したり、信頼したりしないように注意が必要です。このケースでは、自動化が「パス」と判断しているものにもっと注意を払っていれば、この潜在的な問題をより早く発見できた可能性があります。
- OS およびデバイスに特化したテスト: 今回の障害は、すべてのデバイスとオペレーティング システムに影響を与えるコードベースの問題によるものではなく、Windows 固有のものでした。一般的なクロスプラットフォーム テストでは、このようなエラーを見逃すことがよくあるため、運用するデバイスやブラウザーでさらにテストを行うことが重要です。CrowdStrike が実機でテストを実施していれば、デプロイ前にこのエラーを検出できたでしょう。
- テストの目的を忘れない: これらはすべて、テストの目的を忘れないという最後のポイントにつながります。できるだけ早くリリースするだけでなく、高品質のエクスペリエンスを提供することが求められています。ビジネス リーダーはリリース要求に迅速に対応するようプレッシャーをかけますが、品質を犠牲にすると、メリットよりもデメリットの方が大きくなる可能性があります。
より包括的なテスト スイートを実行する方法
では、これらの対策を導入するにはどうすればよいでしょうか? QA プロセスを強化するため、次のような戦術的なステップを取ることができます。
- より多くの種類のテストを自動化する: 機能テストは UI が機能することを確認するのに役立ちますが、自信を持って出荷するにはそれ以上のものが必要です。負荷テスト、ビジュアル テスト、アクセシビリティ テストなどの追加のテスト タイプを組み込むことで、バグが発生する可能性のある場所をより包括的に把握できます。
- 手動テストの活用: 手動テストは、顧客エクスペリエンスを向上させる重要な UI/UX の洞察を提供しますが、QA プロセスの抜き打ちチェックにも使用できます。より多くのテストを自動化するにつれて、自動化が信頼できることを確認するため、時々手動テストを実行することができます。
- 実際のデバイスとブラウザーでテストする: デバイスや OS が複雑になればなるほど、アプリの配信には慎重さと配慮が求められます。アプリのコードに対し基本的なテストを実施するだけでは十分ではありません。顧客が実際に使用する環境でテストを再現する必要があります。
- 関係部門だけでなく、組織全体に標準を適用する: 組織内にはさまざまなアプリや機能を担当するチームがあるかもしれませんが、だからといって一貫性が保てないわけではありません。チーム間でテスト ケースを整理し、さまざまな関係者間で知識やガイドラインを共有する方法を模索してください。
テストに関する基本的なガイダンスは、1 か所でより多くの作業を実行し、標準の適用を徹底することです。
組織全体のテストをオーケストレーションするツール
徹底的なテストには、多くの場合、複雑なワークストリームと効果的なコミュニケーションが必要です。SmartBear のテスト ハブは、QA を次のレベルへ引き上げ、より高い品質のアプリケーションを出荷できるように、またペースの速いリリース要求に対応できるように設計されています。自動化、管理、またはその両方など、お客様のニーズに合ったソリューションを提供します。
自動化ソリューションをお探しですか? TestComplete は、スキル レベルに関係なく、より多くの種類のテストを自動化し、実際のデバイスやブラウザーで並行して実行することができます。手動テストを実行してレポートを生成し、テスト プロセスをチェックすることも可能です。
管理ソリューションをお探しですか? Zephyr 製品スイートは、テスト ケースを整理し、最適化する手段を提供します。Jira 内またはスタンドアロンから、開発者と緊密にコミュニケーションを取りながら、必要な場所で自由に作業できます。
TestComplete と Zephyr を使用すれば、組織全体でテスト自動化を実現し、あらゆる規模のリリースが常に最高品質であることを保証する組織標準を適用できます。
TestComplete 製品に関する詳細、無料評価版は、こちら。
Zephyr 製品に関する詳細、無料評価版は、こちら。
次のステップ: 詳細なモニタリングによるライブ パフォーマンスの維持
この記事では、重大なバグが本番環境で発生するのを防ぐため導入を検討すべき、リリース前の有益な手順について説明しました。もちろん、すべてのバグを防止できるわけではないので、リリース後のパフォーマンスの安定性についても準備することが重要です。
パート 2 では、ライブ エラーがビジネスに影響を及ぼさないように、バグをすばやく見つけて解決するためのヒントを紹介します。
この資料は、SmartBear の Blog で公開されている「Breaking Down the CrowdStrike Outage Part 1: Preventing Critical Errors from Reaching Production」の日本語参考訳です。