キーワードで検索

今日を知り、明日を変えるシステム運用メディア

理想を追い求める!稼働率99.999999999%目指した3層構造のWEBアプリ構成を考える!

理想を追い求める!稼働率99.999999999%目指した3層構造のWEBアプリ構成を考える!

はじめに

現代のWEBアプリケーションにおいて、信頼性の高いシステム構築は重要な課題です。「落ちないサイト」を求められることが多い中、理想的な稼働率である99.999999999%を目指したシステム構成はどうなるのでしょうか?

本記事では、3層構造のWEBアプリケーションを題材に、各サービスのSLAを算出し、稼働率99.999999999%を目指した構成を考察します。さらに、その構成にかかるコストを試算し、どの程度の予算で実現可能か、また妥協した場合のコスト削減案を具体的にまとめております。

結果的には、運用だけで年間数千万円規模のランニングコストが必要であることがわかります。本来であれば、ランニングコストに加えて、導入コスト、さらには運用者の人件費もかかってきますので、導入だけで数億、人件費を加えたランニングコストは億に近づくことが予想できます。

この記事を通じて、システム設計や経営判断、もう少し身近な話として、役職者の説明時などで役立つ材料にしてもらえると幸いです。

前提条件

本構成は以下の前提に基づいて設計を行っています。

利用者数の想定・ 同時接続数:50,000ユーザー
・ 月間アクティブユーザー数:10,000,000人
データ数の想定・ 毎月のデータ生成量:50TB
・ 総データストレージ:500TB
想定されるアプリの種類・ 動画配信サービス
・ ECサイト
・ 金融取引プラットフォーム
セキュリティ要件・ トラフィックの暗号化(TLS 1.3対応)
・ DDoS対策(専用WAF利用)
・ 脅威インテリジェンスの活用
冗長性要件・ 最低5リージョン構成で、各リージョンに完全な冗長構成を実現
・ 障害時の自動フェイルオーバー

これらを基に、99.999999999%の稼働率を目指したシステム構成を検討します。

稼働率とダウンタイムの関係

まず、稼働率とダウンタイムの関係を整理します。稼働率を達成するには、ダウンタイムを最小限に抑える必要があります。

以下の表は、稼働率と年間ダウンタイムの関係を示したものです。

稼働率年間ダウンタイム月間ダウンタイム1週間のダウンタイム
99.9%8時間45分36秒約43分48秒約10分
99.99%52分36秒約4分23秒約1分
99.999%5分15秒約25.9秒約6.05秒
99.9999%31.5秒約2.63秒約0.61秒
99.999999999%31.5ミリ秒約2.63ミリ秒約0.61ミリ秒

稼働率が1桁上がるごとに、ダウンタイムが大幅に短縮されることがわかります。ただし、お察しの通り、これを実現するためのコストは指数的に増加します。

理想の3層WEBアプリ構成

構成の概要

稼働率99.999999999%を目指すためには、以下の3層構造が必要です。

※インフラのベースをAWSにしているのは、他サービスに比べて可用性が高いことを強みとしているため、外的要因によるシステムダウンを予防する可能性を少しでも高めるためです。

アプリケーション層

  • Kubernetesを利用したコンテナ化とオートスケーリング
  • 多リージョン展開 (最低5リージョン)
  • グローバルロードバランサーを利用

データベース層

  • マルチリージョン対応のRDBMS (Amazon Auroraなど)
  • 高速なキャッシュ層 (Redis Enterprise)

インフラ層

  • エッジネットワーク (CloudFrontやAWS Global Accelerator)
  • 冗長化されたサーバ構成

    各層の詳細構成

    アプリケーション層

    Kubernetesクラスタ・ 各リージョンに最新のインスタンスタイプである c7g.xlarge (Graviton3対応) を5ノードずつ配置
    ・ 負荷に応じたオートスケーリングでピーク時には25ノードまで拡張
    グローバルロードバランサー・ AWS Global Acceleratorを利用

    データベース層

    Amazon Aurora Multi-Region・ プライマリDBを1リージョンに配置し、他4リージョンにリードレプリカを展開
    ・ Aurora Global Databaseを活用し、高速なフェイルオーバーを実現
    Redis Enterprise Cloud・ マルチゾーン構成でキャッシュ性能を最大化

    ストレージ・キャッシュ

    Amazon S3・ 毎月のデータ生成量50TBに対応するため、合計150TB/月のストレージを確保
    CloudFront・ エッジキャッシュによる高速化を実現

    監視と運用

    Datadogモニタリング
    PagerDutyオンコール対応
    AWS Backup自動バックアップ

    構成イメージ

    理想構成のコスト詳細

    サービスコスト

    以下は、AWSやサードパーティのサービスを用いた場合の月額コスト試算です。

    サービスコスト計算月額コスト (USD)公式サイト
    EC2 (アプリ層)25ノード x $272 (c7g.xlarge)$272 × 25ノード = $6,800EC2価格ページ
    Aurora Multi-Regionプライマリ1台 + リードレプリカ4台($920 × 1) + ($345 × 4) = $2,300Aurora価格ページ
    Redis Enterprise150GBのマルチゾーン構成150GB × $16 = $2,400Redis価格ページ
    S3150TB/月150TB × $0.023 = $3,450S3価格ページ
    CloudFront50TBデータ転送/月50TB × $0.085 = $4,250CloudFront価格ページ
    AWS Global Accelerator基本料金 + リージョン使用料$100 + (5リージョン × $4) = $120Global Accelerator価格ページ
    Datadog100ホスト (1ホスト$18)$100 × 18 = $1,800Datadog価格ページ
    PagerDuty10ユーザー (1ユーザー$40)10ユーザー × $40 = $400PagerDuty価格ページ
    合計$21,520

    合計コスト

    • 月額総コスト: $21,520 (約300万円)
    • 年間総コスト: $258,240 (約3600万円)

    現実的な稼働率99.9%構成とコスト

    稼働率99.999999999%ではランニングコストのみで莫大な費用が掛かってしまうので、実際の落としどころとして、稼働率99.9%の構成も検討をしてみました。

    構成変更点

    リージョン数の削減5リージョンから2リージョンに削減
    リードレプリカ数の削減Auroraリードレプリカを1リージョンあたり1台のみに変更
    インスタンスタイプの変更EC2のインスタンスタイプを中性能なm6g.largeに変更
    監視コスト削減Datadogのホスト数を50に縮小

    新構成のコスト詳細

    サービスコスト計算月額コスト (USD)
    EC2 (アプリ層)10ノード x $96 (m6g.large)$960
    Aurora Multi-Regionプライマリ1台 + リードレプリカ1台$920
    Redis Enterprise50GBのマルチゾーン構成$800
    S350TB/月$1,150
    CloudFront20TBデータ転送/月$1,700
    AWS Global Accelerator基本料金 + リージョン使用料$60
    Datadog50ホスト (1ホスト$18)$900
    PagerDuty5ユーザー (1ユーザー$40)$200
    合計$6,690
    • 月額総コスト: $6,690 (約93万円)
    • 年間総コスト: $80,280 (約1116万円)

    稼働率99.9%のメリットとトレードオフ

    • コスト削減: 約75%のコスト削減。
    • ダウンタイム: 年間約8時間のダウンタイムが許容される。

    まとめ

    理想の構成 (99.999999999%)と現実的な構成 (99.9%)の、年間コストと稼働率をまとめると以下のようになります。

    理想の構成 (99.999999999%)・年間コスト: 約3600万円
    ・稼働率: 年間約31.5ミリ秒のダウンタイム
    現実的な構成 (99.9%)・年間コスト: 約1116万円
    ・稼働率: 年間約8時間のダウンタイム

    超高可用性システムを設計する際には、コストと可用性のバランスを適切に取ることが重要です。過剰なリスクヘッジや、興味本位だけでのチャレンジなど、現場で無理難題を押し付けられる場合は少なくありません。

    そのような場面では、今回の事例のを参考に試算していただき、コストモリモリの構成案と、妥協案(本命)を準備しておくことでより良い方向で進んでくれるはずです。

    Sler企業にて10年間WEBアプリ開発から経験を積み、現在はフルスタックエンジニアとして現場で働いています。アプリケーションから、インフラ含めた幅広い知見をベースにノウハウをアウトプットしていきます。実は生粋のジャンカーでジャンク品を買い漁っては修理して楽しんでいますので、ハードウェアにも片足踏み込んでます。

    最新情報をお届けします!

    最新のITトレンドやセキュリティ対策の情報を、メルマガでいち早く受け取りませんか?ぜひご登録ください

    メルマガ登録

    最新情報をお届けします!

    最新のITトレンドやセキュリティ対策の情報を、メルマガでいち早く受け取りませんか?ぜひご登録ください

    メルマガ登録