강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

test test님의 프로필 이미지
test test

작성한 질문수

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

강의 자료

여러 엔티티의 조합으로 리포트를 제공해야할 때

작성

·

15

0

안녕하세요 실무에서 헥사고날을 적용 예정 중에 있습니다.

 

  1. 이미 DB 모델링이 되어 있고 하나의 우리 팀 시스템이 아닌 여러 팀의 시스템에서 같은 테이블을 바라보는 경우 헥사고날 적용은 어떻게 해야하는지 궁금합니다.

 

  1. 하나의 애그리거트로 만들 수 없는 여러 엔티티의 조합으로 조회를 할 경우, 예를 들어 백오피스에서 20개 이상의 조건과 각 조건이 여러 테이블에 나뉘어져있어 Join을 걸어야 할 경우의 도메인 모델과 리턴은 어떻게 해야하는지 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. test test님!

헥사고날 아키텍처와 도메인 모델 패턴을 실무에 적용하는 것은 상당히 좋은 선택입니다. 하지만 이미 DB 모델링이 완료되어 있고 여러 팀의 시스템이 동일한 테이블을 사용 중인 경우에는 몇 가지를 고려해야 합니다.

1. 여러 팀의 시스템이 같은 테이블을 바라볼 때 헥사고날 적용

헥사고날 아키텍처는 시스템과 외부 환경(예: 데이터베이스, 외부 시스템) 간의 느슨한 결합을 만들기 위해 설계된 패턴입니다. 여러 시스템이 같은 테이블을 사용할 때, 아래와 같은 방법을 고려할 수 있습니다:

  • 도메인 모델의 독립성 유지: 각 팀이 자체적으로 도메인 모델을 정의하고, 필요에 따라 데이터베이스 테이블은 어댑터를 통해 접근합니다. 이 때, 각 팀의 어댑터가 실제 DB와의 상호작용을 캡슐화하고, 팀이 서로 다른 어댑터를 가질 수 있어야 합니다.

  • API를 통한 데이터 접근: 데이터베이스에 대한 직접적인 접근을 줄이고, API를 통해 상호작용 함으로써 헥사고날 아키텍처의 ‘포트’와 ‘어댑터’ 개념을 활용할 수 있습니다. 이를 통해 데이터베이스 스키마 변경 시에 미치는 영향을 최소화합니다.

2. 여러 엔티티의 조합으로 리포트를 생성하는 경우

Query와 리포트 생성은 일반적인 도메인 모델의 로직과는 조금 다를 수 있습니다. 리포트는 특정 비즈니스 니즈를 충족시키기 위한 데이터 뷰이며, 다음 사항을 고려해보세요:

  • 특정 ViewModel: 여러 테이블의 데이터를 조합하여 하나의 ViewModel 또는 DTO(Data Transfer Object)를 만들어 클라이언트에 반환합니다. 이 ViewModel은 특정 리포트에 맞게 설계되며, 여러 엔티티의 데이터를 담을 수 있습니다.

  • 별도의 쿼리 서비스 설계: 복잡한 조회 로직은 별도의 쿼리 서비스를 통해 처리할 수 있습니다. 이는 도메인 모델의 변경 또는 비즈니스 로직과 분리되어 있어 유지보수성이 높습니다.

관련된 내용을 더 알고 싶다면 아래의 유사 질문을 참고하시면 도움이 될 것입니다:
- 헥사고날 아키텍처에서 복잡한 조회 처리 방법
- 여러 엔티티의 조합 리포트 만들기

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

test test님의 프로필 이미지
test test

작성한 질문수

질문하기