작성
·
544
1
안녕하세요, 수업 잘 듣고 있습니다!
질문 : 주문을 함으로써 제품 수량이 감소한다는 것은 비즈니스 로직(요구사항)으로 볼 수 있을 것 같습니다. 도메인 주도 패턴에서는 주문 정보를 생성함과 동시에 제품 재고 정보가 같이 업데이트 되는 것이 하나의 트랜잭션에 묶일 것 같습니다.
이번 카프카 데이터 동기화에서는 이러한 부분을 트랜잭션에 묶지 않고 별도로 후속 동기화 처리를 하는 부분을 설명해주셨습니다.
MSA에서는 제품(카탈로그) 서비스 조직과 주문 서비스 조직이 분리되어 있다는 전제 하에 주문을 했다는 것을 알려주고 재고 관리는 제품 서비스 조직에게 일임하는 것인가요?
주문 서비스 팀은 주문을 했다는 사실을 메시지 큐 토픽에 전달함으로써 로직을 마치고, 이후 제품 서비스나 그 외 다른 서비스 팀이 해당 정보를 가지고 재고 관리 등 후처리를 하는 형태인 것인가요?
모노리틱 환경에서만 작업을 해봐서, 데이터를 처리하는 트랜잭션 부분에 대해서 ACID나 BASE라는 용어를 이해는 해도 이를 실무에 적용하는 부분에 대해 애매한 경계선이 있는 것 같습니다.
다시 질문:
1. 트랜잭션으로 묶는 기준이 있을까요?
2. REST로 제품 서비스를 업데이트 하는 로직을 직접 수행하는 것은 바람직하지 않을까요?
3. 데이터 동기화는 향후 제품 서비스 외 확장을 고려하는 것이 목적인가요?
질문이 길어졌는데 읽어주셔서 감사합니다!
답변 2
1
뒤 강의를 더 들어보니 분산 DB를 동기화 하기 위함이군요.
MSA는 예전과 같은 모노리틱의 트랜잭션 하나로 요구사항 이벤트 하나를 묶을 수는 없군요.
1. 트랜잭션의 경우, 서비스 별로 DB를 관리할 경우 Feign Client의 라운드 로빈 방식으로 묶일 수 없고...
2. REST로 (Feign Client로) 호출하지 못하는 것도 위와 마찬가지네요.
3. 확장도 확장이지만 당장 분산 DB 사이의 동기화가 목적이군요.
셀프로 답을 달았지만 잘못되었거나, 조금 더 보충할 수 있는 답변을 주신다면 큰 도움이 될 것 같습니다.
감사합니다.
0
저도 비슷한 생각을 하고 있었는데 검색해보니
트랜잭션 관련하여 후속강의를 준비하고 있다고 합니다.
https://www.inflearn.com/questions/198798
빨리 후속 강의가 나오길 기다려야겠네요.