After reading <clean architecture>

2019-12-10
review

by Robert C. Martine

클린 아키텍쳐를 읽고 내맘대로 정리해보았다.

컴포넌트

모든 언어에서 컴포넌트는 배포할 수 있는 단위 입자


안정성 지표


모든 컴포넌트가 안정적인 것은 불가능하다. 즉, 목적성을 따져서 불안정한 것과 안정적인 컴포넌트들을 잘 결합시키자.



좋은 아키텍트

1. 세부사항에 대한 결정을 가능한 오래 미룬다.

좋은 아키텍트는 세부사항에 대한 결정을 가능한 한 오랫동안 미룰 수 있는 방향으로 정책을 설계한다.

: 심지어 프레임워크까지도. 오히려 결정되지 않은 사항의 수를 최대화하여 프로젝트의 유연성을 높이는 것. 3rd party libs들도 이와 같은 관점에서 비용(시간, 금전)을 따졌을 때 미룰 수 있다면 최대한 미루는 방향이 코드의 유연성을 가져갈 수 있지 않을까. 물론 비용 중 어느 하나라도 포기할 수 없다면 유연하게 적용하는 게 맞고.


2. 작성한 코드가 진짜 중복일까? 혹은 우발적 중복일까?

중복에도 종류가 있다. 그중 하나는 진짜 중복이다. 이 경우 한 인스턴스가 변경되면 동일한 변경을 그 인스턴스의 모든 복사본에 반드시 적용해야 한다. 또 다른 중복은 거짓된 또는 우발적인 중복이다. 중복으로 보이는 두 코드 영역이 각자의 경로로 발전한다면, 즉 서로 다른 속도와 다른 이유로 변경된다면 진짜 중복이 아니다.

: 유스케이스의 화면 구조가 매우 비슷해서 코드를 통합하고 싶은 유혹에 빠질 때가 많지만, 해당 케이스 자체가 다른 유스케이스로 분리되는 상황이라면 시간이 지나면서 두 화면은 다르게 분기하고 변화할 것이다. 비슷한 뷰, 비슷한 알고리즘, 심지어 비슷한 DB스키마를 가져도 ‘자동반사적’으로 중복을 제거해버리면 나중에 이 둘을 분리해내느라 힘들 것.



아키텍처의 테마

여러분의 애플리케이션 아키텍처는 뭐라고 소리치는가? 상위 수준의 디렉터리 구조, 최상위 패키지에 담긴 소스 파일을 볼 때, 이 아키텍처는 “헬스 케어 시스템이야.” 또는 “재고 관리 시스템이야.” 라고 소리치는가? 아니면 “레일즈”, “스프링/하이버네이트” 혹은 “ASP"라고 소리치는가?

헬스 케어 시스템을 구축하고 있다면 새로 들어온 프로그래머가 소스 저장소를 봤을 때 첫 인상은 “헬스 케어 시스템이구나"이어야만 한다. 시스템이 어떻게 전달될지 알지 못한 상태에서도 시스템의 모든 유스케이스를 이해할 수 있어야 한다.

Good bye 2022

2023-01-02
review

After reading <From Programmer to Software Architect>

2022-02-03
review

After reading <Functional Reactive Programming>

2022-01-13
review
comments powered by Disqus