SDN
← 概念一覧へ
アプリケーション層

アプリケーション層の分離

Application Layer

Web層(表示)とアプリケーション層(処理)を分けることで、それぞれを独立にスケール・設定できるようにする設計。混雑している層だけを増強できる。

キーポイント
  • Web層とApplication層(プラットフォーム層)を分離する。
  • 利点: 新しいAPIを足すときアプリサーバーだけ増やせる(Webサーバーは増やさない)。各層を独立にスケール可能。
  • Single Responsibility Principle(単一責任の原則): 各サービスは小さく自律的に、1つの責務だけを持つ。
  • 層を分けることで、ボトルネックになっている層だけにリソースを集中投下できる。
トレードオフ

層を分け、サービスを疎結合にすると、1枚岩(モノリシック)とは異なるアーキテクチャ・運用・プロセスが必要になる。サービス間の通信が増え、デプロイや監視の対象も増える。シンプルさと引き換えに柔軟性とスケーラビリティを得る、という構図。

たとえ話: 役割分担したキッチン

小さな食堂では1人が注文取り・調理・配膳を全部やります(=モノリシック)。これは楽ですが、注文が殺到すると1人ではパンクします。

そこで**ホール係(Web層)調理係(アプリケーション層)**に分けます。すると『注文は捌けるが料理が追いつかない』ときは調理係だけ増やせばいい。混んでいる工程だけを増強できるのが、層を分ける最大のメリットです。

図を描画中...

単一責任の原則(Single Responsibility Principle)

各サービスは『1つのことだけをうまくやる』小さく自律的な存在にします。料理人は料理だけ、会計は会計だけ。こうすると、1つのサービスを変更・増強しても他に影響しにくく、理解もしやすくなります。

つまずきポイント

  • 層を分けるとサービス間通信が増える。1枚岩なら関数呼び出しで済んだものが、ネットワーク越しの通信になる(遅延・失敗の可能性)。
  • 分離は『常に正解』ではない。小規模なうちはモノリシックの方がシンプルで速い。スケールの必要が見えてから分けるのが現実的。

📊 図解

分離前(モノリス) vs 分離後(Web層/アプリ層)

図を描画中...

関連する概念

この概念で腕試し

関連する 10 問のクイズに挑戦できます。

クイズを解く