본문 바로가기
설계 이모저모

만들면서 배우는 클린 아키텍처

by 민휘 2024. 1. 17.

 

마이크로서비스를 공부하고 나서 소프트웨어 아키텍처에 대한 관심이 생겼다. 클린 아키텍처를 읽어볼까 하다가 코드부터 쳐보고 싶어서 쿡북인 <만들면서 배우는 클린 아키텍처>를 읽고 코드를 익혀보았다.

 

헥사고날 아키텍처를 살펴보면서 가장 인상적이었던 부분은 DIP를 적용해서 계층 간 의존성을 역전한 부분이었다. 우아한 객체지향 세미나에서 처음 봤을 때는 잘 와닿지 않았던 부분인데, 패키지로 모듈 범위를 정하는 것을 보고 나니 되게 멋지고 간단한 접근 방법인 것 같다.

 

코드를 추가하면서 내가 느낀 헥사고날 아키텍처의 장점은 로직을 빠르게 찾을 수 있는 부분인 것 같다. API 진입하는 부분에 문제가 있으면 웹에 접근하는 패키지 부분을 보면 되고, DB 매핑하는 부분이 궁금하면 JPA 설정한 클래스의 코드를 살펴보면 된다. 유스 케이스가 궁금하다면 잘게 나눠진 서비스를 보면 된다. 상위 패키지를 도메인 단위로 분리하기 때문에 직관적이다. 거대한 진흙 덩어리인 상태의 내 프로젝트에서는 로직 찾으려면 여러 클래스를 뒤져야 하는데, 반성을 좀 했다. 나중에 제로존 유저 기능 헥사고날 아키텍처로 개선해봐야지.

 

헥사고날 아키텍처를 비롯한 클린 아키텍처는 외부와 상호작용하는 기술들로부터 내부를 캡슐화한다. 그래서 내부에 위치하는 비즈니스 로직에 다양한 설계를 적용해볼 수 있다는 점이 가장 큰 장점인 것 같다. 상위 디렉터리를 도메인 개념으로 쪼개는 방법이 이 책에서 소개되었으니 DDD를 공부해보고 이 아키텍처를 반영해보는 것도 좋은 듯. 오브젝트를 막 읽고 비즈니스 로직의 유연성에 눈을 뜨고 나서, 이걸 스프링 아키텍처에 적용해보려다가 계층 캡슐화는 어떻게 하는지 막막했는데 헥사고날 아키텍처가 이 의문에 대한 답을 제시해줬다. 재밌게 읽었음!

 

 

 

 

자세한 내용은 아래 정리해둔 노션 링크 참고!

 

만들면서 배우는 클린 아키텍처 | Notion

Built with Notion, the all-in-one connected workspace with publishing capabilities.

uncovered-chocolate-cea.notion.site