MSA 에서 연관관계
1073
작성한 질문수 3
안녕하세요 강의를 보던 도중 질문이 생겼습니다.
보통 JPA 서비스 설계시 모놀로틱한 서비스에서 서로 다른 엔티티를 연관관계를 통해 데이터베이스 JOIN 을 이용하여 서비스 하는것으로 알고 있습니다.
그러나 MSA 환경에서는 데이터베이스 자체가 분리되어 있는 상태여서 해당 방식은 불가능 하다는 것을 이전 여러 질문들을 통해 알게 되었습니다.
이러한 점을 해결할 방식을 찾는 도중 DDD를 이용하여 관점을 분리하고 연관된 엔티티들을 묶어 Aggregator 개념으로 묶어서 사용한다는 글들을 알게 되었습니다.
여기서 질문인 점은 Aggregator로 연관된 엔티티를 묶는 다는 의미가
하나의 마이크로 서비스에 여러 엔티티를 두어 기존 사용하던 JPA 연관관계처럼 사용한다는 것인지
아니면 분리된 두 서비스는 각자 두고 상위 서비스를 다시 선언하여 해당 서비스에서 연관된 두 엔티티를 조회하여 묶어서 사용하는 것인지 궁금합니다.
아니면 제가 아예 Aggregator 라는 개념을 잘못 이해한 것일까요?
답변 1
1
안녕하세요, 이도원입니다.
질문하신 Aggregator의 2개의 정의에 중에 어느 하나가 정답이라고 고르기 보다는 아래의 정의를 참고해서 해석을 달리 할 수 있을 것 같습니다.
Aggregate는 하나의 트랜잭션의 단위이자 서비스의 경계를 의미. 1개 이상의 엔티티로 구성되며, 다수의 엔티티로 구성될 경우 루트 Aggregate에서 일반화 정보를 처리할 수 있음
위에 정의한 내용을 바탕으로 설명해 보면, MS는 반드시 하나의 엔티티만을 구성하여 처리해야 한다는 조건이 있는 것이 아닙니다. 작업하고자 하는 서비스의 단위(경계)에 필요한 다수의 엔티티들을 가지고 있는 MS를 사용할 수 있으며, 이를 구성할 때, 1개 이상의 엔티티로 구성되어야 하는 서비스도 가능하고, 하나의 엔티티에서 서비스에 필요한 데이터를 처리할 수도 있습니다. 어떻게 보면 1번째 정의 내리신 부분이 위에 정의한 의미에 가깝다고 볼 수도 있지만, 2번째 정의 내리신 내용도 일부 적용해서 해석하는 것이 필요하다고 생각됩니다.
감사합니다.
kafka 업데이트 강의 듣고 시포요
0
103
2
강의 교안
0
94
2
마이크로서비스간 통신 시, 인증 처리
0
101
2
api gateway 에서 인증 처리
0
70
1
섹션 19 질문드립니다
0
72
2
강의 자료 업데이트
0
95
2
부하분산 강의 섹션
0
62
1
강의자료는 어디에서?
0
95
2
강의 자료는 어디서 다운 받을 수 있나요?
0
125
2
전체 사용자 조회시 오류
0
63
1
혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??
0
117
2
학습 방향
0
101
2
카프카 커넥터 사용 목적 문의
0
89
2
kafka 강의
0
115
2
서비스 디스커버리 종류
0
90
2
강의 자료에 대해서 궁금해요
0
122
2
GlobalFilter, LoggingFilter가 동작하지 않습니다.
0
91
2
Kafka Source Connect 버전 에러
0
92
2
소스커넥터는 사용안한 거 맞죠?
0
84
2
강의자료 업데이트 문의
0
98
2
강의에서 BCryptPasswordEncoder 에 역할(5-2)
0
63
1
강의 업데이트 계획이 궁금합니다.
0
117
2
MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)
0
167
2
어떤 것이 업데이트 된 건가요?
0
168
2





