📑 0. Index

📖 용어 사전

🎯 1. 조사 목적

Overview

MSA 환경에서 서비스 간 통신 기술의 구조와 동작 원리를 분석하고, 실제 시스템 설계에 적합한 방식을 판단할 수 있는 기준을 정립합니다.

MSA(Microservice Architecture) 환경에서는 하나의 비즈니스 기능이 여러 개의 독립된 서비스로 분리되며, 서비스 간 통신은 시스템 동작의 핵심 요소가 된다. 이러한 구조에서는 기존 모놀리식 아키텍처와 달리 서비스 간 호출이 네트워크를 통해 이루어지므로, 통신 방식에 따라 시스템의 성능, 안정성, 확장성에 직접적인 영향을 미친다.

본 조사의 목적은 서비스 간 통신 기술을 단순히 나열하거나 기능을 비교하는 것이 아니라, 각 통신 방식의 구조와 동작 원리를 분석하고 이를 바탕으로 실제 시스템 설계에서 어떤 방식이 적절한지 판단할 수 있는 기준을 정립하는 데 있다.

특히 Feign, WebClient, gRPC, Kafka, RabbitMQ를 중심으로 각 기술의 특성과 장단점을 비교하고, 이를 실제 프로젝트 및 실무 환경에서 어떻게 적용할 수 있는지에 대한 설계 관점을 도출하는 것을 목표로 한다.


⚡ 2. MSA에서 서비스 간 통신의 중요성

image.png

모놀리식 아키텍처에서는 기능 간 호출이 하나의 프로세스 내부에서 이루어지기 때문에 호출 비용이 낮고, 트랜잭션 관리 또한 상대적으로 단순하다. 반면 MSA에서는 서비스가 물리적으로 분리되어 있기 때문에 모든 서비스 간 호출이 네트워크를 통해 이루어지며, 이는 네가지 설계 문제를 발생시킨다.

첫째, 네트워크 통신 비용이 증가한다. 단순한 메서드 호출이 HTTP 또는 메시지 기반 통신으로 대체되면서 **지연율(Latency)**이 발생하며, 서비스 호출이 연쇄적으로 이루어질 경우 전체 응답 시간이 급격히 증가할 수 있다.

둘째, 장애 전파 문제가 발생한다. 서비스 간 호출이 동기적으로 연결되어 있을 경우, 하나의 서비스 장애가 다른 서비스로 전파될 수 있다. 예를 들어 A 서비스가 B 서비스를 호출하고, B가 C를 호출하는 구조에서 C가 장애를 일으키면 전체 요청이 실패하게 된다.

셋째, 데이터 일관성 문제가 발생한다. 분산 환경에서는 하나의 트랜잭션으로 모든 작업을 묶기 어렵기 때문에, 강한 일관성을 유지하기 어렵고 결과적 일관성(eventual consistency) 모델을 고려해야 한다.

넷째, 시스템 확장성과 유연성이 통신 방식에 의해 크게 좌우된다. 동기 방식은 단순하지만 결합도가 높아 확장에 제약이 있으며, 비동기 방식은 결합도를 낮출 수 있지만 설계 복잡도가 증가한다.

핵심 포인트

서비스 간 통신 방식은 단순한 구현 선택이 아니라, 시스템의 구조적 특성을 결정하는 핵심 설계 요소이며, 성능·안정성·확장성 간의 균형을 고려한 선택이 필요합니다.