
Service Discovery DR 구성 1부 - Eureka 서버를 지역 분산시켜 안정성을 높이자
안녕하세요. 11번가 Core플랫폼개발팀에서 MSA 플랫폼 Vine의 개발과 운영을 담당하고 있는 전지원입니다. 이번 Article에서는 Spring Cloud의 Service Discovery 컴포넌트인 Eureka 의 Disaster Recovery를 구성을 위해 내부 코드를 분석하여 어떻게 동작하는지 파악하고, 이에 따라 어떻게 구성하였는지 내용을 공유드리고자 합니다. Background 11번가는 서비스의 높은 확장성과 간단한 통합 및 배포, 그리고 운영을 위해 2016년 거대한 Monolithic 서비스를 Microservice Architecture로 전환하는 프로젝트를 진행하였으며, 그 결과 Spring Cloud 기반의 Vine 플랫폼이 개발되어 현재 약 600여 개 인스턴스와 60여 개의 애플리케이션 서비스가 Vine 플랫폼 위에서 성공적으로 운영되고 있습니다. 생성과 소멸을 반복하는 마이크로서비스가 서로를 인식하고 통신할 수 있도록, 인스턴스 자신의 동적으로 변화하는 주소를 등록하고 다른 인스턴스 정보를 검색할 수 있는 레지스트리가 필요한데, MSA 플랫폼 컴포넌트인 Service Discovery가 해당 역할을 담당하고 있습니다. Spring Cloud ecosystem에서는 Netflix OSS 인 Eureka를 Service Discovery로 제공하고 있습니다. 11번가는 IDC 내에 Eureka 서버를 Peering하여 구축해두었고, 각 애플리케이션에 포함된 Eureka Client가 서버 Peer와의 통신을 통해서 개별 인스턴스 정보를 받아와 통신하는 과정을 거치게 됩니다. 아래 설명드리는 내용은 Spring Cloud Netflix 2021.0.X를 기준으로 합니다. 버전에 따라 일부 property 혹은 구현이 상이할 수 있으니 참고 부탁드립니다. Client-side Service Discovery 동작 방식 Eureka는 Client-side Service Discovery 방식입니다. 서비스 클라이언트가 서비스 레지스트리로부터 다른 서비스의 위치를 찾아서 호출하는 방식입니다. 각 서비스 인스턴스는 실행될 때 할당받는 자신의 주소를 Service Registry에 Register하고,...
