Stack Overflowや他のブログで読んだ内容は、
https://hackernoon.com/database-scaling-horizontal-and-vertical-scaling-85edd2fd9944
https://stackoverflow.com/questions/27157227/can-relational-database-scale-horizontally
コンセプト: マルチテナント Web アプリ (CRM)
上記のブログをまとめると、混乱してしまいました。次のようなシナリオがあります。
- 1 つの製品に複数の EC2 インスタンスと RDS インスタンスを用意する - ここでは、1 つの EC2 インスタンスに 1 つの RDS とフェイルオーバー プランを用意することを計画しました。図を見てみましょう。25 のテナントのリクエストは 1 つの EC2 インスタンスで処理され、データは対応する RDS で管理されます。別の 25 のテナントのセットには、別の EC2 インスタンスと RDS が管理されます。各 EC2 インスタンスは同じコード ベースを持ちます。
これは水平スケーリングだと言えますか? そうでない場合、正確な水平スケーリングを実現するには何をすべきでしょうか?
答え1
水平スケーリング通常は、艦隊を持っていることを意味します区別のないサーバー各サーバーがサービスを提供できる場所どれでもリクエストに応じて、同じサーバーを追加または削除することで、容量を拡大または縮小します。
と垂直スケーリング1 台のサーバーを、より多くの CPU とメモリを備えたより大きなインスタンスなど、より大きな容量にアップグレードするだけです。
AWS での水平スケーリングでは、通常、次のようになります。
- 艦隊のステートレスサーバーすべて同じ方法で設定されており、ユーザーデータ追加の構成なしで自動的に追加でき、データを失うことなくいつでも削除できます。
- ユーザーデータはデータベース(例:RDS)、共有ファイルシステム(例:EFS)またはオブジェクトストレージ(例: S3) 実際のサーバー上ではありません。
- ロードバランサー負荷をサーバー間でほぼ均等に分散する(例:EC2インスタンス、Fargateコンテナなど)
- 自動容量スケーリングつまり、実際の負荷に基づいてサーバーを追加および削除します。
定義は様々ですが、単に別のインスタンスを追加してサポートするだけで、セットアップを水平スケーリングと呼ぶことはできません。独立した作業負荷(他のテナント セット) であり、最初のノードと同じワークロードをサポートするために容量が追加されていません。
お役に立てれば幸いです :)