ec2 インスタンスの aws 垂直スケーリングは 1 日あたり 100,000 人のユーザーをサポートできますか?

ec2 インスタンスの aws 垂直スケーリングは 1 日あたり 100,000 人のユーザーをサポートできますか?

リンク共有サイト(reddit など)を運営しています。現在は godaddy デラックス共有ホスティングでホストされています。これを aws に移行する予定です。

1,000 万人のユーザーまで拡張する AWS ウェビナーを見たことがあります。しかし、基本的には、ある範囲を超えると垂直方向に拡張できなくなるので、最初から水平方向に拡張することを選択するようにとだけ書かれています。

1,000 万人のユーザーをサポートする必要はありません。毎日 10 万人のユーザーをサポートする必要があると仮定します。サイトの同時ユーザーは最大で 1,000 人程度でしょう。

使用事例

  • ユーザーはサイトへのリンクを投稿します。1000 人のユーザーのうち 1 人だけがリンクを投稿します。
  • ほとんどのユーザーは、サイト内でリンクを検索したり、説明を読んだりするだけです。
  • このサイトには毎日約5000件のコメントが投稿されます。
  • 主にテキストベースのサイトです。
  • ユーザーアバターとバナーを除いて、サイトには画像がほとんどありません。どちらも 2MB に制限されています。画像は DB に保存されます。
  • サインアップ、ログイン、アカウントなどのフォーラムの通常の機能が存在します。

計画された建築

  • 1 つの EC2 インスタンス
  • 1 つの RDS インスタンス
  • 1 ルート53ゾーン
  • 1 エラスティック IP
  • 1 s3 (バックアップのみ)

この簡単な方法を使用してスケーリングする予定です。たとえば、t2.micro から開始し、ユーザー ベースが拡大したら、ec2 インスタンスをアップグレードするだけです。RDS インスタンスについても同様です。

1 つの EC2 または RDS では単一障害点になることはわかっています。これらのいずれかが壊れた場合は、そのインスタンスを終了し、イメージ/バックアップから同一のインスタンスを起動する予定です。サイトが 30 日ごとに 1 時間オフラインになっても問題ありません。

私を助けてくれる人がおらず、これは一人で取り組んでいることを覚えておいてください。ユーザーに影響が出た場合は、AWS 側で助けてくれる人を見つけることができます。

  1. この方法で 100,000 人のユーザーをサポートできますか?
  2. 100,000 ユーザー/1000 同時ユーザーまで、どのブレークポイントで次の EC2 インスタンスにアップグレードする必要がありますか? (例: 同時ユーザー 5 名まで - t2.micro/db.t2.micro、同時ユーザー 40 名まで - EC2 インスタンス タイプ 2/Rds インスタンス タイプ 2 など)
  3. この計画を進める前に考慮していないこと、または考慮しなければならないことは他にありますか?

答え1

特定のシステムで Web アプリケーションが X 個のクライアントを処理できるかどうかを判断するのは非常に困難です。これは、アプリケーションの作成方法、使用されているフレームワークなど、多くの要因に大きく依存します。

最善の選択肢は、アプリケーションの使用状況をベンチマーク/シミュレートするために使用できるものを見つけることです。Web アプリケーションはすでに実行されているようなので、任意のサイズの ec2 インスタンスを短時間で簡単にセットアップし、いくつかのテストを実行してからシャットダウンすることができます。

水平方向に拡張できれば、将来の成長に対処するためのはるかに優れた方法が得られます。サイトがより大きなインスタンスで苦戦したり、100,000 を超える拡張が必要になったりしたらどうなるでしょうか。また、より大きなインスタンスに移行するだけでは、パフォーマンスが直線的に向上しない可能性が高いことに気付くかもしれません。

一つ目立つのは、

画像はDBに保存されます。

画像や、アプリケーション サーバーで処理する必要のないその他のデータは、他の場所に保存します。すでに AWS スタックを使用している場合は、画像やその他の静的データの保存場所として S3 が最適です。静的リソースにアプリケーション サーバーの時間を無駄にしないでください。

関連情報