なぜWebは大規模でも安定するのか?RESTにおける階層化システムの役割
投稿日: 2025年06月14日
REST では、複数のアーキテクチャスタイル(設計上の制約)を組み合わせることで、シンプルかつ拡張性の高いシステムを構築します。
その中の一つとしてあるのが、「階層化システム」です。
本記事では、「階層化システム」がREST全体の構成においてどんな役割を担っているのかを見ていきましょう!!
以下、関連記事もあるのでご覧ください!!
階層化システムとは、システム全体を複数の層(レイヤ)に分けて構成することで、**セキュリティの向上や負荷分散、保守性の改善**などを実現するアーキテクチャスタイルです。
例えば、Webサービスではクライアントとサーバーの間にロードバランサを挟むことでアクセスを分散させたり、プロキシを導入してアクセス制御を行ったりします。
このように中間層(ミドルウェア)を導入しても、クライアント側からは常に同じインターフェースでアクセスできます。
つまり、背後の構成が変わっても、**統一されたインターフェース**のおかげでクライアントは意識する必要がありません。
また、レガシーな基幹システムの前にWebアプリケーションを置くことで、HTTPインターフェースを通じてブラウザなどのクライアントからアクセスできるようにするケースも、階層化の一例です。
RESTアーキテクチャにおける、「階層化システム」は、サーバーとクライアント間の中間層(プロシキやゲートウェイなど)を自由に挟めることを許容しながらも、クライアントはそれを意識せずとも操作ができるという前提に基づいています。
これにより以下のような利点が生まれます:
- セキュリティやキャッシュ処理を中間層に委譲できる
- ロードバランサを用いたスケーラビリティの確保
- アーキテクチャの柔軟な変更(内部構成の入れ替え)でも、クライアントとのインターフェースが変わらない
このように、RESTの**スケーラビリティ、セキュリティ、保守性を実現する鍵**として、階層化は重要な制約のひとつになっています。
統一インタフェース/ 階層化システム / クライアント/ キャッシュ / ステートレスサーバ
階層化システムは、システム全体に複数層に分けて構成するアーキテクチャスタイルでした。
この制約により、**セキュリティの向上や負荷分散、保守性の改善が期待できます。**
次回は、RESTの制約の1つである「コードオンデマンド」についても見ていきます。
システム、機器、またはソフトウェアの拡張性や拡張可能性を指します。
どれだけ柔軟に規模や利用負荷の増大に対応できるかの能力や度合いを示します。
負荷分散装置とも呼ばれます。いったんサーバーへのアクセスを集約し、リソースに余裕があるサーバーを接続先として選択するといった機能により、サーバーを含むシステム全体の可用性を向上させる特長があります。
クライアントとサーバーの中間で、両者の通信を中継する役割を担うサーバーをプロキシサーバーと呼びます。プロキシサーバーを介した通信では、クライアントからサーバーへのリクエストをまずプロキシサーバーが受け取り、その内容を宛先のサーバーに送信します。サーバーからリクエストに対する応答があれば、その内容をプロキシサーバーが受け取ってクライアントに送り返します。
コンピュータネットワークにおいて、通信プロトコルが異なるネットワーク同士がデータをやり取りする際、中継する役割を担うルータのような機能を備えた機器やそれに関するソフトウェアを意味します。
通信プロトコルが異なるネットワークの端末同士が直接データのやり取りをするのではなく、ゲートウェイで通信プロトコルの変換を行うことで、円滑な相互通信を実現します。
無線LANルータやブロードバンドルータなどもゲートウェイの一種で、通信速度変換、障害検出などの機能も備えています。