従来のレイヤードアーキテクチャの問題点
from 手を動かしてわかるクリーンアーキテクチャ
LT;DR
従来の レイヤードアーキテクチャ は変更に対して脆弱であり、保守性 がすぐ低くなる
正しく扱えば堅牢にもなり得るが強制力は無いため、追加のルールや開発者の 自制心 や 勤勉さ に委ねる必要がある
従来のレイヤードアーキテクチャの問題点#66bc87b475d04f0000baf113
短絡的な実装になる可能性がある問題#66bc965c75d04f0000544f6d
保守性 の低下は、レイヤードアーキテクチャの以下の問題に起因する
データベース中心の設計になってしまう問題
短絡的な実装になる可能性がある問題
テストが書きづらい問題
ユースケースが見つけづらい問題
異なる作業を同時に行うのが難しい問題
類似ページ
境界づけられたコンテキストの中のコード構造#6690993475d04f00004e8d25
hr.icon
warning.icon 多層アーキテクチャという翻訳について radish-miyazaki.icon
多層アーキテクチャ(Multi-tier ~)と訳されているが、ここでの 層 は論理的な層を表しているので レイヤードアーキテクチャ (Layered ~)のほうが適切と判断し、変換して読み進める
Difference Between Layers and Tiers
https://qiita.com/shibainuu/items/e975f7039cd8f058e123
https://www.ibm.com/jp-ja/topics/three-tier-architecture
https://x.com/ruby_engineer/status/1823353013983195321
hr.icon
https://scrapbox.io/files/66bc870f3d3631001c7fa338.png
単純な従来の レイヤードアーキテクチャ の例
Web 層 は HTTP リクエストを受け取り、リクエストをドメイン層の サービス に渡す
ドメイン層 は ビジネスロジック を実行する
また、必要に応じて 永続化層 にある コンポーネント を呼び出し、データストアに格納されている エンティティ のデータ取得・変更を行う
適切に扱えば 堅牢 なアーキテクチャとなるが、変更に対して脆弱であり、保守性 がすぐ低くなる という問題がある
不適切な 依存関係 があったとしても、そのことを受け入れてしまう
保守性を維持するためには、開発者の 自制心 や 勤勉さ に完全に委ねる必要がある
保守性 が低くなるのは、レイヤードアーキテクチャの以下の問題に起因する
データベース中心の設計になってしまう問題
短絡的な実装になる可能性がある問題
テストが書きづらい問題
ユースケースが見つけづらい問題
異なる作業を同時に行うのが難しい問題