[학습기록] 소프트웨어 아키텍처: (4) 서비스 디스커버리 with 마이크로서비스 아키텍처(MSA)

소프트웨어 아키텍처 101, 한빛미디어
API 게이트웨이(Gateway)와 서비스 디스커버리(Service Discovery)는 어떤 관계일까요?
실무에서 많이 사용하고 있는 개념이지만, 막상 구조적으로 연결해서 설명하려고 하면 헷갈릴 수 있습니다.
1. API 게이트웨이
API 게이트웨이는 외부의 요청이 유입되는 관문 역할을 수행하며 대표적인 구현체로는 다음과 같은 것들이 있습니다.
- Spring Cloud Gateway
- Netflix Zuul
- Kong
“요청을 어디로 보낼지 결정”하는 것이 핵심 기능으로 다음의 기능들도 포함하고 있습니다.
- 인증/인가
- 라우팅
- 로깅
- Rate Limit
- 공통 필터 처리
2. 서비스 디스커버리
반면, 서비스 디스커버리의 핵심 기능은 “요청을 처리할 서비스가 어디에 있는지 알려주는 것”입니다.
대표적인 구현체로는 다음이 있습니다.
- Netflix Eureka
- Consul
- Kubernetes (내장 Service 기반)
마이크로서비스 아키텍처(MSA)에서는 각 서비스가 동적으로 생성·종료·스케일링 됩니다.
예를 들어 아래와 같은 서비스들이 각각 여러 인스턴스로 실행되고 있고, IP와 포트가 계속 바뀐다면 어떻게 서로를 찾을까요?
- 주문 서비스(Order Service)
- 결제 서비스(Payment Service)
- 사용자 서비스(User Service)
바로 이 문제를 해결하는 것이 서비스 디스커버리입니다.
3. API 게이트웨이와 서비스 디스커버리의 연결
API 게이트웨이도 결국 내부 서비스를 호출해야 합니다. 그렇다면 내부 서비스의 위치를 어떻게 알까요?
바로 이 지점에서 서비스 디스커버리가 개입하게 됩니다.
[클라이언트]
│
▼
[API 게이트웨이]
│
│ 1. user-service 어디 있지?
▼
[서비스 디스커버리]
│
│ 2. 인스턴스 목록 반환
▼
[게이트웨이 내부 Load Balancer]
│
▼
[user-service 인스턴스]
즉,
- 서비스 디스커버리 → 위치 정보 제공
- API 게이트웨이 → 그 정보를 이용해 라우팅
API 게이트웨이는 서비스 디스커버리의 “클라이언트”가 됩니다.
4. 내부 서비스 간 호출
여기서 한 가지 중요한 질문이 생깁니다. 내부 서비스들끼리는 서로를 어떻게 호출할까요?
대표적으로 두 가지 패턴이 있습니다.
패턴 1. 게이트웨이 중심 구조
Service A → 게이트웨이 → Service B
- 모든 트래픽을 중앙에서 통제
- 추적 및 정책 적용이 쉬움
- Gateway 부하 증가 가능성
패턴 2. 내부 직접 호출 + 디스커버리 사용
Service A → 디스커버리 → Service B
- 진정한 의미의 분산 구조
- 서비스 간 의존성 증가
- 네트워크 흐름 복잡
5. 정리
사실 IP가 자주 변하지 않거나 오토스케일링이 활발하지는 않다면, 서비스 디스커버리가 반드시 필요한 것은 아닐 수 있습니다.
하지만 반대의 경우라면 서비스 디스커버리를 사용해서 운영 안정성을 크게 높일 수 있습니다.
| 컴포넌트 | 질문 | 역할 |
|---|---|---|
| Service Discovery | “서비스 어디 있지?” | 위치 관리 |
| API Gateway | “요청 어디로 보내지?” | 라우팅 |
| 관계 | Gateway가 Discovery를 사용 | 의존 관계 |
6. 포스팅 시리즈
- [학습기록] 소프트웨어 아키텍처: (1) 도메인,모듈,컴포넌트,아티팩트 그리고 퀀텀
- [학습기록] 소프트웨어 아키텍처: (2) 계약에 의한 설계(Design by Contract)
- [학습기록] 소프트웨어 아키텍처: (3) 서비스 기반 아키텍처 스타일
- [학습기록] 소프트웨어 아키텍처: (4) 서비스 디스커버리 with 마이크로서비스 아키텍처(MSA)
- [학습기록] 소프트웨어 아키텍처: (5) 아키텍처 결정 레코드(Architecture Decision Record, ADR) 문서 작성법
- [학습기록] 소프트웨어 아키텍처: (6) 토폴로지(Topology)
#소프트웨어아키텍처101 #한빛미디어 #소프트웨어 #아키텍처 #마이크로서비스 #MSA #API #게이트웨이 #서비스디스커버리