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

백엔드 주니어 개발자님의 프로필 이미지
백엔드 주니어 개발자

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Orders Microservice와 Catalogs Microservice에 Kafka Topic의 적용

카프카를 통해 다른 서비스의 데이터를 수정하는 과정에서 예외가 발생했을 경우처리하는 방법이 궁금합니다.

작성

·

235

0

  1. 두개의 Service가 통신할 때 예외처리 시나리오

A, B 서비스가 있을 때 A 서비스에서 B 서비스로 데이터를 수정 또는 생성하는 요청을 했는데 이 때 개발자가 의도해서 예외를 발생시켰던 예상치못한 예외가 발생했던 간에 예외가 발생해서 B서비스의 데이터를 수정하지 못하는 경우라면 A서비스는 어떻게 롤백시켜주나요?

 

  1. 1번 시나리오에서 하나의 서비스가 추가되어 3개의 Service가 통신할 때 예외처리 시나리오

A서비스에서 B 서비스를 수정 or 생성 하고 C서비스를 수정 or 생성하는 시나리오일 경우
만약에 B서비스에 요청을 했을 때는 성공을하고 C서비스에 요청을 했을 때 실패를 했다면 A서비스로 롤백시켜줘야하고 B서비스도 롤백을 시켜주어야할텐데 이 경우에는 어떻게 롤백처리를 해주나요??

구글해보니 그냥 추상적으로 오케스트레이션 Saga패턴? 그런걸로 처리한다는데 막연하게 글로만 설명있고 어떤 소프트웨어를 설치해서 코드를 짜면된다 이런건 없어서 어떻게 처리되어야하는건지 감을 못잡겠네요ㅠㅠ. Axon 서버 뭐 이런것도 본거 같기도 하고요.

답변 1

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

MSA 도입에 있어 가장 먼저 고민해야하는 부분이 데이터를 어떻게 분하는 지와 분리 된 서비스간의 데이터 동기화 및 트랜잭션에 대한 부분이라고 생각합니다. 여러 레퍼런스에서도 비슷하게 이야기들 하고 있습니다.

말씀하신 부분은 트랜잭션 처리 부터 끝날때까지의 기록을 어딘가에 해 놓고 있다가, 데이터를 롤랙시켜야하는 시점에서 해당 기록들을 거꾸로 짚어가면서 데이터를 복구 해 주는 형태로 처리하는 방법으로 구현합니다. 이러한 모든 처리를 개발자가 일일이 작업할 수 없기 때문에, 보상트랜잭션처리나 SAGA 패턴 등으로 설계하고 프레임워크를 사용하기도 합니다. Axon Framework는 그러한 처리를 도와주는 프레임워크라고 보시면 좋을 것 같습니다.

저희 강의에서는 MSA에대한 기본적인 개념과 처리에 대한 부분을 다루고 있습니다. 후속 강의로 말씀하신 트랜잭션 처리나 MSA 패턴에 대한 부분을 준비 중입니다. 현재 다른 프로젝트하고 겹쳐 강의를 제작하는데에 생각보다 시간이 더 소요되고 있네요. 그래도 서둘러 준비해 보겠습니다.

감사합니다 .

답변 감사합니다! 후속강의 기다리고있겠습니다!

백엔드 주니어 개발자님의 프로필 이미지
백엔드 주니어 개발자

작성한 질문수

질문하기