헥사고날 아키텍쳐로 패키지 리팩토링

dasd412·2022년 12월 23일
0

MSA 프로젝트

목록 보기
12/25
post-custom-banner

다이어그램

리팩토링 전

기존 모놀리식 프로젝트 패키지 구조랑 똑같이 구성하고 있었다.
컨트롤러 - 서비스 - 리포지토리 구조의 레이어드 아키텍쳐다. 그런데 이렇게 하면, DB 중심의 아키텍쳐가 되기 쉽다고 한다.

리팩토링 후

  1. 컨트롤러 패키지에 있던 것들 중, 컨트롤러와 리퀘스트와 관련된 dto들은 in.web 패키지로 보냈다.
  2. feign 클라이언트, 카프카 메시지, 리스폰스와 관련된 dto들은 out 패키지에 보냈다.
  3. 도메인 패키지에 있던 리포지토리들은 out.persistence 패키지에 보냈다.
  4. 서비스는 인터페이스와 구현체로 나누었다.

리팩토링하고 느낀 점

  1. in과 out이라는 패키지 구조가 직관적으로 와닿았다. 특히 좋았던 것은 dto들을 역할에 따라 in과 out으로 구분하니 더 찾기 쉬워졌다는 것이다.
  2. 카프카 메시지와 관련된 패키지들은 어디에 두어야 할까 고민했었는데, 그 고민을 해결할 수 있었다.
  3. 도메인 내 리포지토리를 전부 out.persistence 로 보냄으로써, 도메인 패키지 내 코드들은 순수 POJO가 되었다.
  4. 서비스를 인터페이스와 구현체로 나누는 것은 아직 잘 모르겠다. 다형성때문인가?

나중에 클린 아키텍쳐 공부해서 이론을 좀 보강해야 할 것 같다. ㅎㅎ

profile
SW 마에스트로 14기 (스타트업 재직중)
post-custom-banner

0개의 댓글