작성
·
235
0
두개의 Service가 통신할 때 예외처리 시나리오
A, B 서비스가 있을 때 A 서비스에서 B 서비스로 데이터를 수정 또는 생성하는 요청을 했는데 이 때 개발자가 의도해서 예외를 발생시켰던 예상치못한 예외가 발생했던 간에 예외가 발생해서 B서비스의 데이터를 수정하지 못하는 경우라면 A서비스는 어떻게 롤백시켜주나요?
1번 시나리오에서 하나의 서비스가 추가되어 3개의 Service가 통신할 때 예외처리 시나리오
A서비스에서 B 서비스를 수정 or 생성 하고 C서비스를 수정 or 생성하는 시나리오일 경우
만약에 B서비스에 요청을 했을 때는 성공을하고 C서비스에 요청을 했을 때 실패를 했다면 A서비스로 롤백시켜줘야하고 B서비스도 롤백을 시켜주어야할텐데 이 경우에는 어떻게 롤백처리를 해주나요??
구글해보니 그냥 추상적으로 오케스트레이션 Saga패턴? 그런걸로 처리한다는데 막연하게 글로만 설명있고 어떤 소프트웨어를 설치해서 코드를 짜면된다 이런건 없어서 어떻게 처리되어야하는건지 감을 못잡겠네요ㅠㅠ. Axon 서버 뭐 이런것도 본거 같기도 하고요.
답변 1
0
안녕하세요, 이도원입니다.
MSA 도입에 있어 가장 먼저 고민해야하는 부분이 데이터를 어떻게 분하는 지와 분리 된 서비스간의 데이터 동기화 및 트랜잭션에 대한 부분이라고 생각합니다. 여러 레퍼런스에서도 비슷하게 이야기들 하고 있습니다.
말씀하신 부분은 트랜잭션 처리 부터 끝날때까지의 기록을 어딘가에 해 놓고 있다가, 데이터를 롤랙시켜야하는 시점에서 해당 기록들을 거꾸로 짚어가면서 데이터를 복구 해 주는 형태로 처리하는 방법으로 구현합니다. 이러한 모든 처리를 개발자가 일일이 작업할 수 없기 때문에, 보상트랜잭션처리나 SAGA 패턴 등으로 설계하고 프레임워크를 사용하기도 합니다. Axon Framework는 그러한 처리를 도와주는 프레임워크라고 보시면 좋을 것 같습니다.
저희 강의에서는 MSA에대한 기본적인 개념과 처리에 대한 부분을 다루고 있습니다. 후속 강의로 말씀하신 트랜잭션 처리나 MSA 패턴에 대한 부분을 준비 중입니다. 현재 다른 프로젝트하고 겹쳐 강의를 제작하는데에 생각보다 시간이 더 소요되고 있네요. 그래도 서둘러 준비해 보겠습니다.
감사합니다 .
답변 감사합니다! 후속강의 기다리고있겠습니다!