본문 바로가기
주절주절/정보

헥사고날 아키텍처

by 띵커베르 2024. 2. 12.
728x90

src/
└── main/
    └── kotlin/
        └── com/
            └── yourapp/
                ├── common/ or core/ or shared/
                │   ├── mail/
                │   │   ├── port/
                │   │   │   └── MailService.kt
                │   │   └── infrastructure/
                │   │       └── MailServiceImpl.kt
                ├── user/
                │   ├── controller/
                │   ├── domain/
                │   ├── service/
                │   └── infrastructure/
                └── otherdomain/
                    ├── controller/
                    ├── domain/
                    ├── service/
                    └── infrastructure/

 

---

 

애플리케이션의 핵심 비즈니스 로직을 외부요소(ex:데이터베이스, 웹 프레임워크 등)로부터 분리하여 모듈화 하는것을 목표로 한다.

  • controller
    • 용도: 사용자의 요청을 받아 처리하고, 결과를 사용자에게 응답하는 역할을 합니다. 웹 어플리케이션에서는 REST API를 통해 클라이언트와 통신합니다.
    • 포함 내용: REST 컨트롤러 클래스들이 위치합니다. 이들은 HTTP 요청을 받아 비즈니스 로직을 처리하는 서비스 계층의 메서드를 호출하고, HTTP 응답을 반환합니다.
  • domain
    • 용도: 애플리케이션의 핵심 비즈니스 로직과 비즈니스 모델을 포함합니다. 이 계층은 외부 요소로부터 독립적이어야 하며, 애플리케이션의 비즈니스 규칙을 정의합니다.
    • 포함 내용: 도메인 모델값 객체), 도메인 서비스, 도메인 이벤트, 도메인 예외 등이 포함됩니다.
  • service
    • 용도: 애플리케이션의 외부와의 상호작용을 담당하는 인프라스트럭처 계층입니다. 데이터베이스 액세스, 외부 API 호출, 파일 시스템 작업 등을 처리합니다.
    • 포함 내용: 데이터베이스 리포지토리 구현체(JPA 리포지토리 등), 외부 서비스를 위한 클라이언트, 메일 서비스 구현체, 파일 저장 구현체 등이 포함됩니다. service 계층의 포트 인터페이스에 대한 실제 구현을 제공합니다.
  • infrastructure
    • 용도: 도메인 모델의 인터페이스를 구현하는 엔티티 클래스를 포함합니다. 이 계층은 데이터베이스 액세스 로직(JPA 리포지토리 등), 외부 API 클라이언트, 파일 시스템 작업 등 인프라스트럭처와 관련된 구현체를 담당합니다.
    • 포함 내용: 데이터베이스 리포지토리 구현체(JPA 리포지토리 등), 외부 서비스를 위한 클라이언트, 메일 서비스 구현체, 파일 저장 구현체 등이 포함됩니다. service 계층의 포트 인터페이스에 대한 실제 구현을 제공합니다.
728x90

댓글