티스토리 뷰

반응형

`만들면서 배우는 클린 아키텍처` 책을 보면서 헥사고날 아키텍처 구조에 대해 학습하고 있다.

기존까지는 생각하지 못했던, 또한 패키지나 구조에 대해 잘 몰라 '이렇게 하는게 맞나'하면서 고민했던 것들이 좀 풀려나가는 것 같다.

이 글에서는 학습하며 배웠던 패키지 구조와 간단 아키텍처를 백업용으로 작성하고자 한다.

 

패키지 구조

책에서는 adapter, application, domain을 주 패키지로 잡고, 내부적으로 port, in, out 등의 부 패키지로 구성하고 있다.

com.binux.server
├── BinuxApplication.java
├── BinuxConfiguration.java
├── BinuxConfigurationProperties.java
├── account
│   ├── adapter
│   │   ├── in
│   │   │   └── web
│   │   └── out
│   │       └── persistence
│   ├── application
│   │   ├── port
│   │   │   ├── in
│   │   │   └── out
│   │   └── service
│   └── domain
└── common

 

 

 

그림

기본적으로 헥사고날 아키텍처를 하면 다음과 같은 그림구조가 나온다.

https://reflectoring.io/spring-hexagonal/

이름에서 알 수 있듯, 육각형 구조의 코어를 가지고 여러 외부 어댑터들로 이루어져있다.

- 핵심적으로 보아야 하는 것은 코어에서 외부로 향하는 의존성이 없다는 것이다. 이는 외부 어댑터들이 목적에 맞게 포트와 잘 커뮤니케이션 되도록 구현되었다면 쉽게 교체가 가능하다는 뜻이다.

- 즉, 외부와 도메인 로직의 결합성(의존성)을 제거하여 변경할 이유의 수를 줄일 수 있고, 이는 유지보수성을 높인다.

 

 

위 그림은 패키지 구조와 볼 때, 필자 입장에서 조금 헷갈리는 부분이 있었기에 다음과 같이 조금 더 간략하게 그려서 이해하고 있다.

 

320x100
반응형
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함