미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
비즈니스 로직을 카프카로 동기화하는 장/단점이 궁금합니다.
안녕하세요, 수업 잘 듣고 있습니다!
질문 : 주문을 함으로써 제품 수량이 감소한다는 것은 비즈니스 로직(요구사항)으로 볼 수 있을 것 같습니다. 도메인 주도 패턴에서는 주문 정보를 생성함과 동시에 제품 재고 정보가 같이 업데이트 되는 것이 하나의 트랜잭션에 묶일 것 같습니다.
이번 카프카 데이터 동기화에서는 이러한 부분을 트랜잭션에 묶지 않고 별도로 후속 동기화 처리를 하는 부분을 설명해주셨습니다.
MSA에서는 제품(카탈로그) 서비스 조직과 주문 서비스 조직이 분리되어 있다는 전제 하에 주문을 했다는 것을 알려주고 재고 관리는 제품 서비스 조직에게 일임하는 것인가요?
주문 서비스 팀은 주문을 했다는 사실을 메시지 큐 토픽에 전달함으로써 로직을 마치고, 이후 제품 서비스나 그 외 다른 서비스 팀이 해당 정보를 가지고 재고 관리 등 후처리를 하는 형태인 것인가요?
모노리틱 환경에서만 작업을 해봐서, 데이터를 처리하는 트랜잭션 부분에 대해서 ACID나 BASE라는 용어를 이해는 해도 이를 실무에 적용하는 부분에 대해 애매한 경계선이 있는 것 같습니다.
다시 질문:
1. 트랜잭션으로 묶는 기준이 있을까요?
2. REST로 제품 서비스를 업데이트 하는 로직을 직접 수행하는 것은 바람직하지 않을까요?
3. 데이터 동기화는 향후 제품 서비스 외 확장을 고려하는 것이 목적인가요?
질문이 길어졌는데 읽어주셔서 감사합니다!