アプリケーション・レジリエンスとは、コンポーネントの障害、停止、ワークロードの突然の急増など、計画外の混乱が発生した場合でも、コア機能を維持するソフトウェアの能力です。レジリエントなアプリは、事業継続性を確保し、ユーザー・エクスペリエンスを保護し、ダウンタイムを最小限に抑える上で役立ちます。
アプリケーションは、顧客取引の処理やサプライチェーンの管理から、従業員の共同作業の実現やリアルタイム・データの分析まで、現代ビジネスのほぼすべての側面を支援します。
これらのアプリケーションに障害が発生すると、深刻な影響が生じる可能性があります。ダウンタイム(アプリケーションが利用できなくなったり、正しく機能しなくなったりする期間)は、評判の低下、ユーザーエクスペリエンスの低下、重大な経済的損失につながる可能性があります。
実際、98%の組織が、ダウンタイム・コストが1時間あたり10万ドルを超えていると最近報告しており、3分の1の組織は損失が100万ドルから500万ドルの間であると見積もっています。
レジリエントなアプリケーションを設計および実装することで、組織はこれらの中断を回避・軽減できます。
アプリケーションのレジリエンスは、2つの基本原則に左右されます。
レジリエントなアプリケーションは、アプリケーション・アーキテクチャーの脆弱性を軽減し、運用効率を向上させ、予期せぬ障害に直面しても一貫したユーザー・エクスペリエンスを確保する上で役立ちます。
IBMニュースレター
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。
レジリエントなアプリケーションを作成し、デプロイするために、開発者とITチームはアプリケーションのライフサイクルを通じて、いくつかのツールとプラクティスを用いることができます。
レジリエントなアプリケーションの一般的なコンポーネントには、以下が含まれます。
冗長性とは、重要なシステムのバックアップ・バージョンがあることを意味します。システムに障害が発生した場合、バックアップが引き継ぎ、システムの稼働を継続することができます。
たとえば、支払い処理サービスでは、多くの場合、そのサービスの複数のコピーが異なるサーバーで実行されます。あるサーバーがクラッシュしても、他のサーバー上のコピーが自動的にワークロードを引き継ぐので、顧客は問題に気づきません。
組織は多くの場合、主要領域で冗長性を構築します。
負荷分散では、ネットワーク・トラフィックを複数のサーバー間で効率的に分散し、アプリケーションの可用性を最適化します。これにより、システムは個々のコンポーネントに障害が発生したり、過負荷になったりした場合でも、パフォーマンスと可用性を維持できるため、アプリケーションのレジリエンスにとって負荷分散は重要です。
たとえば、1つのサーバーが応答しなくなった場合、ロード・バランサーはトラフィックを他の正常なサーバーに自動的にリダイレクトし、アプリケーションをオンラインに維持できます。
障害封じ込めは、分散システム内の重要コンポーネントを隔離する設計手法であり、局所的な問題がシステム全体の停止に連鎖することを防ぎます。
封じ込めはマイクロサービス・アーキテクチャーでは特に重要です。適切に封じ込められていない場合、1つのサービス内の障害が、他の多くの依存関係に急速に影響を及ぼす可能性があるからです。
サービス・メッシュは、エラーを封じ込める上で特に役立ちます。これらのインフラ・レイヤーは、分散アプリケーション内のマイクロサービス間の通信を管理できるようにサポートし、以下を提供します。
これらの機能を組み合わせることで、あるサービスの障害が他のサービスに広がらないようにすることができます。たとえば、電子商取引サイトで製品推奨エンジンに障害が発生した場合、サービス・メッシュはこの障害を検出し、問題のあるサービスへのリクエストの到達を停止し、状況に応じてトラフィックを再ルーティングできます。ユーザーは中断することなく閲覧や購入を継続できます。
可観測性により、チームはメトリック(応答時間などのパフォーマンス指標)、ログ(エラーやクラッシュなどのイベント記録)、トレース(リクエストがシステム内でたどる全体的な経路)という3つの主要な種類のデータを使用して、システムの正常性をリアルタイムで監視できます。
これらの信号を捕捉・分析することで、チームは異常を検知し、問題を迅速に診断し、ダウンタイムを減らすことができます。たとえば、顧客からWebページの読み込みが遅いという報告があった場合、オブザーバビリティー・ツールを使用することで、エンジニアは遅延の原因となったサービスまでリクエストを追跡し、より多くのユーザーに影響が及ぶ前に問題を修正できます。
自動化は、システムが手動による介入を必要とせずに問題に対応できるようにすることで、アプリケーション・レジリエンスにおいて重要な役割を果たします。
たとえば、オブザーバビリティー・ツールは問題を検知し、冗長性はバックアップ・リソースを提供します。自動化は、これらの機能を連携させ、復旧プロセスを調整します。効果的な自動化で、復旧時間を大幅に短縮し、何時間にも及ぶ可能性のある手動トラブルシューティングを数秒の自動応答に変えることができます。
アプリケーション・レジリエンスにおける主要な自動対応には次のようなものがあります。
コンテナ化されたアプリケーションを管理するためのオープンソース・システムであるKubernetesなどのツールは、オートメーションがレジリエンス・コンポーネントをどのように結び付けるのかを示します。Kubernetesは、組み込みの正常性チェックを通じて障害を検知し、正常なノード全体でワークロードを再スケジュールし、自動化されたワークフローを通じてサービスの継続性を維持できます。
グレースフル・デグラデーションには、主要な機能を維持しながら、ストレス時に不要な機能を取り除くことが含まれます。たとえば、ブラック・フライデーのトラフィックが急増している間、小売業者はショッピング・カートとチェックアウトが機能し続けることを確実にするために、顧客レビューやウィッシュ・リストを一時的に無効にする場合があります。
スケーラブルなアプリケーションは、ワークロードの需要に応じてリソースを自動的に調整できます。この機能は、トラフィックが変動する場合でも、性能と可用性を確保する上で役立ちます。
スケーラビリティはさまざまな方法で実現できます。たとえば、クラウドベースのプラットフォームは、組み込みのロード・バランサー、自動スケーリング、マルチリージョン複製(複数の地理的場所にデータとサービスをコピーし、パフォーマンスと信頼性を向上させること)などの機能を通じて拡張性を提供します。これらの機能により、サービスはトラフィックをインテリジェントに分散し、アップタイムを維持し、状況の変化に応じて復旧時間を最小限に抑えることができます。
たとえば、クラウドホスト型ストリーミング・プラットフォームが通常、100台のサーバーで動作しているとします。しかし、ライブ・グローバル・イベント中には、自動的に複数の地域にある10,000台のサーバーに拡張できるため、何百万人もの同時視聴者にスムーズな再生を提供できます。
ソフトウェア・アプリケーションは事業オペレーションと消費者の日常生活の両方に不可欠なものとなっているため、これらのアプリケーションが予期せぬ中断に耐え、ほぼすべての状況で機能し続けることが肝要です。
特に4つの要因が、アプリケーション・レジリエンスへの関心の高まりを後押ししています。
顧客は、デジタル・サービスが常に機能することを期待しています。Google社によると、モバイル・ページの読み込みに3秒以上かかる場合、訪問者の53%がそのページを放棄します。
銀行アプリ、eコマース・プラットフォーム、医療ポータルのいずれであっても、ダウンタイムは顧客の離脱、ソーシャル・メディアでの反発、永続的なブランドへのダメージを引き起こす可能性があります。アプリケーションの可用性は、技術的なメトリクスであるだけでなく、基本的なビジネス要件でもあります。
アプリケーションの停止は、あらゆる規模の組織にとってコストがかかる可能性があります。一般的なシナリオを考えてみましょう。ある小売ブランドがトラフィックの多いセールイベントを開始しましたが、需要が増えてチェックアウト・サービスに障害が発生するというシナリオを考えてみましょう。数分以内に何千件もの取引が停滞し、顧客が不満を感じるようになり、会社は収益を失います。
停止は、売上の損失だけでなく、修復費用やサービス・レベル契約(SLA)違反から規制上の罰金、顧客への補償、長期的なブランド毀損まで、一連の二次的コストを引き起こす可能性があります。
最近の注目度の高い事件は、その影響がどれほど大きいものになり得るのかを示しています。
最新のアプリケーション・アーキテクチャーには、マイクロサービス、マルチクラウド環境、コード・ライブラリーなど、多くの可動部分があります。これらのモジュール式コンポーネントは拡張性を向上させる一方で、潜在的な障害点の数も増やします。
回復力のある設計と実装がなければ、軽微な問題でもエスカレートする可能性があります。単一のマイクロサービス障害が発生すると、数十の依存関係に波及する可能性があります。たとえば、製品情報を保管するデータベース・サービスが機能を停止すると、検索、推奨、チェックアウトなどの他の機能が中断される可能性があります。
クラウド・リージョン間のネットワーク中断によって、サービスが断片化され、データの不整合が発生する可能性もあります。コンポーネントが完全に動作しなくなるマイクロサービスの障害とは異なり、こういった接続性の問題は「スプリット・ブレイン」のシナリオを生み出します。これは、アプリケーションの異なる部分は実行を続けますが、相互に通信できない状態です。
たとえば、金融取引アプリの注文システムがリアルタイムの料金体系データから切断されると、ユーザーに誤った見積もりが表示されたり、取引が失敗したりする可能性があります。
アプリケーション・プログラミング・インターフェース(API)の停止により、さらに重要な機能が損なわれる可能性があります。マイクロサービス障害は組織が管理する内部コンポーネントに影響を与えますが、API障害には、アプリケーションが依存しているものの、直接修正できないサードパーティ・サービスが関係します。たとえば、配達アプリのマッピング・サービスがダウンした場合、ユーザーはドライバーを追跡できず、ドライバーはルートを見つけることができないため、コア・アプリケーションが稼働し続けているにもかかわらず、エクスペリエンスが中断されます。
特定の分野や場所では、規制当局がデータの可用性、アプリの回復機能、データ損失の軽減、アップタイムに関して厳しい要件を設定しています。これらの要件により、アプリケーション・レジリエンスが技術的な目標からコンプライアンスの問題にまで高まります。
一部のデータ保護およびプライバシー法には、セキュリティ義務に加えて可用性の基準が含まれるようになりました。たとえば、一般データ保護規則(GDPR)では、個人データは保護され、アクセス可能であることが求められています。システム障害が発生した場合、組織は失われたデータを回復することが想定されています。
特に規制の厳しい業種・業務では、非常に厳格な基準が課せられています。
サーベンス・オクスリー法(SOX)では、災害復旧計画を明示的に義務付けてはいませんが、多くの組織では、この法律に準拠し、準拠を証明するために、バックアップ・システムと正式な復旧手順を維持しています。
金融機関はまた、事業継続性計画や復旧時間目標に関する詳細なガイドラインを提供する連邦金融機関検査協議会(FFIEC)などの団体からの、業界固有の規制や勧告にも直面しています。
医療保険の相互運用性と説明責任に関する法律(HIPAA)に基づき、対象となる事業体は、管理的、物理的、技術的な保護措置を実施して、electronic Protected Health Information(ePHI)の可用性と完全性を確保する必要があります。HIPAAでは24時間365日のアクセスを義務付けていませんが、治療のために必要な場合には、患者データへのアクセスを維持することを医療組織に義務付けています。
HIPAAセキュリティー・ルールでは、データのバックアップ・プラン、災害復旧手順および緊急モード・オペレーションが義務付けられており、多くの組織に高度なフェイルオーバーおよびデータ複製ストラテジーに投資することを促しています。
システムが現実世界の混乱に耐えられるようにするために、組織は継続的な測定と事前対応的なテストを組み合わせてアプリケーション・レジリエンスを検証します。これらのアプローチにより、チームはパフォーマンスを監視し、脆弱性を特定し、アプリケーションが迅速かつ効果的に回復できるかどうかを確認できます。
とりわけDevOpsチームは、継続的インテグレーション/継続的デリバリー・パイプライン(CI/CDパイプライン)にレジリエンス・プラクティスを頻繁に統合します。それにより、フェイルオーバー手順のテストを自動化し、構成の変更を検証し、不安定なデプロイメントをロールバックして問題を早期に発見し、中断によるユーザーへの影響を防ぐことができます。
組織は、アプリケーション・レジリエンスを評価する際に、いくつかの主要なメトリクスを参考にしています。
RTOは、システムが確実に復元されるまでに許容できる最長のダウンタイムです。RTOは復旧の期待値を定義する上で役立ち、災害復旧と事業継続性計画をサポートします。
組織は、ビジネス影響分析に基づいてRTOを設定します。つまり、オペレーション、収益、顧客体験に許容できない損害を引き起こす前に各システムがどのくらいの時間を停止できるかを判断します。
たとえば、決済処理システムのRTOを5分とすれば、内部レポート・ツールでは24時間まで許容されるような場合が考えられます。
MTTRは、障害発生後にサービスを復旧するまでに要する時間です。組織は、インシデント管理ツールや監視プラットフォームを使用して、障害検知からサービス復旧までの時間を自動的に追跡することでMTTRを測定します。MTTRが低いということは、復旧が速く、ユーザー・エクスペリエンスが向上することを意味します。
MTBFは、システム障害の発生間の平均稼働時間です。これは、どの程度の頻度で障害が発生するかについての洞察を提供するものであり、通常は自動監視システムやインシデント・ログで追跡される障害件数で総稼働時間を割ることで算出されます。
エラー・バジェットとは、サービス・レベル目標の中で許容されるダウンタイムのことです。エラー・バジェットを設定することで、チームはリスクを計算したうえで取ることができます。例えば、あるサービスが月間エラー・バジェットの20%しか消費していない場合、チームは新機能を積極的に展開できます。一方で、バジェットがほぼ使い果たされている場合は、安定性の向上に注力することになります。
レジリエンス・スコアカードは、冗長性、レイテンシー、復旧データを用いてアプリケーションのレジリエンスをベンチマークし、改善の機会を特定する包括的なレポートです。これらのスコアカードは通常、複数の監視ツールからメトリクスを集約する可観測性プラットフォームによって生成されます。
組織は、現実世界に近い視点を得るためにテストへとますます目を向けています。メトリクスが基盤を提供する一方で、テストは組織が理論上の備えから実証されたレジリエンスへと進むのに役立ちます。
カオス・エンジニアリングとは、サーバーのシャットダウン、レイテンシーの挿入、接続障害の強制といった制御された障害を意図的に発生させ、アプリケーションがストレス下でどのように復旧するかをテストする手法です。
例えば、Netflix社のChaos Monkeyのようなツールは、アプリケーション・インスタンスをランダムに終了させ、サービスが予期せぬ停止に耐えられるかをテストします。
ディザスター・シミュレーションは、大規模な障害や攻撃を模擬し、技術的な復旧、コミュニケーション、チーム間の連携を評価するフルスケールのシナリオです。
ランサムウェア攻撃やクラウド・リージョン障害といったシミュレーションは、組織がアプリケーション・アーキテクチャーをストレステストし、災害復旧計画におけるギャップを特定するのに役立ちます。
人工知能(AI)と機械学習(ML)は、組織のレジリエンスへの取り組み方を変革しています。これらのテクノロジーは、ダウンタイムを防ぐための強力な新しいツールをもたらす一方で、独自の課題ももたらします。
最大の課題の1つは、AIワークロードがリソースを大量に消費することです。多くのモデルはグラフィックス・プロセッシング・ユニット(GPU)に依存しており、GPUは高価であるだけでなく、クラウド・リージョン間で複製するのも困難です。そのため、レジリエンスの重要な要素である冗長性の実現が難しくなります。
AIシステムは、予期せぬ形で障害を起こすこともあります。時間の経過とともに精度が低下することがあり、これはモデル・ドリフトとして知られる問題です。また、システムを欺くように設計された悪意のあるデータ、いわゆる敵対的インプットに遭遇することもあります。このような障害は、予測や封じ込めがより困難となることがあります。
さらに、AI機能が遅延したり停止したりする場合があります。これはリソース制約やレイテンシーによってクラウド環境でよく発生する問題です。そのような場合でも、アプリケーションの残りの部分は信頼性をもって稼働し続けなければならず、優雅な劣化(グレースフル・デグラデーション)戦略への負担が一層高まります。
同時に、AIにはレジリエンスを強化するための重要なユースケースがあります。
要するに、AIは新たな複雑性をもたらす一方で、クラウド・ネイティブ環境やDevOpsパイプラインに統合されることで、より迅速な復旧、より高度な監視、そして全体としてよりレジリエントなアプリケーションを実現することも可能にします。
生成AI駆動型のテクノロジー自動化プラットフォームであるIBM Concertを使用することで、アプリケーション管理を合理化し、AIが生成した洞察を得て、行動に移すことができます。
フルスタックのオブザーバビリティーと自動化されたアプリケーション・リソース管理を橋渡しし、顧客体験に影響を与える前にパフォーマンスの問題に対処します。
複雑なハイブリッド環境やマルチクラウド環境を管理するための、IBM Consultingが提供する非常に革新的なサービスをご覧ください。