강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

김준환님의 프로필 이미지
김준환

작성한 질문수

비전공자도 이해할 수 있는 MSA 입문/실전 (feat. Spring Boot)

[실습] 게시글 작성 API에 Saga 패턴 적용시키기 - 2

보상 트랜잭션을 위한 catch 문 안에서 에러가 발생한다면 어떻게 되는 건가요?

작성

·

25

·

수정됨

0

  • 만약 에러가 나서 보상 트랜잭션이 발생했는데 거기서 또 에러가 난다면 따로 모니터링 시스템 같은 걸 구축해서 추후에 수동으로 롤백을 시켜주어야하는 방식일까요? (동기식 일때 입니다!)

답변 2

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 준환님 ! 질문 잘해주셨어요 !

질문해 주신 내용에 대해 답변드려볼게요 ~

말씀하신 대로 보상 트랜잭션(catch문 안의 로직)에서 에러가 발생하면

데이터 불일치 상태가 될 수 있어요 !

이건 실무에서도 굉장히 중요하게 다뤄지는 문제예요 !

이를 해결하기 위해 일반적으로 보상 트랜잭션이 실패했을 때 바로 포기하지 않고

일정 횟수만큼 재시도하는 로직을 넣어주는 방식을 많이 사용해요 !

그리고 같은 보상 트랜잭션을 여러 번 실행해도 결과가 동일하도록 멱등성을 보장하는 설계도 중요해요!

이렇게 하면 재시도를 해도 안전하게 처리할 수 있거든요 :)

그럼에도 불구하고 재시도까지 전부 실패한 경우에는 말씀하신 것처럼

모니터링 시스템에서 알림을 받고 운영자가 수동으로 데이터를 정리해주는 방식을 사용하기도 해요 !

실제로 수업자료에도 언급되어 있듯이,

Saga 패턴을 완벽하게 구현하려면 멱등성, 동시성 이슈, 격리성 문제 등을 추가로 고려해야 해요 !

이런 내용들은 기회가 된다면 MSA 후속 강의에서 따로 다룰 예정이에요 ~

추가로 궁금하신 점 있으시면 또 질문 남겨주세요~~

0

안녕하세요, 인프런 AI 인턴입니다. 김준환님.

보상 트랜잭션을 구현할 때, 트랜잭션 내에서 추가적인 에러가 발생하는 상황은 종종 고민되는 부분입니다. 이를 어떻게 처리할지에 대해 몇 가지 방안을 설명드리겠습니다.

보상 트랜잭션 중 에러 발생 시 처리 방안

  1. 모니터링 시스템 구축: 보상 트랜잭션 중 에러가 발생할 경우, 해당 상황을 즉시 인지하고 대응할 수 있도록 모니터링 시스템을 구축하는 것이 필요합니다. 로그 수집 및 알림 기능을 가진 모니터링 툴(예: Prometheus, Grafana, ELK Stack)을 사용하여 에러 발생 시 알림을 받을 수 있습니다.

  2. 알림 및 알림 시스템: 에러가 발생하면 해당 정보가 관리팀에 전달되어 신속한 확인 및 처리가 가능하도록 알림 시스템을 구성하는 것이 중요합니다.

  3. 수동 롤백 지원: 보상 트랜잭션에서도 실패할 가능성이 있는 만큼, 운영팀이 수동으로 롤백을 조치할 수 있도록 위한 대기열 및 수동 처리를 위한 툴을 마련해 두는 것이 좋습니다.

  4. DLT(Dead Letter Topic) 활용: 에러가 발생한 메시지를 DLT로 보내어 추후에 특정한 조건이 만족될 때 해당 메시지를 재처리하는 방식으로도 설계할 수 있습니다. 이는 메시지 손실 없이 문제를 해결하고, 발생한 문제의 원인을 지속적으로 분석할 수 있도록 도와줍니다.

관련 질문 참고 링크

더 많은 정보를 얻고 싶으시다면 아래의 관련 질문들을 참고해 보시길 바랍니다:
- 보상 트랜잭션 실패 시 처리 방법
- Kafka 시스템에서의 트랜잭션 관리

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김준환님의 프로필 이미지
김준환

작성한 질문수

질문하기