
클린아키텍처는 소프트웨어를 구성하는 요소들의 계층을 정의하며
각 계층은 독립성을 가집니다. 원 안쪽으로 들어갈수록 고수준으로서 외부 환경에 영향을 덜 받는다고 할 수 있습니다. 중요한 것은 소스코드들의 의존성은 반드시 안쪽인 고수준의 정책을 향해야한다는 것입니다.
만일 안쪽인 고수준의 코드가 바깥쪽 계층인 저수준의 코드를 의존한다면, 외부 환경에 영향을 받지 말아야할 고수준의 정책들이 영향을 받게되고, 외부 상황이 바뀔 때마다 핵심 정책을 갖고있는 코드들도 함께 변경해야할 여지가 생기게 되어 소프트웨어가 불안정성이 증대되고, 유지보수성이 감소하게된다고할 수 있습니다.
수준이라는 것은 엄밀하게 정의하면 “입력과 출력까지의 거리”라고 할 수 있습니다.
모든 소스코드 의존성이 고수준 정책을 향한다면 긴급한 변경이 발생하더라도 고수준 계층의 정책은 영향을 거의 주지 않을 수가 있습니다.
따라서 비즈니스의 핵심 가치를 지닌 정책들을 고수준 계층에 두고 소프트웨어를 개발해나간다면, 해당 비즈니스 핵심 가치들을 최대한 온전하게 보존할 수 있습니다.
이것이 바로 클린아키텍처를 적용하는 가장 큰 이유라고 생각합니다. 그 비즈니스 정책이 바로 현재 돈을 벌어다주는 가치라고할 수 있으니까요.