15章スペースベースアーキテクチャ
ほとんどのWebベースのビジネスアプリケーションは、いずれも一般的なリクエストフローに従っている。ブラウザからのリクエストは、Webサーバー、アプリケーションサーバー、データベースへと渡っていく。このパターンは、ユーザー数が少ない場合には効果的だが、ユーザー負荷が増加するとボトルネックが生じる。ユーザー負荷の増加に伴うボトルネックには、Webサーバーのスケールアウトで対応するのが一般的だ。これは比較的簡単で安価な方法であり、ボトルネックへの対応として適切な場合もある。しかし、ユーザー負荷が高い場合には、Webサーバーをスケールアウトしても、ボトルネックがアプリケーションサーバーに移動してしまうケースがほとんどだ。アプリケーションサーバーのスケーリングは、Webサーバーよりも複雑でコストがかかるし、通常はそれをしても、ボトルネックがデータベースサーバーに移るだけだ。そして、データベースをスケールアップできたとしても、最終的に、図15-1に示すような、三角形のトポロジーとなるだけだ。三角形の最も広い部分がWebサーバー(スケールアップが最も簡単)で、最も小さい部分がデータベース(スケールアップが最も難しい)となる。
大量の同時ユーザーによる負荷を伴う大容量アプリケーションでは、通常、データベースが同時処理可能なトランザクション数が最終的な制限要因となる。さまざまなキャッシュ技術やデータベーススケーリング製品は、これらの問題に対処するのに役立つ。しかし、通常のアプリケーションを極端な負荷に合わせてスケールアウトするのは、いずれにしても非常に難しい。
スペースベースアーキテクチャは、高いスケーラビリティ、弾力性、高い同時実行性といった問題に対処することを目的に設計されたアーキテクチャスタイルだ。このアーキテクチャスタイルは、同時接続ユーザー数が変動して予測できないようなアプリケーションにも有効だ。弾力的なスケーラビリティをアーキテクチャ的に解決することは、データベースをスケールアウトさせようとしたり、スケーラビリティのないアーキテクチャにキャッシュ技術を後付けしたりするよりも、良いアプローチであることが多い。 ...
Get ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.