inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 데이터 JPA

사용자 정의 리포지토리 구현

CQRS 관련 질문

379

pwn2own

작성한 질문수 18

1

안녕하세요.

강의에 걸쳐서 배민은 CQRS를 도입하여 사용한다고 말씀해주신 부분이 기억나서 관련하여 정보들을 많이 찾아보고 있습니다.

그 중 한가지 질문이 생겼는데요.

명령 저장소와 조회 저장소를 분리해서 사용하는 경우 명령 저장소에 데이터 저장 후 이벤트 버스를 통해 조회 저장소에 데이터를 동기화 시킨다고 알고 있습니다.

그런데 만약 조회 쿼리가 발생했는데 해당 데이터가 최신이 아닌 경우 즉, 이벤트를 컨슈밍하여 동기화하기 직전 그 찰나의 순간인 경우를 대비할 수 있는 방법이 있을까요?

1. 이벤트를 처리하지않았기 때문에 조회 당시의 시점으로 봤을 때 동기화되기 이전의 데이터가 최신 데이터라고 보는게 맞음

2. 최신 데이터를 가져오는 것이 정말 중요한 요구사항으로 발생할 가능성이 적음.

3. 이벤트 드리븐의 특성에 따라 최종적 일관성에 대해 집중하는게 좋음.

대략 위 3가지정도의 이유로 인해 최신 데이터에 대한 걱정을 할 필요가 없을 것 같기도합니다만..아직 실무에서 CQRS를 겪어보지 않아서 어떻게 판단해야할지 헷갈리네요.

관련하여 영한님의 생각을 듣고 싶습니다 :)

감사합니다.

java spring JPA spring-boot

답변 1

0

김영한

안녕하세요. teamhide

이벤트 방식으로 데이터를 동기화하면 짧게는 수백ms ~ 수초 정도의 동기화 시간이 발생합니다.

여기서는 사실 기술적인 문제 뿐만 아니라 비즈니스 상황을 고려해서 결정 해야합니다.

예를 들어서 쿠폰의 유효성 검증, 계좌 이체와 같이 매우 크리티컬하게 동기화가 중요하다면, 최종적 일관성을 사용하면 안됩니다.

반면에 상품의 이미지나, 설명이 변경되는 정도라면 충분히 더 늦게 반영되어도 되겠지요?

감사합니다.

0

pwn2own

맞는 말씀입니다. 그렇다면 말씀해주신 계좌이체처럼 동기화가 중요한 요구사항의 경우 어떤 형식으로 대처해야할까요?

1. 읽기 저장소가 아닌 명령 저장소를 직접 접근하여 조회한다.

2. 명령 저장소에 저장 후 이벤트를 발행하는것이 아닌 직접 읽기 저장소에 접근하여 업데이트한다.

대략 위처럼 2가지의 방법을 생각해봤는데 실무에선 어떤 방법을 사용하나요?

0

김영한

이런 경우 최근에는 마이크로서비스로 많이 되어 있는데, 주로 명령 저장소를 제공하는 시스템의 실시간 API를 직접 호출하게 됩니다. 감사합니다.

0

pwn2own

혹시 rest api콜을 말씀하시는걸까요?

0

김영한

네 맞습니다^^

0

pwn2own

감사합니다!!

changeTeam 메서드 질문

0

34

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

87

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

128

3

MemberRepository 구현체

0

71

1

pdf 표현 질문드립니다.

0

77

1

로그가 남지 않는 문제.

0

98

1

테스트 라이브러리가 강의는 junit4가 맞나요??

0

78

2

pdf 파일과 차이점이 있는 것같은데 문제 없나요?

0

75

2

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

0

102

2

Sort 인터페이스는 잘 사용 안하나요?

0

59

1

스캔대상 질문드립니다.

0

48

1

하이버네이트6에서의 최적화에 이은 질문

0

92

1

save() vs saveAndFlush DB 통신 횟수

0

58

1

순수 JPA 리포지토리 코드 수정부분

0

92

2

bulk연산 후 flush하는 이유를 모르겠어요

0

163

3

bulk insert 질문입니다.

0

191

2

교만했던 것 같아요.

0

152

1

RESTful 강의는 안하시는 건지 궁금합니다.

0

154

2

동적 테이블에 대한 질문

0

89

1

영속성 전이와 연관관계

0

141

2

강의 10:25 질문

0

78

1

단건 update 질문

0

104

2

엔티티 와 도메인의 경계

0

129

1

UsernameOnlyDto 타입 type mismatch 오류

0

123

1