헥사고날 아키텍처 트리 구조

src
└── main
    └── java
        └── com
            └── example
                ├── adapter
                │   ├── in
                │   │   ├── web
                │   │   │   ├── controller
                │   │   │   │   ├── OrderController.java
                │   │   │   │   └── CustomerController.java
                │   │   │   └── dto
                │   │   │       ├── OrderRequest.java
                │   │   │       ├── OrderResponse.java
                │   │   │       ├── CustomerRequest.java
                │   │   │       └── CustomerResponse.java
                │   │   ├── grpc
                │   │   │   └── GrpcServerImpl.java
                │   │   ├── kafka
                │   │   │   └── KafkaListener.java
                │   │   └── event
                │   │       └── EventListener.java
                │   ├── out
                │   │   ├── persistence
                │   │   │   ├── entity
                │   │   │   │   ├── OrderEntity.java
                │   │   │   │   └── CustomerEntity.java
                │   │   │   ├── repository
                │   │   │   │   ├── OrderRepository.java
                │   │   │   │   └── CustomerRepository.java
                │   │   ├── OrderRepositoryAdapter.java
                │   │   ├── CustomerRepositoryAdapter.java
                │   │   ├── grpc
                │   │   │   └── GrpcClient.java
                │   │   ├── kafka
                │   │   │   └── KafkaProducer.java
                │   │   └── event
                │   │       ├── EventPublisher.java
                │   │       └── DomainEvent.java
                ├── application
                │   ├── port
                │   │   ├── in
                │   │   │   ├── OrderUseCase.java
                │   │   │   └── CustomerUseCase.java
                │   │   └── out
                │   │       ├── OrderRepositoryPort.java
                │   │       └── CustomerRepositoryPort.java
                │   ├── service
                │   │   ├── OrderService.java
                │   │   └── CustomerService.java
                │   └── command
                │       ├── CreateOrderCommand.java
                │       ├── UpdateOrderCommand.java
                │       ├── CreateCustomerCommand.java
                │       └── UpdateCustomerCommand.java
                ├── domain
                │   ├── model
                │   │   ├── Order.java
                │   │   └── Customer.java
                ├── config
                │   ├── AppConfig.java
                │   └── SecurityConfig.java
                ├── util
                │   └── DateUtils.java
                ├── exception
                │   ├── OrderNotFoundException.java
                │   └── CustomerNotFoundException.java
                └── mapper
                    ├── OrderMapper.java
                    └── CustomerMapper.java

패키지 설명

  1. adapter 패키지:
  2. application 패키지:
  3. domain 패키지:
  4. 추가 패키지:

이러한 구조는 헥사고날 아키텍처의 원칙에 따라 명확한 책임을 가지며, 시스템의 유연성과 유지보수성을 높이는 데 기여합니다. 각 계층은 독립적으로 발전할 수 있도록 설계되었습니다.

2. 일반적으로 이런 구조로 사용하는가?


헥사고날 아키텍처에서 제시한 패키지 구조는 일반적으로 명확한 책임 분리를 통해 애플리케이션의 유지보수성과 확장성을 높이는 데 중점을 둡니다. 제시하신 트리 구조는 헥사고날 아키텍처의 모범 사례와 잘 맞아떨어집니다. 아래는 헥사고날 아키텍처의 기본 원칙과 제시한 구조에 대한 검토입니다.

헥사고날 아키텍처의 원칙

  1. 명확한 책임 분리:
  2. 애플리케이션 로직과 외부 의존성의 분리:
  3. 포트와 어댑터 패턴:

제시된 트리 구조의 검토