일반적인 3계층 아키텍처
<aside> ⚠️ 잘 만들어진 계층형 아키텍처는 선택의 폭을 넓히고, 변화하는 요구사항과 외부 요인에 빠르게 적응할 수 있게 해준다. → 그러나 시간이 지날수록 소프트웨어를 점점 더 변경하기 어렵게 만드는 문제점이 존재!
</aside>
데이터베이스 주도 설계를 유도!
테스트하기 어려움
<aside> ⚠️ 따라서, 웹 계층 테스트를 할 때 도메인 계층 뿐만 아니라 영속성 계층도 모킹해야해서 단위 테스트 복잡도가 올라가게 됨
</aside>
동시 작업 어려움
<aside> 📌 올바르게 구축하고 추가적인 규칙들을 적용하면 계층형 아키텍처도 유지보수하기 매우 쉬워지며 코드를 쉽게 변경하거나 추가할 수 있음
</aside>
단일 책임 원칙
의존성 역전 원칙
도메인 계층에 인터페이스 도입 → 의존성 역전 ⇒ 영속성 계층이 도메인 계층에 의존