2025. 2. 28. 14:30ㆍSpring Microservice
📌 마이크로서비스 라우팅 패턴(Microservice Routing Patterns)
마이크로서비스 환경에서는 클라이언트가 특정 마이크로서비스를 어떻게 발견하고 호출할 것인지가 중요한 문제입니다.
특히 클라우드 기반 애플리케이션에서는 수백 개의 마이크로서비스 인스턴스가 실행될 수 있기 때문에,
서비스의 보안 및 정책 적용을 위해 물리적인 Private IP 주소를 감추고 단일 진입점(Single Entry Point)을 제공해야 합니다.
아래 그림에서는 이러한 문제를 해결하는 서비스 디스커버리(Service Discovery)와 서비스 라우팅(Service Routing) 개념을 설명합니다.
🔹 1. 서비스 디스커버리(Service Discovery)
마이크로서비스가 동적으로 확장 및 축소될 수 있기 때문에, 각 서비스의 물리적 위치(IP 주소)를 클라이언트가 직접 알고 있어서는 안 됩니다.
대신, 서비스 디스커버리를 활용하면 클라이언트가 하드코딩된 주소 없이도 동적으로 서비스 위치를 찾을 수 있도록 도와줍니다.
✅ 서비스 디스커버리의 핵심 개념
- 서비스 레지스트리(Service Registry)
- 서비스의 위치 정보를 저장하는 중앙 데이터베이스 역할.
- 마이크로서비스가 시작될 때 자신의 IP와 포트를 서비스 레지스트리에 등록하고, 종료 시 제거됨.
- Netflix Eureka 서비스 디스커버리 사용
- 이 블로그에서는 Netflix Eureka를 사용하지만, Consul, etcd, Apache Zookeeper 같은 다른 서비스 레지스트리도 존재.
- 일부 시스템에서는 서비스 메시(Service Mesh)를 이용하여 서비스 간 통신을 관리하기도 함.
✅ 서비스 디스커버리의 장점
✔ 클라이언트가 서비스 위치를 하드코딩할 필요 없음.
✔ 새로운 서비스 인스턴스가 추가될 때 자동으로 확장 가능.
✔ 문제가 발생한 인스턴스를 자동으로 제거하여 장애 복구 가능.
📌 서비스 디스커버리는 내부 서비스로 동작하며, 클라이언트가 직접 접근하지 않습니다.
📌 자세한 내용은 챕터 6에서 다룸.
🔹 2. 서비스 라우팅(Service Routing)
API Gateway를 활용하면 모든 서비스의 단일 진입점을 제공하여 보안 정책을 적용하고,
여러 서비스와 인스턴스 간 일관된 라우팅 규칙을 적용할 수 있습니다.
✅ API Gateway 역할
- 단일 URL을 통해 여러 마이크로서비스에 대한 요청을 라우팅
- 클라이언트는 여러 개의 서비스 주소를 직접 호출하는 것이 아니라 API Gateway를 통해 모든 요청을 전달.
- 인증 및 보안 정책 적용
- API Gateway는 JWT 인증, OAuth2 보안, 역할 기반 접근 제어(RBAC) 등 다양한 보안 정책을 적용할 수 있음.
- 요청을 특정 서비스로 라우팅
- 서비스 디스커버리와 함께 동작하며, 요청을 적절한 서비스 인스턴스로 전달.
- 모니터링 및 로깅 지원
- API Gateway는 로깅, 모니터링, 트래픽 관리 등을 지원하여 서비스 운영을 쉽게 할 수 있도록 도움.
📌 이 블로그에서는 Spring Cloud API Gateway를 사용하여 구현하며, 자세한 내용은 차후에 다룸.
🔹 3. 서비스 디스커버리와 서비스 라우팅의 관계
- 위 그림에서는 서비스 라우팅(API Gateway) → 서비스 디스커버리(Eureka) 순서로 동작하는 것처럼 보이지만,
실제로는 각각 독립적으로 구현 가능합니다. - 예제 1:
- 서비스 디스커버리를 사용하지 않고 API Gateway에 직접 서비스 목록을 설정할 수도 있음.
- 예제 2:
- 서비스 디스커버리를 사용하지만 API Gateway 없이 클라이언트가 직접 서비스 디스커버리에 요청할 수도 있음.
- 하지만 둘을 함께 사용하면 더 유연하고 확장성 있는 구조를 만들 수 있음.
📌 Summary
패턴 | 설명 |
---|---|
서비스 디스커버리(Service Discovery) | 서비스의 물리적 위치(IP 주소)를 클라이언트가 직접 알 필요 없이, 동적으로 검색 가능하도록 관리 (Netflix Eureka 사용) |
서비스 라우팅(Service Routing) | API Gateway를 통해 단일 진입점 제공, 인증/보안 정책 적용, 요청을 적절한 서비스로 라우팅 (Spring Cloud API Gateway 사용) |
📌 결론
마이크로서비스 환경에서는 서비스 디스커버리와 API Gateway를 활용하여 동적인 확장성과 보안성을 확보하는 것이 중요합니다.
✔ 서비스 디스커버리는 서비스의 위치를 동적으로 찾을 수 있도록 도와주며, Eureka가 대표적인 솔루션입니다.
✔ API Gateway는 단일 진입점을 제공하여 인증 및 보안, 서비스 라우팅을 효율적으로 관리할 수 있도록 해줍니다.
✔ 둘을 함께 사용하면 유지보수성과 확장성이 뛰어난 마이크로서비스 아키텍처를 구축할 수 있습니다. 🚀
'Spring Microservice' 카테고리의 다른 글
Microservice logging and tracing patterns (0) | 2025.02.28 |
---|---|
Microservice security patterns (0) | 2025.02.28 |
Core microservice development pattern (0) | 2025.02.28 |
Microservices Patterns (0) | 2025.02.28 |
1.Welcome to the Spring Cloud (0) | 2025.02.28 |