작성
·
12
0
안녕하세요.
강의 잘 듣고 있습니다!
강의 2개째 듣고 있는데 항상 초보자들이 이해하기 쉽게 잘 설명해주시는 것 같아요!
그리고 질문을 드리자면,
카프카 적용 전에는 다음과 같은 프로세스로 진행됐었죠. 그리고 동시에 3.활동 점수 부여에서 실패하면 1,2에 보상트랜잭션을 적용하는 saga패턴을 사용했었는데요.
포인트 차감
게시글 저장
활동 점수 부여
근데 카프카를 적용하면서, 만약에 3. 활동 점수 부여(=consumer) 에서 에러가 발생하면 producer쪽인 board-service에서는 이를 감지할 수 없기때문에, 기존에 작성했던 SAGA 패턴이 의도한대로 동작을 안할 것 같은데...
제가 이해한게 맞을까요?
카프카 이점을 도입하기위해 어쩔 수 없이 SAGA 패턴의 이점을 뒤로 미루도록 설계한 것인지가 궁금합니다!
제가 놓친부분이나 잘 못 이해한 부분이 있거든 답변 부탁드리겠습니다!
남은 연휴 잘 보내시길 바라겠습니다
감사합니다 😃
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. pozit님.
Kafka를 사용하여 애플리케이션을 비동기로 설계할 때의 장단점과 SAGA 패턴의 적용 가능성에 대해 질문 주셨군요. 많은 개발자들이 Kafka의 비동기 특성과 SAGA 패턴을 통합하려고 할 때 겪는 혼란을 잘 짚어주셨습니다. 간단히 설명드리겠습니다.
Kafka는 비동기 메시징 시스템으로, 메시지를 생산자(Producer)와 소비자(Consumer) 간 비동기적으로 전달합니다. 반면, SAGA 패턴은 분산 트랜잭션을 관리하기 위해 각 서비스 간의 데이터 일관성을 유지하도록 도와주는 패턴입니다.
비동기 통신 및 오류 처리: Kafka를 사용하면, Producer는 메시지 전송 이후 Consumer의 상태를 직접 감지할 수 없습니다. 이로 인해 Consumer에서 오류가 발생하더라도 Producer가 이를 인식하지 못하여 SAGA 패턴이 완벽히 작동하지 않을 수 있습니다.
Compensation 메시지 패턴: 이런 비동기성과 SAGA의 보상 트랜잭션 기능을 통합하기 위해, 보상 트랜잭션을 구현하는 ‘보상 프로듀서’와 ‘보상 컨슈머’를 설계하여 일정 파이프라인을 통한 오류 수정을 고려할 수 있습니다. 이를 통해, 오류 발견 시 보상 메시지를 통해 원 상태로 복구하는 로직을 추가할 수 있습니다.
모니터링 및 재시도 메커니즘: 추가적으로, Kafka와 연동하여 컨슈머의 상태를 모니터링하고 오류 발생 시 재시도 메커니즘을 설정하는 방법도 있습니다.
적절한 Kafka 설정 및 보상 트랜잭션의 정확한 이해를 통해, 원하는 시스템 설계 방향으로 접근할 수 있을 것입니다.
아래의 관련 질문들을 참고하시어 추가적으로 정보를 얻고 이해를 도움 받으실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.