미니멀 개발일기

헥사고날 아키텍처 탐방 일시정지

SH3542 2025. 1. 9. 18:44

한달간 짬날 때마다 탐방했고 사이드 프젝하고싶은게(유투브 유틸라이저) 생겨서 중지

 

repo: (아직 dev branch에 있음, main에 merge 안함)

https://github.com/dltkdgkr123/hexagonal-architecture

 

based on:

https://github.com/thombergs/buckpal

 

 

배운 것 :

- 테스트 코드

1. mockito기반 모킹 찍먹 (공부할 가치가 충분한 좋은 기능이었음)

2. JPA 테스트, Spring Boot 통합 테스트 일부

3. Parameterized 테스트 경험

4. 테스트 네이밍 컨벤션 (카멜 + 스네이크 케이스 혼합해서 기대동작 자세히/가독성있게 적기)

5. sql 파일 import해서 사용하기 (@Sql은 intellij 커뮤니티 버전에서 지원 안해줘서 일단 테스트용 .properties 파일에 넣어서 씀)

6. 공용 test data 빌더 패턴으로 작성하기

- 프로덕션 코드

1. 헥사고날 아키텍처 탐방 (머리 터질뻔함)

2. 불변 객체 다루기 (java record 키워드 기반 vs lombok @Value 기반)

3. 커스텀 애노테이션 적용하기

4. jpa entity <-> POJO 맵핑, 영속성 다루기

5. 네이티브 쿼리 클론

6. 가변인자(...), immutable vs unmodifiable 일부

7. 금융도메인 찍먹 (ActivityWindow에 활동 내역을 담는 느낌)

 

못한 것:

1. arcunit 기반 아키텍처 테스트 (레이어 별로 컨벤션 위배하는지 검증하는 동작이었음)

2. jakarta 기반 validation (코드는 있는데 실제로 쓰고있는지 파악 안하고 종료)

3. thread, lock 관련 (소스 코드에도 NoOpAccountLock, //do nothing.. 으로 되어있음)

 

느낀 점:

고수의 코드를 클론하는건 많은 도움이 되지만 많은 정신소모도 동반한다.