アプリケーション層の分離
Application Layer
Web層(表示)とアプリケーション層(処理)を分けることで、それぞれを独立にスケール・設定できるようにする設計。混雑している層だけを増強できる。
たとえ話: 役割分担したキッチン
小さな食堂では1人が注文取り・調理・配膳を全部やります(=モノリシック)。これは楽ですが、注文が殺到すると1人ではパンクします。
そこで**ホール係(Web層)と調理係(アプリケーション層)**に分けます。すると『注文は捌けるが料理が追いつかない』ときは調理係だけ増やせばいい。混んでいる工程だけを増強できるのが、層を分ける最大のメリットです。
図を描画中...
単一責任の原則(Single Responsibility Principle)
各サービスは『1つのことだけをうまくやる』小さく自律的な存在にします。料理人は料理だけ、会計は会計だけ。こうすると、1つのサービスを変更・増強しても他に影響しにくく、理解もしやすくなります。
つまずきポイント
- 層を分けるとサービス間通信が増える。1枚岩なら関数呼び出しで済んだものが、ネットワーク越しの通信になる(遅延・失敗の可能性)。
- 分離は『常に正解』ではない。小規模なうちはモノリシックの方がシンプルで速い。スケールの必要が見えてから分けるのが現実的。
📊 図解
分離前(モノリス) vs 分離後(Web層/アプリ層)
図を描画中...