HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
남득윤 학습 저장소
/
만들면서 배우는 클린 아키텍쳐
만들면서 배우는 클린 아키텍쳐
/
1️⃣
01 장 - 계층형 아키텍처의 문제는 무엇일까?
1️⃣

01 장 - 계층형 아키텍처의 문제는 무엇일까?

See Also)
  • 이동욱님 - 계층형 아키텍처
notion image
notion image
3티어 계층형 아키텍쳐

계층형 아키텍처의 장점

  • 관심 범위 축소(관심사 분리)
    • 웹 계층이나 영속성 계층에 독립적으로 도메인 로직을 작성할 수 있다.
    • 계층간의 격리성 → 관심 범위 축소(관심사 분리)
 
  • 모듈 교체의 용이성
    • 변화하는 요구사항과 외부요인에 빠르게 적응할 수 있게 해준다.
    • 도메인 로직에 영향을 주지 않고 웹 계층과 영속성 계층에 사용된 기술을 변경할 수 있다.
 
  • 용이한 테스트
    • 계층화는 자연스럼게 테스트를 위한 좋은 인터페이스를 제공한다.
 

계층형 아키텍처의 단점

  • 데이터베이스 주도 설계를 유도한다.
    • 웹 → 도메인 → 영속성 → 데이터베이스 ???
    • 모든 것이 영속성 계층을 토대로 만들어진다.
    • 데이터베이스 중심적인 아키텍처가 만들어지는 가장 큰 원인은 ORM 프레임워크를 사용하기 때문
    • ORM 프레임워크를 계층형 아키텍처와 결합하면 비즈니스 규칙을 영속성 관점과 섞고 싶은 유혹을 쉽게 받는다.
    • 아래와 같은 패키지 구조에서는 영속성 계층과 도메인 계층 사이 강한 결합이 생긴다.
    • notion image
    • 순수해야 하는 도메인 계층에서는 영속성 계층을 위한 작업인
      • eager/lazy loading, db transaction, cache flush 등의 작업이 발생하게 된다.
 
  • 지름길을 택하기 쉬워진다.
    • 전통적인 계층형 아키텍처에서 전체적으로 적용되는 유일한 규칙은 특정한 계층에서는 같은 계층에 있는 컴포넌트나 아래에 있는 계층에만 접근 가능하다는 것
    • 이는 너무 약한 규약이다.
    • 점점 아키텍쳐는 개판이되고 최하단 계층(영속성 계층)은 비대해 질것이다.
 
  • 테스트하기 어려워진다. (계층을 건너 뛰는 경우)
  • 유스케이스를 숨긴다.
    • 새로운 기능을 추가하거나 변경할 적절한 위치를 찾는 일이 어렵다.
    • 도메인 서비스의 너비 에 대한 규칙을 강제하지 않는다.
    • 마침 본인이 계층형 아키텍처로 프로젝트를 진행하다 겪은 고민은 아래와 같다.
notion image
notion image
notion image
notion image
가장 좋은 선택지는 뭘까???
 
  • 동시 작업이 어려워 진다.
    • 모든 것이 영속성 계층 위에 만들어 지기 때문에 개발 순서가 고정된다.
    • 코드에 넓은 서비스가 있다면 머지 컨플릭트가 발생하는 상황이 발생한다.
    •