スケーラビリティと弾力性の違い【リファクタリング解説3】

この記事の説明

システムにおけるスケーラビリティと弾力性の違いを説明するサイトです。また、スケーラビリティ/弾力性を高めるためにはどのようなシステム構成にするべきなのか、どのようなシステムがスケーラビリティが高いと言えるのかについても触れていきます。

スケーラビリティと弾力性の違い

スケーラビリティとは、

時間の経過とともにユーザー負荷が徐々に増加しても健全に応答性を持続できる能力を指す。

反対に、スケーラビリティに関連する言葉であり、そしてよく混同されがちな言葉に弾力性がある。 弾力性とは、

ユーザー負荷が瞬間的かつ不規則に変化する状況でも健全に応答性を持続できる能力のことである。

どちらも同時リクエスト数に関連した応答性にまつわる言葉であるが、本質は決定的に異なる。

弾力性とは?

弾力性が高いシステムとはどのようなシステムだろうか。

具体的には、次のようなシステムだ。

  • オンラインのコンサートチケット販売システム

  • オークションシステム

これらの例はいずれも高パフォーマンス、高スケーラビリティ、高レベルの弾力性が求められる。 応答性を維持するために、システムはユーザー負荷が高いピークに対応する能力とともに、 トラフィックの急増に対応できるサービスを瞬時に立ち上げる能力が求められる。 弾力性は不規則な変化に対応できるかどうかが鍵だ。

from https://note.com/messhi/n/nde3319d5416e

スケーラビリティとは?

反対に、スケーラビリティが高いシステムはどのようなシステムだろうか

具体的には、次のようなシステムだ

いずれもウェブサイトのデータベースに保存される会員の数など、緩やかに増加するのが特徴だ。

from https://diamond.jp/articles/-/252314

スタートアップの立ち上げ時から同じサービスを使い続け、ユーザー数の増加に対応するのは難しいだろう。 データベースのサイズが膨れ上がっても対応できるDBAなどが必要になるし、 あるいはそれを考慮に入れたシステムが必要になる。

スケーラビリティは予測できるユーザー負荷に耐えれるかどうかが鍵だ。

システムごとの、スケーラビリティと弾力性の違い

システムの構成図ごとに弾力性とスケーラビリティを見ていく

モノシリックなシステム

大規模でモノシリックなシステムは全てのアプリケーションを同じようにスケーリングさせなければならない。 そのため、スケーリングが難しく、実践に移すまでのコストもかかるだろう。 クラウド上で管理するモノシリックなシステムは特にコストがかかる

from https://techblog.short-tips.info/inhouse_se/2001layerd_arch.md

サービスベースアーキテクチャはスケーラビリティが高い

サービスベースアーキテクチャは、分散システムの一種だ。

の三つから構成される。

from https://techblog.short-tips.info/inhouse_se/2001layerd_arch.md

サービスベースアーキテクチャのスケーラビリティは高めである。 ユーザー数の増加に伴って、処理ユニットを増やすことで、暫定的に同時ユーザー接続数の増加に耐えることができる。

一つのコンポーネント(処理ユニット)を一つのEC2上に乗っけていれば、時間はかかるが処理能力を増やすことができる。

しかし、それらの処理ユニットを管理する能力自体はないので、急激なユーザー負荷の上昇には手動で対応しなければならない。

加えて、最終的にはユーザー数増加の負荷もデータベースへ集中してしまうことが欠点である。

スペースベースアーキテクチャはスケーラビリティ/弾力性ともに最高

スペースベースアーキテクチャも分散システムの一種だ。

スペースベースアーキテクチャビジネスロジックコードは処理ユニットと呼ばれるコンポーネントに記述される。 この処理ユニットは無制限に増やせる上、データもデータベースからクローンされたものを同期しているため、処理能力は理論的には無限である。

from https://techblog.short-tips.info/inhouse_se/2006space_base_arch.md

このシステムは名前をサービスベースアーキテクチャといい、ひとつ一つのビジネスロジックコンポーネント単位で分割されている。 そのため、アプリケーションの処理能力を向上させたい場合にはコンポーネント単位で増幅可能である。

また、スペースベースアーキテクチャには本来、アプリケーションへのトラフィックを分析してコンポーネントの増減をコントロールする コンポーネントがある。そのため、ユーザー数のバーストにも耐えることが可能だ。

備考

title:スケーラビリティと弾力性の違い【具体例あり】

description:

img:https://github.com/kawadasatoshi/techblog/blob/main/0/inhouse_se/3045/five.png?raw=true

from https://jp.123rf.com/%E3%83%99%E3%82%AF%E3%82%BF%E3%83%BC/%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%A9%E3%83%93%E3%83%AA%E3%83%86%E3%82%A3.html

category_script:page_name.startswith("3")