블로그/System Design
System Design시니어2026-05-07

MSA 통신 방식: Sync와 Async의 차이와 선택 기준

한 줄 답변

동기 통신(REST/gRPC)은 즉각적인 응답이 필요한 비즈니스 로직에 적합하나 서비스 간 강한 결합도를 유발합니다. 비동기 통신(Kafka/RabbitMQ)은 시스템 간 결합도를 낮추고 트래픽 급증에 유연하게 대응할 수 있어 최종적 일관성이 허용되는 이벤트 기반 처리에 권장됩니다.

핵심 개념 정리

마이크로서비스 아키텍처(MSA)에서 개별 서비스 간의 통신 방식은 시스템의 전체적인 가용성과 성능을 결정짓는 핵심 요소입니다. 동기(Synchronous) 방식은 요청자가 응답을 받을 때까지 대기하는 구조로, 설계가 직관적이고 데이터의 일관성을 즉각적으로 보장하기 쉽습니다. 하지만 호출하는 서비스 중 하나라도 장애가 발생하면 전체 서비스 체인으로 장애가 전파되는 'Cascading Failure' 위험이 큽니다.

반면 비동기(Asynchronous) 방식은 메시지 큐(Kafka, RabbitMQ 등)와 같은 미들웨어를 사이에 두고 데이터를 전달합니다. 요청자는 메시지를 큐에 발행(Publish)한 후 즉시 자신의 작업을 계속하며, 수신자(Subscriber)는 자신의 가용 상태에 맞춰 메시지를 처리합니다. 이는 서비스 간의 직접적인 의존성을 제거하여 시스템의 확장성과 탄력성을 극대화하지만, 메시지 유실 가능성 관리와 분산 트랜잭션 처리를 위한 복잡한 설계가 필요합니다.

실무에서는 두 방식을 적절히 혼합하여 사용합니다. 예를 들어 결제 승인처럼 실시간 응답이 필수적인 과정은 동기 방식을 사용하고, 결제 완료 후 이메일 발송, 포인트 적립, 통계 데이터 업데이트와 같이 지연 처리가 가능한 작업은 비동기 방식으로 처리하여 메인 로직의 응답 속도를 개선합니다. 이러한 설계는 시스템의 결합도를 낮추는 핵심적인 전략인 '이벤트 주도 아키텍처(EDA)'의 근간이 됩니다.

비교 정리

항목동기 통신 (Sync)비동기 통신 (Async)
통신 모델Request-Response (1:1)Publish-Subscribe (1:N 가능)
결합도(Coupling)서비스 주소를 알아야 하는 강한 결합메시지 구조만 맞추면 되는 느슨한 결합
장애 전파호출 대상 장애 시 호출자도 대기/실패브로커가 메시지를 보관하므로 장애 격리 가능
데이터 일관성즉각적 강한 일관성 (Strong)결과적 일관성 (Eventual)

면접에서 이렇게 답하세요

단순히 차이점을 설명하기보다 '시스템의 복잡도와 비즈니스 요구사항'에 따른 트레이드오프를 강조하세요. '전체 일관성이 중요한가, 가용성이 중요한가?'라는 관점에서 답변을 시작하는 것이 좋습니다. 실제 프로젝트에서 동기 호출로 인한 타임아웃 장애를 비동기식 이벤트 처리로 해결하여 시스템 처리량을 30% 개선했던 경험 등을 수치와 함께 언급하면 시니어로서의 역량을 효과적으로 어필할 수 있습니다.

자주 묻는 추가 질문

Q. 비동기 통신에서 메시지 중복 처리는 어떻게 하나요?

멱등성(Idempotency)을 보장하는 로직을 구현해야 합니다. DB의 Unique Key를 활용하거나 메시지 ID를 체크하여 중복 작업을 방지합니다.

Q. 동기 통신에서 장애 전파를 막는 방법은?

서킷 브레이커(Circuit Breaker) 패턴을 적용합니다. 에러율이 임계치를 넘으면 호출을 즉시 차단하고 Fallback을 실행하여 전파를 막습니다.

Q. 분산 환경에서 데이터 정합성을 맞추는 전략은?

사가(Saga) 패턴을 사용합니다. 각 로컬 트랜잭션을 독립적으로 처리하고, 실패 시 보상 트랜잭션을 실행하여 결과적 일관성을 유지합니다.

커뮤니티 하이라이트

시니어 면접에서는 동기와 비동기를 섞었을 때 발생하는 운영상 복잡도(모니터링, 추적)에 대한 고민을 많이 묻습니다. 단순 비교를 넘어 운영 인사이트를 보여주세요.

@backend_lead34

최근에는 실시간성을 위해 gRPC를 사용하면서도, 대규모 데이터 동기화에는 Kafka를 붙이는 하이브리드 방식이 대세입니다. 기술 선택의 근거가 중요합니다.

@msa_architect19

42명의 개발자가 이 질문에 참여했습니다

관련 면접 질문

앱에서 직접 답변해보세요

매일 3개의 면접 질문에 답변하고,
다른 개발자들의 답변을 비교해보세요.

무료로 시작하기