“만들면서 배우는 클린 아키텍처” 이 책은 전통적인 계층형 아키텍처 스타일을 단점을 지적하고 도메인 중심 아키텍처의 장점을 설명하는 책입니다. 도메인 중심 아키텍처를 어떻게 구현하는지 실습을 보여주고 다양한 계층 간 매핑 전략과 아키텍처의 요소들을 어떻게 애플리케이션에 녹여낼지에 대해서 책을 통해 배울 수 있습니다.
저자인 톰 홈버그는 자바 생태계에서 소프트웨어 개발자, 아키텍트 멘토로 일하면서 소프트웨어 프로젝트에서 마주했던 주제들에 대해서 깊이 파고들고 이 책을 통해서 아키텍처 스타일에 대해서 소개합니다.
이 책의 전반적인 내용은 기존 계층형 아키텍처의 문제점에 대해서 설명합니다. 문제점은 계층형 아키텍처는 데이터베이스 주도 설계에 있다고 합니다.
도메인 주도 설계에는 주체가 도메인의 행동으로 모델링이 되어야 하는데 데이터베이스에 의존하게 되면 비즈니스 관점에서는 전혀 맞지 않은 방법입니다. 따라서 로직을 제대로 이해하기 어렵습니다.
데이터베이스 중심 아키텍처가 만들어지는 주원인은 ORM(object-relational-mapping) 프레임 워크를 사용하는데 이서 비롯됩니다.
ORM에 의해서 엔티티들이 영속성 계층에서 관리가 되고 영속성 계층과 도메인 계층 사이의 강한 결합이 생깁니다. 영속성 코드가 도메인 코드에 녹아들어 가면서 유연하고 선택의 폭을 높여주는 계층형 아키텍처의 목표와 정반대 되는 상황이 됩니다.
계층형 아키텍처의 문제점을 지적하고 이를 해결하는 방법 중 헥사고날 아키텍처(=육각형 아키텍처)에 대해서 설명합니다. 헥사고날 아키텍처가 기존 아키텍처의 문제점을 어떻게 해결하고 도메인 중심 아키텍처에 필요한 요소들과 각 계층 간에 매핑 전략을 설명합니다.
백엔드 개발에서는 클린 아키텍처 구조를 어느 정도 정형화 되어 있는 거 같습니다. 이전에는 MyBatis 같은 SQL 매퍼 프레임워크를 사용했지만 현재는 JPA 와 같은 ORM를 많이 사용합니다. 사실 JPA가 좀 더 도메인 중심의 설계에 맞게 사용하기 위해서 사용하는 걸로 알고 있었는데 이 책에서는 ORM이 데이터베이스 중심 아키텍처를 만드는 원인 중 하나라고 말을 해서 놀랐습니다. 그 문제는 설계 단계에서 비즈니스 관점으로 생각하기보다는 먼저 데이터베이스 테이블 설계 중심으로 생각해서 이런 문제점이 생긴 거 같습니다.
이 책을 읽으면서 도메인 중심 설계는 도메인의 행동 바탕으로 설계가 되어야 한다는 것을 알게 되었습니다.
앞으로도 이 점을 유의하면서 도메인 중심 설계 아키텍처를 해봐야겠다는 생각이 들었습니다.
저자는 도메인 중심 설계 아키텍처를 어떻게 해야 하는지 이 책을 통해서 설명합니다. DDD(도메인 주도 개발)에 관심이 많은 분들은 이 책을 읽어보시고 개인 프로젝트에서도 한 번쯤 시도해 보면 좋을 것 같습니다.