클린아키텍처의 지향점
- 변화하는 요구사항과 외부 요인에 빠르게 적응할 수 있게 하는것
- 계층형 아키텍처 자체가 문제가 아니라, 개발자들이 나쁜 습관으로 코드를 짜기 쉬운 환경임
- 데이터베이스 주도 설계를 유도한다.
- 애플리케이션의 목적은 사용자가 필요한 비즈니스 로직을 만들어서 편리하게 활용함이 목적
- 상태(State)가 아닌 행동 (Behavior)이 중심이 되어야됨
- 의존성이 가장 안쪽에있는 데이터베이스 중심으로 설계가 진행됨
- 지름길을 택하기 쉬워진다
- 컴포넌트의 계층을 이동시켜 개발을 쉽게 하려는 유혹에 빠지기 쉬움
- 테스트하기 어려워진다.
- 계층형 아키텍처는 계층을 뛰어넘는 유혹에 빠지기 쉬업 (ex. 웹 ⇒ 영속성 바로 접근)
- 도메인 로직이 웹 계층에 구현될 가능성이 커짐
- 웹 계층 테스트에서 영속성 계층도 mocking 해야됨
- 유스케이스를 숨긴다.
- 계층형 아키텍처는 도메인 계층의 서비스 컴포넌트에대해 너비 (처리 영역)을 강제하지 않기 때문에, 범위가 매우 넓은 서비스가 만들어질 수 있음
- 특정 유스케이스를 위한 서비스를 쓰는게 개발자 입장에서 더 개발하기 좋을 수 있음
- 동시 작업이 어려워진다.
- 계층형 아키텍처 특성 상, 하위계층 개발 ⇒ 상위계층 개발 순서로 이루어짐
- 하나의 기능을 개발할 때, 여러명이서 개발하기 어려움
- 범위가 넓은 서비스들이 있을 경우, conflict 나기가 쉬움
- 유지보수 가능한 소프트웨어를 만드는데 어떻게 도움이 될 까?
- 계층형 아키텍처 자체가 나쁜것은 아니지만, 쉽게 유혹에 빠지기 쉬움
- 이러한 단점들을 염두에두고 개발하면 좋은 설계 방향으로 갈 수 있음
반응형