2장 의존성 역전하기
클린 아키텍처에서 가장 중요하게 여기는 규칙은 ‘도메인 코드가 바깥으로 향하는 어떤 의존성도 없어야 한다’라는 의존성 규칙입니다. 즉 계층 간의 의존성이 모두 안쪽으로 향해야 한다는 것이죠. 그러나 계층형 아키텍처처럼 도메인 코드(안쪽 계층)가 영속성 코드(바깥쪽 계층)에 의존한다면 이 규칙이 깨지게 됩니다.
이는 단일 책임 원칙 위반으로도 이어지는데, 단일 책임 원칙이란 ‘컴포넌트를 변경하는 이유는 오직 하나뿐이어야 한다’는 원칙입니다. 도메인 코드가 영속성 코드에 의존하면, 영속성 코드 변경 시 도메인 코드도 함께 영향을 받게 되므로 단일 책임 원칙에 어긋나겠죠.
따라서 도메인 계층과 영속성 계층 사이에 인터페이스를 도입하여 의존성을 역전시킬 수 있고, 이를 통해 도메인 코드를 변경할 이유의 개수를 줄일 수 있습니다. 이는 코드의 유지 보수성을 향상시킵니다.