ウェブサイトのダウンタイムを最小限に抑えるためのベストプラクティス

最終更新日:
Engineer watching a wall of uptime monitoring dashboards showing a website recovering from downtime
ほとんどのダウンタイムは特別なものではありません。それは誰もリハーサルしなかった変更、依存関係、または急増です。

2025年10月20日、AWS us-east-1のDynamoDBエンドポイントに影響を及ぼすDNS解決の失敗が、Snapchat、Venmo、Roblox、そして何千もの小規模サービスに数時間の混乱を引き起こしました。これらのチームのいずれも、悪いホスティングを選んだり、監視を忘れたりしたわけではありません。一つの共通の依存関係が故障し、それに積み重なったすべてが同時にダウンしたのです。

これはウェブサイトのダウンタイムに関する不都合な真実です:それはめったにあなたが見ていたものから来るわけではありません。午後4時に失敗したデプロイ、土曜日に期限切れになったTLS証明書、オートスケーラーが30秒遅れて対応したトラフィックスパイクから来ます。「良いホストを選べ」という一般的なアドバイスはこれらのいずれにも通用しません。

ウェブサイトのダウンタイムを防ぎたいなら、以下の管理が効果的です:一つの障害が全体の停止を引き起こさない冗長性、フェイルオーバー可能なDNS、サイトの停止を必要としないデプロイ、急増に対応する準備、そして顧客に気づかれる前に知らせる監視です。

ダウンタイム1時間の実際のコスト

アップタイム目標はナインズ(9の連続)で表され、その背後にある算術は見た目より容赦がありません。ナインが1つ増えるごとに許容ダウンタイムは10分の1に減ります:

可用性 年間ダウンタイム 月間ダウンタイム
99%(「二つのナイン」) 3.65日 7.3時間
99.9%(「三つのナイン」) 8.77時間 43.8分
99.95% 4.38時間 21.9分
99.99%(「四つのナイン」) 52.6分 4.4分
99.999%(「五つのナイン」) 5.26分 26秒

これを金額に置き換えると賭け金は具体的になります。ITICの年次調査によると、中規模および大企業の90%以上でダウンタイムの時間単価が30万ドルを超えています。ご自身の数字は、多くのチームが想定するよりも簡単に推定できます:年間のオンライン収益を8,760で割ると基準となる1時間あたりの数字が出ますが、障害は通常の営業時間には発生しません。年間売上が500万ドルの店舗は、ランダムな1時間で約570ドル、ピーク販売時間ではその20倍を失い、SLAクレジット、復旧作業、戻ってこない顧客は含まれていません。

Chart showing allowed annual downtime dropping from 87.6 hours at 99 percent uptime to 5 minutes at 99.999 percent, while engineering cost climbs with each added nine
各ナインは許されるダウンタイムを10分の1に減らし、達成に要するエンジニアリングコストは不均衡に増加します。

この数学の実用的な使い方は2つあります。まず、意図的にターゲットを選びます:ほとんどのビジネスサイトには三つのナインが防御可能な目標、収益重要経路には四つのナイン、五つのナインはデフォルトではなく予算上の決定です。次に、ベンダーの約束がクレジットでどれだけ返金されるかを確認します。私たちのSLA違反計算機が変換を行い、ダウンタイムのコストに関するガイドは収益モデルをさらに深く掘り下げます。

なぜウェブサイトはダウンするのか

予防は原因の正直な棚卸しから始まります。ほとんどのウェブサイト障害は以下の5つの実用的なカテゴリーに分類されます:

  • 変更。デプロイ、設定変更、スキーママイグレーション、依存関係のアップグレード。GoogleのSRE調査では、約70%の障害がライブシステムの変更に起因しており、リリースプロセスがあなたが持つ最大のダウンタイムコントロールとなります。
  • 容量。 ランチ、キャンペーン、バイラル効果によるトラフィック急増がインフラの吸収能力を超える場合。
  • インフラストラクチャ。 ハードウェア障害、ホスト障害、ディスク満杯、プロバイダー内部のネットワーク分断。
  • 依存関係。 DNSプロバイダー、CDN、決済API、認証サービス、期限切れTLS証明書。2021年6月のFastly障害はReddit、gov.uk、およびNew York Timesを数秒でオフラインにしましたが、彼らは何も変更していませんでした。
  • 攻撃。 DDoS攻撃や脆弱性の悪用でスタックを圧倒または侵害するもの。

欠けているものに注目してください:「悪いホスティング」は単独のカテゴリーとして存在しません。ホスティングの品質は重要ですが、インフラストラクチャと容量の中に現れ、どんなプレミアムホストもあなた自身のデプロイやDNSプロバイダーの不調から守ってはくれません。以下の実践は意図的にこれら5つのバケットに対応しています。

冗長性を構築し、一つの障害は一つの障害に留める

冗長性はコンポーネント故障と障害の違いです。目標は簡単に言えますが到達には規律が必要です:ユーザーと収益の間に単一障害点を置かないこと。

Diagram of website redundancy layers: DNS with secondary provider, CDN edge, load balancer, duplicate app servers across availability zones, and replicated database
すべての層にセカンドパスが必要:DNS、エッジ、ロードバランサー、アプリケーション、データ。

スタックを層ごとに検討してください:

  • アプリケーションサーバー。 ロードバランサーの背後に少なくとも2つのインスタンスを稼働させ、ピーク時に1つ失っても耐えられる規模で(N+1ルール)。アベイラビリティゾーンにまたがって配置し、データセンターイベントで1つだけがダウンし両方でなくなることを防ぎます。
  • ヘルスチェック付きロードバランシング。 ロードバランサーはアプリケーションではなくポートだけを検証する場合にダウンタイムを防げません。トラフィックを処理できることを証明するレディネスURLをポイントし、データベースを使うフロー用の別の合成チェックを維持し、遅いインスタンスがユーザーに気づかれる前に除外される閾値を設定します。
  • データ。 自動フェイルオーバー付きのデータベースレプリカを運用し、バックアップは復元するまで未検証の噂と扱います。バックアップからの復旧時間は知っておくべき数値であり、発見するものではありません。
  • マルチリージョン。 高コストの層です。ほとんどのチームはアクティブ-アクティブ設定は不要ですが、複製で現在を保ちDNSフェイルオーバーで到達可能な別リージョンのウォームスタンバイは、地域のクラウド障害が数時間のダウンタイムから数分に変わることを可能にし、フェイルオーバーのテストが条件です。

一度もフェイルオーバーしたことのない冗長性は仮説であり、安全策ではありません。バックアップをスケジュールするようにフェイルオーバードリルを計画してください:本番時間に意図的にインスタンスを殺し、システムが回復するか見ます。

インシデント記録からの注意点:冗長インフラは制御プレーンを共有することが多いです。Fastlyは十分な冗長ハードを持っていましたが、一つの有効な顧客設定変更によって引き起こされた潜在的なソフトウェアバグが、約85%のグローバルネットワークに同時にエラーを送出しました。設定、デプロイツール、DNSは独自の冗長ストーリーが必要な層として扱いましょう。

Webアプリケーションホスティング時のダウンタイムリスクを減らす方法

ホスティングの選択はあなたのダウンタイムの最低ラインを決めます。どのプロバイダーと契約する前でも懐疑的にSLAを読むこと:99.9%は年間8.77時間の契約上許容されるダウンタイムを認め、その通常の救済は障害コストの一部に過ぎないサービスクレジットです。マーケティング数字を越えて運用のシグナルを見てください:正直なインシデント履歴を持つ公開ステータスページ、午前3時にエンジニアが応答するサポート、上述した冗長性を構築できるアーキテクチャの選択肢(アベイラビリティゾーン、ロードバランサー、オートスケーリング)があります。

その上でワークロードを意図的に配置しましょう。アプリケーションとデータベースを別インスタンスに分け、一方のメモリリークがもう一方を枯渇させないようにします。容量がマイグレーションなしでスケールできるプロバイダーとプランを優先してください。なぜなら追い込まれた状態でのリプラットフォームは小さな障害を長期にする原因になるからです。

現在のホスティングプロバイダーからより多くのアップタイムを得る方法

ダウンタイムリスクを減らすために移行が必要なことはめったにありません。ほとんどのプロバイダーはすでにツールを提供していますが、ほとんどの場合デフォルトで有効にしていません。効果の順に:

  1. ステップ1:自動バックアップをオンにし、復元テストを行う。 時間を計測してください。その時間が最悪の復旧時間となり、インシデント中に6時間かかることを知るのは高コストな学び方です。
  2. ステップ2:プロバイダーのロードバランサーの背後に2つ目のアプリケーションインスタンスを追加する。 控えめなプランでも通常はチェックボックスと数ドルで済み、インスタンス障害をアウトストップから非イベントに変えます。
  3. ステップ3:サイトの前にCDNを配置する。 キャッシュページは特にstale-if-error設定で、オリジンが苦しむ間も配信が続き、急増と短時間の障害両方を緩和します。
  4. ステップ4:2インスタンスを下限とするオートスケーリングを有効にする。 1インスタンス開始ではオートスケーリングが稼働する前にすでにサイトは劣化しています。
  5. ステップ5:プロバイダーのネットワーク外から監視する。 ホストのステータスダッシュボードは障害に遅れがちで、あなたの影響を特定しません。外部の可用性監視はプロバイダーの内部ビューで見えないものを捕捉します。
  6. ステップ6:必要になる前にエスカレーション経路を学ぶ。 実際のサポートへの連絡方法、プランで認められるもの、プロバイダーのインシデント更新の公開場所を把握します。

DNSを単一障害点ではなく回復力の層にする

DNSは故障がまれなためチームが忘れがちな層であり、DNSが壊れるとすべてが壊れます:完璧なサーバー、健全なデータベース、そして一人のユーザーも到達できない状態に。2016年のDynへのDDoS攻撃がこれを明確にしました。Twitter、Spotify、GitHubが数時間消えましたが、第二DNSプロバイダーを持つ企業は到達可能なままでした。

DNSを隠れた負債から積極的防御に変える3つの方法:

  • セカンダリDNSプロバイダーを運用する。 ゾーンを自動同期する2つ目の権威あるプロバイダーを設定。大半の再帰的リゾルバーは2番目のネームサーバーセットを独自に再試行するため、1つのプロバイダー喪失は通常はサポートチケットと引き換えに留まり、到達不能には至りません。
  • 俊敏性のためにTTLを設定する。 メインのAレコードに24時間のTTLがあるとフェイルオーバー完了に最大1日かかります。変更が予想されるレコードは300秒以下にし、予定されたマイグレーション前にTTLを下げておきます。
  • ヘルスチェック付きのDNSフェイルオーバーを使う。 ほとんどのマネージドDNSサービスはオリジンをプローブし、待機IPかリージョンへ自動的にレコードを切り替えます。冗長性章のウォームスタンバイと組合せると、これがマルチリージョンの実際のフェイルオーバーメカニズムになります。

そしてループを閉じます:解決問題はあなたのネットワーク内からは見えませんので、複数の外部視点からのDNS監視が、実際のユーザーがいる場所で正しく応答していることを確認する実用的な方法です。

サイトを停止せずに更新する方法

変更がほとんどの障害の原因であるため、このガイドで最も効果的な実践は停止を不要とし数秒で元に戻せるリリースプロセスです。

日常のコンテンツ更新は基準が簡単です:CMSを通じた公開は可用性に一切触れてはいけません。CDNまたはフルページキャッシュを通じてページを配信し、サイトのコピーで変更をステージングし原子性でライブ反映します。プラグインやテーマ更新のようなリスクの高い作業は、最初にステージング環境で行い、常に非ピーク時間にスケジュールします。

アプリケーションリリースでは、業界標準のパターンはライブ版と並行してデプロイすることです:

  1. ステップ1:並行環境を立ち上げる。 ブルーグリーンデプロイメントは2つの同一の本番環境を保ち、一方はライブで一方はアイドル。オーケストレーションプラットフォームを使うチームは、インスタンス単位のローリングリプレースメントも用います;原則は同じで、常にどれかのバージョンがトラフィックを処理しています。
  2. ステップ2:データベース変更を後方互換にする。 スキーママイグレーションが「ただロールバック」の失敗原因です。拡張・縮小パターンを使い:まず新しい列やテーブルを追加し、新旧両形態に対応可能なコードをリリースし、何も参照がなくなった時点で古い構造を後続リリースで削除します。
  3. ステップ3:アイドル環境にデプロイする。 またはインスタンスの5~10%のカナリー版へ。ユーザーは現バージョンにアクセスし続け、新バージョンは起動しキャッシュを温め依存先に接続します。
  4. ステップ4:トラフィック到着前にスモークテストを行う。 合成チェックで新バージョンを打診:主要ページのロード、スクリプト化したログイン及びチェックアウト、API応答の検証。ここで失敗したリリースは再デプロイ以外にコストをかけません。
  5. ステップ5:トラフィックを徐々に移行する。 ロードバランサーの重み付けで10%、エラーレートと応答時間を旧バージョンと比較観察、安定すれば50%、100%へ進めます。
  6. ステップ6:即時ロールバックを準備する。 リリースが証明されるまで以前の環境を稼働させ続けます。ロールバックは数秒で済むトラフィックスイッチであり、一時間かかる再構築ではありません。

本当のメンテナンスダウンタイムが避けられない場合は正直にしましょう:HTTP 503とRetry-Afterヘッダーを返し検索エンジンに一時ウィンドウと伝え、ユーザーにいつ戻るかを示すページを表示し、事前に発表します。計画された20分間のウィンドウを良く伝えれば、説明のない5分よりもずっとダメージは少ないです。

トラフィック急増時のウェブサイトダウンタイム防止法

トラフィック急増は最も予測可能なダウンタイム原因で、通常は自分で作り出します:製品ローンチ、キャンペーン、セール、リスト全体へのメール。これを乗り切るのは運ではなくリハーサルの問題です。

  • エッジへの処理移行。 CDNでキャッシュされたページはオリジンを平らにするような急増を吸収できます。数百回のオリジンリクエストを数回に減らすことは、新しいサーバー追加の慌てを急増無視に変えます。
  • 計画イベントのための事前スケール。 オートスケーリングは数分で反応しますが、テレビ広告の急増は数秒で到達します。予測できるイベントには事前に予測容量までスケールし、その後オートスケーリングに誤差処理を任せましょう。
  • 予測の2~3倍で負荷テスト。 予測は通常低めです。予想ピークを超えるテストで本当のボトルネックが判明しますが、たいていはウェブ層ではなくデータベース、内部API、負荷下で直列化するサードパーティコールです。
  • 超過分のキューイング。 極端なイベントでは、待機室がサステナブルな率でユーザーを入場させ、サイトを入場許可者全員に機能させ続け、全員ダウンより優れます。
  • グレースフルに劣化。 負荷下で推奨機能、検索提案、パーソナライズを削減できるよう機能フラグを配線し、チェックアウトは稼働継続。何が最初に停止するかの決定は事前に冷静に行う構築時の設計事項です。

監視とアラート:ユーザーより早く知る

上述のすべての実践はダウンタイムの確率を減らします。監視はその継続時間を制限します。総ダウンタイムは検知時間+対応時間+修復時間で、検知は圧縮が最も安価です。

監視層は以下の順に構築します:

  1. ステップ1:複数地域から外部で可用性をチェック。 内部監視はインフラと運命を共にしそれと共に死にます。複数地理的ロケーションからの独立した合成監視は地域障害やプロバイダー問題を捉え、あなたのダッシュボードの見えないものを検出します。チェックが場所間でどうローテートするかも重要です:同時監視とラウンドロビン監視でトレードオフを解説しています。
  2. ステップ2:ホームページだけでなく、障害しうるすべての層をチェック。 ホームページの200は、チェックアウトが壊れていても証明になりません。DNS解決、TLS証明書の有効期限、フロントエンド依存API、ログイン・購入などのブラウザでの完全なユーザートランザクションを監視します。
  3. ステップ3:チェック頻度をアップタイム目標に合わせる。 5分間隔チェックは月4.4分のダウンタイムを許す四つのナインのSLA防御に不十分です。収益経路は1分間隔、他は緩やかにします。
  4. ステップ4:症状で警告し、誰かを起こす前に検証。 ユーザーに見える障害に対してオンコールエンジニアをページし、CPUの揺らぎで起こさない。警告発火前に別の場所からの確認を要求し、多くの誤検知を排除します。ウェブサイト監視アラートガイドはエスカレーション設計とノイズ削減を深く扱っています。

自身のスタックで算術を試してください:5分チェック+15分人間対応=修復開始前に20分のダウンタイム。1分チェック+厳格なエスカレーション経路で同じインシデントは5分以内に縮みます。

インシデント対応:防げなかったダウンタイムを縮める

いくつかのダウンタイムは必ず起こり、それに備えるチームは回復を大幅に速めます。3つの要素が多くの作業を担います:

  • 予測可能な障害用のランブック。 証明書期限切れ、データベースフェイルオーバー、リージョンダウン、進行中のDDoS:各ケースに正確なコマンドと意思決定ポイントのチェックリスト。午前3時には即興対応は通用しません。
  • 実際に更新するステータスページ。 障害中の沈黙は評判コストを増幅します。数分以内に認め、決まった間隔で更新し、人間的な文体を保ちます。
  • 期限付きのブレームレスポストモーテム。 すべてのインシデントには責任者と期限付きのアクションアイテムが生まれ、そうでなければ再発します。検知平均時間と復旧平均時間を四半期ごとに追跡し、システム全体の改善を確認します。

Dotcom-Monitorがダウンタイム最小化をどのように支援するか

Dotcom-Monitorはこのガイドが説明するすべての検知層です:グローバルネットワークの監視ロケーションからサイトを監視する稼働監視プラットフォームで、自身のインフラでは提供できない外部視点をもたらします。

  • 実ブラウザ監視。 外部の監視拠点から実際のブラウザインスタンスでページをロードし、レンダリング時間、要素レベルのエラー、問題発生時のワーターフォールチャートと動画をキャプチャします。
  • EveryStepスクリプトによるトランザクション監視。 ログイン、検索、チェックアウトなどの多段フローを記録し、複数地域からWebアプリケーション監視で継続再生します。これはデプロイメント章のスモークテストです。
  • マルチプロトコル対応。 HTTP(S)、REST及びSOAP API、DNS解決、TLS証明書の有効性・期限、FTP、メール、TCP/ICMPインフラチェックをカバーし、依存層もページと並んで監視します。
  • 稼働監視用のアラート機能。 複数拠点の検証後に警告発火、エスカレーショングループ、オンコールが使うページングやチャットツールとの連携があります。

検知時間はダウンタイム方程式の最初の数値です。Dotcom-Monitorはそれを最小化するために存在します。

結論

ウェブサイトのダウンタイム最小化は一つの決定ではなく複数の積み重ねです:コンポーネント故障は見えなくする冗長性、全員が忘れがちで消去されてはならない層としてのセカンダリDNS、最も一般的な障害原因(自身の変更)を停止させるブルーグリーンリリース、自分で作り出す急増に備えたリハーサル済み容量、そして事態を分単位で計測する外部監視です。

まずはコスト最小の勝利から始めましょう:今週バックアップ復元テスト、今日DNS TTLの確認、次のデプロイ前に収益経路への外部チェック設置。防いだ1時間のダウンタイムはこれら各作業の午後の時間より価値があります。

ユーザーより先にあなたのダウンタイムを知る

グローバルネットワークから実ブラウザ稼働監視をあなたのサイトに設置、警告は発火前に検証します。フルプラットフォーム、無料トライアル、クレジットカード不要。無料トライアルを始める

よくある質問

ダウンタイムを最小限に抑えながら、ウェブサイトのコンテンツをどのように更新できますか?
CMSを通じた公開はダウンタイムを必要とすべきではありません:CDNや全ページキャッシュからページを配信し、サイトのコピー上で変更をステージングし、それらを原子的にライブに反映させます。ブルーグリーンまたはローリングデプロイメントでコードを配信し、常に一つのバージョンがトラフィックを提供するようにします。メンテナンスウィンドウが本当に避けられない場合は、検索エンジンが一時的と認識するように、Retry-Afterヘッダー付きHTTP 503を返してください。
ウェブアプリケーションをホスティングする際のダウンタイムリスクをどのように減らせますか?
少なくとも2つのアプリケーションインスタンスをヘルスチェックされたロードバランサーの背後で実行し、データベースはテスト済みのレプリカを備えた別のインフラストラクチャ上に配置し、オートスケーリングを有効にし、バックアップを1つ復元して検証してください。プロバイダーのSLAを読み、実際に何を保証しているかを確認し、プロバイダーのネットワーク外から監視を行って、プロバイダーの障害があなたの障害を隠せないようにしてください。
現在のウェブホスティングプロバイダーでダウンタイムをどのように減らせますか?
通常は移行なしで:プロバイダーのロードバランサーの背後に2番目のインスタンスを追加し、自動バックアップをオンにしてテスト復元の時間を計測し、サイトの前にCDNを配置し、既知のエスカレーションパスを持つサポート付きの外部稼働時間監視を設定します。ほとんどのホストはこれらのコントロールを提供していますが、自動で有効にすることはほとんどありません。
トラフィック増加時のウェブサイトのダウンタイムを防ぐにはどうすればよいですか?
CDNで積極的にキャッシュし、オリジンの負荷を大幅に減らし、計画されたイベント前に事前スケールを行い、リアクティブな自動スケーリングに依存せず、予測されるピークの2〜3倍でロードテストを実施し、極端なスパイク時には待機室でオーバーフロートラフィックをキューイングし、チェックアウトが稼働中に非重要な機能を削減するために機能フラグを使用します。
ウェブサイトの高い稼働時間を維持するためのベストプラクティスは何ですか?
あらゆるレイヤーで単一障害点を排除し、重要なレコードには短いTTLでセカンダリDNSプロバイダーを運用し、ブルーグリーンまたはローリングデプロイメントで即時ロールバックを可能にし、ロードテストでピーク時をリハーサルし、複数の地域から外部で監視を行い、数分で人に届くアラートを設定し、すべてのインシデントを所有されたアクションアイテムを生み出すポストモーテムで終了させます。
ウェブサイトの通常のダウンタイムはどのくらいですか?
ビジネスサイトに典型的な99.9%の目標は、年間約8.8時間を許容します。4ナインでは53分、5ナインでは約5分で、それぞれナインを追加するごとにコストが急激に増加します。ほとんどのチームは収益経路に3ナインまたは4ナインを設定し、差額をより迅速な検出と復旧に費やします。
Matthew Schmitz
About the Author
Matthew Schmitz
Dotcom-Monitor 負荷テストおよびパフォーマンステスト担当ディレクター

Dotcom-Monitor の負荷テストおよびパフォーマンステスト担当ディレクターとして、Matt は現在、優秀なエンジニアや開発者のチームを率い、最も要求の厳しいエンタープライズニーズに対応する最先端の負荷テストおよびパフォーマンステストソリューションの開発に取り組んでいます。

Latest Web Performance Articles​

電話番号の監視方法

電話回線の無音停止を防止。運用チームがSIPチェックと内線テストをどのように活用して顧客回線を円滑に保っているかをご覧ください。

Dotcom-Monitorを無料で開始する

クレジットカード不要