본문 바로가기

전체 글

(99)
2022/02/22 TIL 클린 아키텍처 25장 이 예제를 가져온 이유는 아키텍처 경계가 어디에나 존재한다는 사실을 보여주기 위함이다. 25장에서는 간단한 게임을 만드는데 여러 개의 경계를 도출하는 예시를 보여준다. 이 부분에서 Service와 SerivceImpl를 만드는 관습적인 행위 역시 경계를 만든 것이 맞을까 라는 생각을 했다. 또한 DAO를 제외하고 추가적인 경계를 만드는 데에 내가 소극적이라는 것을 알게 되었다. YAGNI(you aren't going to need it) 오버 엔지니어링이 언더 엔지니어링 보다 나쁠 때가 훨씬 많다. 아키텍처 관점에서는 스스로 그림이 확실히 그려지고 수정하는 게 좋다는 것 같다. 경계가 존재하지 않는 상황에서 경계가 필요하다는 사실을 발견하면 비용이 많이 들고 위험을 감수해야 한다...
2022/02/21 TIL 클린 아키텍처 23장 : 프리젠터와 험블 객체 험블 객체 패턴이란? 테스트하기 어려운 행위와 쉬운 행위를 분리하기 쉽게 하는 방법 테스트하기 어려운 행위는 험블 객체로 옮기고 나머지 테스트하기 쉬운 행위를 옮긴다. 단위 테스트를 하다 보면 복잡도가 높아 어려운 경험이 있는데 험블 객체에 테스트하기 어려운 부분을 옮긴다는 아이디어가 정말 좋다고 생각했다. 클린 아키텍처 24장 : 부분적 경계 Service, ServiceImpl이 미래에 필요한 아키텍처 경계를 위한 무대를 마련한다는 점은 명백하다. 아직도 관습적으로 Interface를 만드는 것에 대해서는 동의하지 않는다. 스스로 납득할만한 근거를 아직 못 본 것 같다. 아키텍처 경계가 언제, 어디에 존재해야 할지, 경계를 완벽하게 아니면 부분적으로 구현..
2022/02/19 TIL 클린 아키텍처 22장 : 클린 아키텍처 육각형 아키텍처를 포함한 대부분의 아키텍처의 목표는 관심사의 분리다. 요즘 육각형 아키텍처에 대한 의견이 많이 들리는 것 같은데 주요 목표는 관심사의 분리라는 것을 알게 되었다. 엔티티는 전사적인 핵심 업무 규칙을 캡슐화한다. 외부의 무언가가 변경되더라도 엔티티가 변경될 가능성은 지극히 낮다. 핵심 업무 규칙을 이 서비스 레이어에 있는 경우가 많다. 앞으로 개발할 때 외부로부터 의존성을 최대한 줄이기 위해 엔티티와 가깝게 하고 싶다. 유스 케이스는 특화된 업무 규칙을 포함한다. 엔티티가 자신의 핵심 업무 규칙을 사용해서 유스 케이스의 목적을 달성하도록 이끈다. 유스 케이스의 구현은 엔티티에 있어야 한다. 원은 네 개여야만 하나? 그렇지 않다. 더 많은 원이 필요할 ..