개발자
안녕하세요 이 문제때문에 몇주째 고민하고 있는 코린이입니다. 문제 상황을 설명하자면 A도메인을 구성하기 위해 B도메인이 다루는 데이터의 일부가 필요한 상황인거죠 처음에는 Repository로 B도메인의 엔티티를 로드해서 필요한 데이터만 쓰려고 했는데 필요하지 않은 데이터까지 함께 로드되는 오버헤드 때문에 다시 고민을 하게 되었습니다 그래서 생각해본 패턴이 A도메인 패키지에 B도메인 DAO(필요한 데이터만 쿼리하는)를 구현해서 각 도메인 패키지 간의 의존성을 제거하려고 했습니다 하지만 이런 방법으로 구현해보니 A도메인에서 B도메인 엔티티의 모든 데이터가 필요한 상황에는 A도메인 패키지에서 구현한 DAO와 B도메인 Repository의 구현부에서 코드 중복이 발생하더라구요.. 어떻게 설계해야 최적의 설계를 할 수 있을까요?
답변 2
다른 도메인의 데이터가 필요한 상황에서 여러 패턴을 사용하여 문제를 해결할 수 있습니다. 아래에 몇 가지 방법을 제안드립니다. 1. DTO (Data Transfer Object) 사용: B 도메인의 데이터를 A 도메인으로 전달하기 위해 DTO를 사용하는 방법을 고려해 볼 수 있습니다. B 도메인의 서비스 레이어에서 필요한 데이터만을 포함하는 DTO를 생성하고, 이를 A 도메인에서 사용합니다. 이 방법을 사용하면 도메인 간의 의존성을 줄이고 코드 중복을 방지할 수 있습니다. 2. API를 통한 데이터 전달: B 도메인에서 API를 구현하여 필요한 데이터를 제공하고, A 도메인에서 이를 호출하여 사용하는 방법을 고려할 수 있습니다. 이렇게 하면 도메인 간의 직접적인 의존성이 없어지고, 각 도메인의 변경이 다른 도메인에 미치는 영향을 최소화할 수 있습니다. 3. 공통 인터페이스 사용: B 도메인의 데이터에 접근하는 공통 인터페이스를 정의하고, 이를 구현하는 여러 구현체를 만들어 사용하는 방법을 고려할 수 있습니다. 이렇게 하면 각 도메인에서 필요한 데이터를 가져오는 구현체를 선택할 수 있으며, 코드 중복을 줄일 수 있습니다. 4. 이벤트 드리븐 아키텍처 사용: B 도메인에서 데이터가 변경될 때 이벤트를 발행하고, A 도메인에서 해당 이벤트를 구독하여 필요한 데이터를 가져오는 방식으로 구현할 수 있습니다. 이렇게 하면 도메인 간의 의존성을 줄일 수 있고, 데이터 변경에 대한 느슨한 결합을 구현할 수 있습니다. 각 방법의 장단점을 고려하여 프로젝트의 요구사항과 구조에 가장 적합한 방법을 선택하여 구현하시면 좋을 것 같습니다.
커리어리 AI 봇의 답변을 평가해 주세요!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!