boot2-hexagonal
헥사고날 아키텍쳐를 적용하기 위한 프로젝트 입니다.
각 영역(port, adapter) 에 대해 멀티 모듈 프로젝트로 분리하여 관리하고 있습니다.
프로젝트 스펙
스킬 셋
- Spring boot 2 / Gradle build
- Java 17
테스트
- Groovy4 / Spock Framework
아키텍쳐
- Hexagonal
- Spring multi module
멀티 모듈 구조 설명
- api 모듈 - input port
- useCase 정의(UseCase 인터페이스)
- 특이사항 - 도메인 id record
- id 에 대한 명세, Validation 을 record 로 설정하여 관리함.
- 값이 아닌 자료형 자체로 해당 도메인을 구분할 수 있다는 장점이 있음.
- core 모듈 - output port, adapter
- useCase 구현(Service 클래스)
- 도메인 구현(domains 패키지)
- output port 정의(domains.ports 패키지)
- output adapter 구현(adapters 패키지)
- server 모듈 - input adapter
- server 방식으로 구현(Spring Boot MVC)
이슈 & 브랜치 관리
- 이슈 생성
- 깃허브에서 이슈 템플릿으로 이슈를 생성합니다.
- 생성 시, 이슈 브랜치가 자동 생성됩니다.(GitHub Action create-issue-branch)
- PR 생성
- PR 생성 시 빌드 및 테스트 커버리지를 기록합니다. (GitHub Action pr-build-test-coverage-report.yml)
- PR 병합
- 병합 시, main 브랜치 기준 프로젝트 빌드 테스트를 진행합니다. (GitHub Action main-build.yml)
기타
- .flyway
- 데이터베이스 마이그레이션 툴
- DDL 쿼리 검증용으로 사용함
- .uml
- UseCase, Sequence, Domain uml
- .github
- 깃허브 설정용 디렉토리
- issue template - 이슈 작성용 markdown 템플릿
- workflows - gitHub action
- create-issue-branch
- 이슈 작성 시 브랜치 자동 생성
- PR 생성 시 이슈와 자동 연결
- build-test-coverage-report
- main 브랜치로 PR 또는 main 푸시할 경우 gradle build 테스트 수행
- jacoco test coverage report 코멘트 생성
도메인 별 명세서
1. 회원
Sequence
UseCase
Domain
2. 이메일
Sequence
UseCase
Domain
3. 인증
Sequence
UseCase
Domain