
MSA 환경에서는 하나의 비즈니스 기능이 여러 서비스로 분리되어 동작한다.
예를 들어 주문 서비스가 주문을 생성한 뒤, 상품 서비스에 REST 통신(예: Feign Client)으로 재고 차감을 요청하는 구조를 생각할 수 있다. 이때 상품 서비스가 응답하지 않거나, 네트워크 문제로 응답이 유실되는 상황이 발생할 수 있다.
이 경우 가장 큰 문제는 비즈니스 흐름은 이미 일부 진행되었지만, 전체 작업은 끝까지 보장되지 않는다는 점이다.
즉, 주문 서비스에서는 주문 생성이 완료되었는데 상품 서비스의 재고 차감은 반영되지 않아, 주문은 존재하지만 재고는 줄지 않은 상태가 발생할 수 있다.
이러한 상황은 단순한 기술적 오류를 넘어 실제 비즈니스 문제로 이어진다.
예를 들어 고객은 주문이 성공한 것으로 인식하지만, 실제 재고는 확보되지 않아 품절 상품 주문이 발생할 수 있다. 이후 운영자는 직접 데이터를 수정하거나, 고객센터가 고객에게 취소를 안내해야 하는 추가 비용을 부담하게 된다.
결국 MSA에서는 서비스 간 호출이 단순히 “API를 한 번 더 호출하는 것”이 아니라,
데이터 정합성과 비즈니스 신뢰성을 직접적으로 흔들 수 있는 구조적 문제를 포함하고 있다.
따라서 분산 환경에서 왜 이러한 문제가 발생하는지, 그리고 이를 어떤 방식으로 완화할 수 있는지를 이해하는 것이 필수적이다.
🚨 MSA에서 서비스 간 호출은 단순한 API 호출이 아니라, 데이터 정합성과 비즈니스 신뢰성을 직접 흔들 수 있는 구조적 문제를 포함한다.
.png)
.png)