ウェブサイトのアップタイム99.99%を達成する方法

99.99%のアップタイムを達成するには、次のような多層的な戦略が必要です。 冗長性, 自動フェイルオーバーそして プロアクティブモニタリング.これは、個々のサーバーからデータセンター全体に至るまで、手作業による介入なしに障害に対処できるようにインフラを設計することを意味します。主なコンポーネントには、複数のサーバーにまたがるロードバランシング、リアルタイムでのデータベースの複製、トラフィックを分散するためのコンテンツ・デリバリー・ネットワーク(CDN)の使用、堅牢な災害復旧および監視システムの実装などがあります。

99.99%アップタイムは不可能な夢?いいえ。現実にする方法がここにあります。

CTOとCEOの皆さん、こんにちは。率直な話をしましょう。あなたは、製品ロードマップからチーム管理まで、100万ものことを抱えています。ウェブサイトがダウンしたからといって、夜中の2時に電話するのは一番避けたいことです。もう一度。😫

"高可用性 "というバズワードを耳にしたことがあるだろう。クラウド・プロバイダーからの約束も目にしたことがあるだろう。しかし、憧れの稼働率「9分の4」を達成するためには、実際には何が必要なのだろうか?それはハイテク大企業だけに許された暗黒の技術なのだろうか?

絶対ダメ。達成する 99.99%アップタイム はかつてないほどアクセスしやすくなっているが、そのためには戦略的な転換が必要である。 反応 問題への レジリエンスのためのデザイン.それは、失敗を予期し、顧客に気づかれることなくそれを潔く処理するシステムを構築することだ。

このガイドでは、あなたのビジネスでフォーナインを実現するために必要な、実践的で気負いのない戦略を解説する。

99.99%アップタイムの実際の意味は?

どのように "の前に、"何を "を明確にしよう。「フォーナイン」と言えば印象的に聞こえるが、数字がそれを具体的なものにしてくれる。

  • 99%のアップタイム(「Two Nines」): これによって、約 3.65日 年間ダウンタイムのこれは月に7時間以上に相当する。ほとんどのオンラインビジネスにとって、これは受け入れがたいことです。
  • 99.9%アップタイム(「スリーナイン」): 今、我々は 8.77時間 のダウンタイムが発生する可能性がある。それでも、ピーク時に43分のダウンタイムが発生すれば、収益と評判に壊滅的な打撃を与えかねない。
  • 99.99%アップタイム(「フォーナインズ」): これは、ほとんどのビジネスにとってのゴールドスタンダードである。つまり 52.6分 ダウンタイム 年間.月に換算すると4分半にも満たない。
  • 99.999%アップタイム(「ファイブナイン」): これは通常、通信ネットワークや病院の生命維持装置のようなクリティカルなシステムに限られる。これによって 5.26分 年間ダウンタイムの

貴社にとって、99.99%の目標を達成することは、1年に1時間を除いて、貴社のサービスが利用可能であることを意味します。これは顧客に対する強力な約束であり、貴社にとっても大きなストレス軽減となります。

コア・プリンシプルすべてが失敗すると想定する

高可用性に必要な基本的な考え方の転換はこうだ: 失敗を防ごうとするのをやめ、失敗が起こることを想定し始める.ハードウェアの故障。ネットワークが混雑する。若手開発者がバグのあるコードを本番環境にプッシュしてしまう。

レジリエントなシステムは、こうしたことが起こらないふりはしない。崩壊することなく、これらの衝撃を吸収するように設計されているのだ。これは主に以下によって達成される。 冗長性 そして 自動フェイルオーバー.

要塞の構築99.99%アップタイムのための主要戦略

辞めないインフラを構築する準備はできていますか?そのために必要な柱をご紹介します。

1.ロードバランシングによるマスターの冗長化

決して単一のサーバーに頼ってはいけない。それは もし 失敗するだろうが いつ.

解決策は 冗長性.最も単純に言えば、これは少なくとも2つのウェブサーバが同時にアプリケーションを実行することを意味します。しかし、2つのサーバーがあるだけでは十分ではありません。ユーザーを健全なサーバーに誘導するためのトラフィックコップが必要です。そこで ロードバランサ が入ってくる。

ロードバランサーはサーバーの前に置かれ、入ってくるトラフィックをサーバー間で分散する。さらに重要なのは、常にヘルスチェックを行うことだ。もしサーバーAが応答しないことを検知すると、即座にそのサーバーへのトラフィックの送信を停止し、すべての新しいリクエストを健全なサーバーBにリダイレクトします。🚀

プロのアドバイス サーバーレベルで止まってはいけません。ロードバランサーも冗長化されていることを確認してください!AWS、Google Cloud、Azureのような最新のクラウド・プロバイダーは、複数の「アベイラビリティ・ゾーン」(基本的に同じ地域の異なるデータセンター)にまたがって本質的に高い可用性を持つマネージド・ロードバランサー・サービスを提供している。

2.データベースを防弾仕様にする

アプリケーションは稼働していても、データベースにアクセスできなければ、事実上ダウンしていることになる。従来のアーキテクチャでは、データベースが最大の障害ポイントになることが多い。

高可用性を実現するには 複製データベースのセットアップ.最も一般的な構成は プライマリ-セカンダリ(またはマスター-スレーブ)モデル:

  • プライマリー・データベース すべての書き込み操作(挿入、更新、削除)を処理する。
  • 二次データベース プライマリのリアルタイムの読み取り専用コピー。プライマリに加えられたすべての変更は、即座にセカンダリに複製される。

アプリケーションは、すべての読み取りクエリ(データベーストラフィックの80-90%を占めることが多い)をセカンダリデータベースに送信するように構成することができ、プライマリデータベースの負荷を軽減することができます。

プライマリ・データベースに障害が発生した場合は 自動フェイルオーバー プロセスは、数秒でセカンダリを新しいプライマリに「昇格」させることができる。このプロセスはほぼ瞬時に行われるため、移行中に一部の書き込み操作が失敗する可能性はあるが、サイトはほぼ稼動したままである。

3.コンテンツ・デリバリー・ネットワーク(CDN)を利用する

CDNは、パフォーマンスとアップタイムの両方にとって、最もお得な投資の1つです。CDNは、静的コンテンツ(画像、CSS、JavaScriptファイル)をユーザーの近くにキャッシュするエッジサーバーのグローバルネットワークです。

これはアップタイムにどう役立つのか?

  1. オリジンの負荷を軽減 キャッシュからコンテンツを提供することで、CDNはコア・インフラストラクチャを襲うリクエストの数を劇的に減らします。リクエスト数が減るということは、サーバー、ロードバランサー、データベースへの負担が減るということであり、サーバーがダウンする可能性が低くなります。
  2. トラフィックの急増を吸収 大手ニュースサイトで紹介されると、その結果トラフィックが急増し、通常のサーバーを圧倒することがあります。CDNはこの負荷の多くを吸収し、汗をかくことなくキャッシュされたコンテンツを提供することができる。
  3. 保護シールドとして機能する: 多くのCDNには DDoS(分散型サービス拒否)対策.DDoS攻撃は、悪意のあるトラフィックでサイトを溢れさせることで、サイトをオフラインにしようとするものです。優れたCDNは、このトラフィックがお客様のインフラに到達する前に、「エッジ」で検知しブロックすることができます。

4.プロアクティブモニタリングとインテリジェントアラート

壊れていることを知らないものは直せない。あなたのサイトがダウンしているという顧客からのメールを待つことは、大惨事のもとです。堅牢な モニタリングとアラート 問題を教えてくれるシステム 以前 それらは停電になる。

モニタリングは、スタックのすべてのレイヤーをカバーする必要がある:

  • インフラの指標: CPU使用率、メモリ、ディスク容量。CPU > 95% for 10 minutes "のアラートは、クラッシュが迫っていることを警告します。
  • アプリケーション・パフォーマンス・モニタリング(APM): Datadog、New Relic、または Sentry のようなツールは、アプリケーションレベルのエラー、遅いデータベースクエリ、トランザクション時間を追跡することができます。p99 latency > 2 seconds "のアラートは、ユーザが現在遅いエクスペリエンスを持っていることを知らせます。
  • 外部のアップタイムチェック: PingdomやUptimeRobotのようなサービスを使って、1分ごとに世界中の複数の場所からウェブサイトにpingを送信しましょう。これにより、あなたのサイトが本当に到達不能かどうかを最初に知ることができます。

重要なのは インテリジェント・アラート.何かが100%ダウンしたときにアラートを出すだけではいけません。重要なメトリクスが警告のしきい値を超えたときにチームに通知する早期警告アラートを作成し、介入する時間を与えましょう。

5.スマートな展開:ビッグバン・リリースはもういらない

間違ったコード展開が招いた自業自得の停電はどれくらいあるのだろうか?たくさんある。大規模なアップデートをプッシュして最善を望むという古いやり方は、リスクが高すぎる。最新のCI/CD(継続的インテグレーション/継続的デプロイメント)プラクティスは、より安全な代替手段を提供する。

  • ブルー・グリーンの展開: あなたは "Blue "と "Green "という2つの同じ本番環境を維持している。もし "Blue "が現在稼働中なら、あなたは新しいコードを "Green "にデプロイする。グリーンを内部でテストした後、ルーター/ロードバランサーを切り替えて、すべてのトラフィックを新しいグリーン環境に送る。何か問題が起きたら、即座にブルーに戻すことができる。
  • カナリア配備: あなたは新しいコードを少数のユーザー("カナリア")にリリースする。1%のトラフィックを新しいバージョンにルーティングし、エラーがないか注意深く監視する。すべてがうまくいったら、トラフィックを10%、50%、そして最後に100%と徐々に増やしていく。このアプローチでは、不良なデプロイの爆発半径を制限することができます。

6.強固なバックアップと災害復旧(DR)計画

冗長性は小さな障害に対応する。A 災害復旧(DR)計画 大災害への対応もし、火災や洪水、大規模なネットワーク障害によって、あなたが運用しているクラウド地域全体がオフラインになったらどうする?(それは起こる!)。

バックアップはDRの一部ではあるが、同じものではない。

  • バックアップ は、データの完全性(例えば、削除されたファイルの復元)のためである。
  • 災害復旧 は事業継続性(例えば、事業全体を別の地域に移すなど)についてである。

優れたDR計画には、インフラとデータを地理的に離れたセカンダリー・リージョンにレプリケートすることが含まれます。地域で障害が発生した場合、DR計画を実行し、セカンダリ地域でサービスをオンラインにすることができます。この計画を定期的にテストすることは、計画を立てることと同じくらい重要です。


フォーナインズへの第一歩

これを読むと圧倒されるように感じるかもしれませんが、一晩で海を沸騰させる必要はありません。99.99%のアップタイムを達成することは、漸進的な改善の旅なのです。

  1. 現在のセットアップを監査する: 今、単一障害点はどこにありますか?単一のウェブサーバーでしょうか?単一のデータベースですか?そこから始めましょう。
  2. モニタリングを実施する: 他に何もしないのであれば、強固なモニタリングとアラートを設定する。可視化はコントロールへの第一歩である。
  3. 最大のリスクに優先順位をつける: 最も可能性が高く、最も影響の大きい障害に最初に取り組む。ほとんどの企業にとって、これはロードバランサーと複製データベースの導入を意味する。

可用性の高いシステムを構築することは投資ですが、顧客の信頼、ブランドの評判、そしてあなた自身の心の平穏という見返りは計り知れません。消火活動をやめて、要塞の構築を始めましょう。未来の自分があなたに感謝するでしょう。