What is Service Discovery? Service Discovery in Spring Boot Microservices
- 서비스 디스커버리는 마이크로서비스 아키텍처에서 서비스들이 서로를 찾고 통신할 수 있게 해주는 중요한 메커니즘이다. 📡
- 동기식 통신(예: REST API 호출)에서 서비스 A가 서비스 B를 호출하려면 서비스 B의 네트워크 주소를 알아야 한다. 📍
- 서비스 디스커버리는 등록(Registration)과 조회(Lookup)의 두 단계로 이루어진다. 🔑
- 등록 단계에서는 각 마이크로서비스가 서비스 레지스트리에 자신의 정보(타입, 네트워크 주소)를 등록한다. 📝
- 조회 단계에서는 서비스 A가 서비스 B의 주소를 서비스 레지스트리에서 조회하여 통신한다. 🔍
- 서비스 디스커버리 구현 방식은 애플리케이션 레벨(예: Consul, Eureka)과 인프라 레벨(예: Kubernetes) 두 가지가 있다. ⚙️
- 애플리케이션 레벨에서는 각 서비스가 서비스 레지스트리와 통신하기 위한 라이브러리를 포함해야 한다. 📚
- 인프라 레벨에서는 Kubernetes와 같은 플랫폼이 서비스 디스커버리를 기본적으로 제공한다. ☸️
- Kubernetes에서는 서비스가 DNS 이름을 통해 다른 서비스를 찾고 통신할 수 있다. 🌐
- 서비스 디스커버리 도입 여부는 서비스 수, 복잡성, 필요한 기능 등을 고려하여 결정해야 한다. 🤔
- 소규모 환경에서는 서비스 디스커버리가 불필요할 수도 있다. ⚖️
- Kubernetes는 강력하지만 무거운 솔루션이므로, 모든 기능이 필요하지 않다면 Spring Cloud와 Consul을 고려할 수 있다. 💡