계층형 아키텍처는 데이터베이스 주도 설계를 유도한다
- 의존 방향에 따른 자연스러운 현상
- → 이는 설계의 문제점이지 아키텍처의 문제점은 아님
- → 계층형 아키텍처를 택히더라도 도메인 주도 설계를 할 수 있고, 헥사고날 아키텍처를 택하더라도 데이터베이스 주도 설계를 할 수 있음
지른길을 택하기 쉬워진다
- 간단한 기능의 경우 계층을 건너뛰어서 사용할 수 있음
- → 인터셉터에서 토큰을 추출하는 경우 컨트롤러 계층에서 레파지토리에 접근할 수 있음
테스트하기 어려워진다
- 계층을 건너뛰어서 사용할 경우 단위 테스트 작성이 어려움
- 예를 들어 컨트롤러 계층에서 서비스와 레포지토리를 모두 사용했다면 mocking 해야 하는 과정이 복잡해짐
- 컨트롤러 계층에서도 DB 관련 설정 필요
유스케이스를 숨긴다
- 기능을 추가하다보면 중간 계층인 사비스 계층이 비대해짐
- 또한 계층마다 접근해야 하는 공통 로직을 고려해서 개발하다보면 비즈니스 로직이 분산됨
- 개발을 진행하면서 점차 어느 기능을 어디에 윛시켜야할지 모호해짐
- 하나의 유스케이스 당 서비스 객체 하나 생성
동시 작업이 어려워진다
- 같은 도메인 내 기능을 분담하기 어려움
- 한 명이 하나의 기능은 온전하게 구현해야 함