만들면서 배우는 클린 아키텍처(12)
-
12장. 아키텍처 스타일 결정하기
소개 만들면서 배우는 클린 아키텍처 책을 읽고 정리하며 소감을 적는 포스트입니다. 아키텍처 스타일 결정하기 언제 실제로 육각형 아키텍처 스타일을 사용해야 할까? 언제 육각형 아키텍처 스타일 대신 전통적인 계층형 아키텍처 스타일을 고수 해야 할까? 이 두가지가 가장 궁극적인 질문 이다. 도메인이 왕이다. 외부의 영향을 받지 않고 도메인 코드를 자유롭게 발전시킬 수 있다는 것은 육각형 아키텍처 스타일이 내세우는 가장 중요한 가치다! 육각형 스타일과 같은 도메인 중심의 아키텍처 스타일은 DDD의 조력자라고까지 말할 수 있다. 도메인을 중심에 두는 아키텍처 없이는, 또 도메인 코드를 향한 의존성을 역전시키지 않고서는, DDD를 제대로 할 가능성이 없다. 즉, 설계가 항상 다른 요소들에 의해 주도되고 말 것이다...
2023.05.15 -
11장. 의식적으로 지름길 사용하기
소개 만들면서 배우는 클린 아키텍처 책을 읽고 정리하며 소감을 적는 포스트입니다. 의식적으로 지름길 사용하기 절대 갚을 길 없는 기술 부채를 쌓아가면서 항상 지름길의 유혹을 느낀다는 사실을 저주한다. 지름길을 방지하기 위해서는 먼저 지름길 자체를 파악해야 한다. 왜 지름길은 깨진 창문 같을까? 1969년 심리학자 필립 짐바르도(Philip Zimbardo)는 나중에 깨진 창문 이론이라고 알려진 실험을 했다. 어떤 것이 멈춘 것처럼 보이고, 망가져 보이고, [부정적인 형용사를 넣어보자], 혹은 관리되지 않는다고 여겨지면 인간의 뇌는 이를 더 멈추고, 망가뜨리고, [부정적인 형용사를 넣어보자] 해도 된다고 생각하게 된다. 이 이론은 삶의 많은 부분에 적용할 수 있다. 기물 파손이 흔한 동네에서는 방치된 차를..
2023.05.15 -
10장. 아키텍처 경계 강제하기
소개 만들면서 배우는 클린 아키텍처 책을 읽고 정리하며 소감을 적는 포스트입니다. 아키텍처 경계 강제하기 일정 규모 이상의 모든 프로젝트에서는 시간이 지나면서 아키텍처가 서서히 무너지게 된다. 계층 간의 경계가 약화되고, 코드는 점점 더 테스트하기 어려워지고, 새로운 기능을 구현하는 데 점점 더 많은 시간이 든다. 경계와 의존성 아키텍처 경계를 강제한다는 것은 의존성이 올바른 방향을 향하도록 강제하는 것을 의미한다. 아키텍처에서 허용되지 않은 의존성을 점선 화살표로 표시했다. 위 그림은 육각형 아키텍처의 요소들이 클린 아키텍처 방식과 유사항 4개의 계층에 어떻게 흩어져 있는지 보여준다. 가장 안쪽의 계층에는 도메인 엔티티가 있고 애플리케이션 계층은 애플리케이션 서비스 안에 유스케이스를 구현하기 위해 도메..
2023.05.14 -
9장. 애플리케이션 조립하기
소개 만들면서 배우는 클린 아키텍처 책을 읽고 정리하며 소감을 적는 포스트입니다. 애플리케이션 조립하기 유스케이스, 웹 어댑터, 영속성 어댑터를 구현해봤으니, 이제 이것들을 동작하는 애플리케이션으로 조립하는 차례이다. 왜 조립까지 신경 써야 할까? 필요할때 마다 인스턴스화 시켜서 사용하지 않는 것은 의존성이 올바른 방향을 가리키게 하기 위해서다. 애플리케이션의 도메인 코드 방향으로 향해야 도메인 코드가 바깥 계층의 변경으로부터 안전하다. 유스케이스가 영속성 어댑처를 호출해야 하고 스스로 인스턴스화한다면 코드 의존성이 잘못된 방향으로 만들어진 것이다. 그럼 객체 인스턴스를 생성할 책임은 누구에게 있을까?? 중립적인 설정 컴포넌트는 인스턴스 생성을 위해 모든 클래스에 접근할 수 있다. 위 그림과 같이 아키텍..
2023.05.14 -
8장. 경계 간 매핑하기
소개 만들면서 배우는 클린 아키텍처 책을 읽고 정리하며 소감을 적는 포스트입니다. 경계 간 매핑하기 늘상 겪는 문제인 각 계층의 모델을 매핑하는 것에 대해서는 거의 다뤄지지 않는다. 여러분도 매퍼 구현을 피하기 위해 두 계층에서 같은 모델을 사용하는 것에 대해 논의 해 본적이 있을 것이다. 매핑에 찬성하는 개발자 : 두 계층 간에 매핑을 하지 않으면 양 계층에서 같은 모델을 사용해야 하는데 이렇게 하면 두 계층이 강하게 결합됩니다. 매핑에 반대하는 개발자 : 하지만 두 계층 간에 매핑을 하게 되면 보일러플레이트 코드를 너무 많이 만들게 돼요. 많은 유스케이스들이 오직 CRUD만 수행하고 계층에 걸쳐 같은 모델을 사용하기 때문에 계층 사이의 매핑은 과합니다. 모두 틀린 말이 아니며 결정에 도움이 되는 매핑..
2023.05.13 -
7장. 아키텍처 요소 테스트하기
소개 만들면서 배우는 클린 아키텍처 책을 읽고 정리하며 소감을 적는 포스트입니다. 아키텍처 요소 테스트하기 많은 프로젝트의 자동화된 테스트는 규칙에 따라 작성되지만 테스트 전략을 물었을 때 제대로 답변하는 이가 없었다. 이번 포스트에서는 육각형 아키텍처에서의 테스트 전략에 대해 이야기 합니다. 테스트 피라미드 테스트 피라미드에 따르면 비용이 많이 드는 테스트는 지양하고 비용이 적게 드는 테스트를 많이 만들어야 한다. 기본 전제는 만드는 비용이 적고, 유지보수하기 쉽고, 빨리 실행되고, 안정적인 작은 크기의 테스트들에 대해 높은 커버리지를 유지해야 한다. 단위와 단위를 넘는 경계, 아키텍처의 경계, 시스템의 경계를 결합하는 테스트는 만드는 비용이 더 비싸지고, 실행이 더 느려지며 깨지기 쉬워진다. 단위 테..
2023.05.13