본문 바로가기

기타/클린 아키텍처

(2)
[클린 아키텍처] 정책과 수준 소프트웨어 아키텍처를 개발하는 기술에는 정책을 신중하게 분리해야 하고, 정책이 변경되는 양상에 따라 정책을 재편성하는 일도 포함된다. 동일한 이유로 동일한 시점에 변경되는 정책은 동일한 수준에 위치하며, 동일한 컴포넌트에 속해야 한다. 서로 다른 이유로, 혹은 다른 시점에 변경되는 정책은 다른 수준에 위치하며, 반드시 다른 컴포넌트로 분리해야 한다. 재편성된 컴포넌트들을 비순환 방향 그래프로 구성하여 아키텍처 개발을 한다. 이 때 그래프에서 정점은 동일한 수준의 정책을 포함하는 컴포넌트에 해당한다. 방향이 있는 간선 은 컴포넌트 사이의 의존성을 나타낸다. 간선은 다른 수준에 위치한 컴포넌트를 서로 연결한다. 좋은 아키텍처라면 각 컴포넌트를 연결할 때 의존성의 방향이 컴포넌트의 수준을 기반으로 연결되도록 ..
[클린 아키텍처] 컴포넌트 원칙 컴포넌트는 배포 단위다. 컴포넌트가 어떤 형태로 배포되든, 잘 설계된 컴포넌트라면 반드시 독립적으로 배포 가능한, 독립적으로 개발 가능한 능력을 갖춰야 한다. 컴포넌트의 간략한 역사 소프트웨어 개발 초창기에는 프로그램의 위치가 한번 결정되면 재배포가 불가능하였고, 메모리에서의 프로그램 위치와 레이아웃을 프로그래머가 직접 제어하였다. 이시대에는 프로그래머가 라이브러리 함수의 소스 코드를 애플리케이션 코드에 직접 포함시켜 단일 프로그램으로 컴파일했다.그러나 장치는 느리고 메모리는 너무 비쌌다. 메모리가 너무 작아서 소스 코드 전체를 메모리에 상주시킬 수가 없었기에, 컴파일러는 느린 장치를 이용해서 소스코드를 여러 차례 읽어야만 했다. 컴파일 시간을 단축시키기 위해 프로그래머는 함수 라이브러리의 소스 코드를 ..