Spring Cloud Eureka Server: 마이크로서비스 등록 및 발견의 중심
마이크로서비스 아키텍처에서 서비스 간 통신은 매우 중요합니다. Eureka Server는 Netflix OSS에서 제공하는 서비스 등록 및 발견을 위한 핵심 컴포넌트입니다. 이번 글에서는 Eureka Server의 기본 개념, 설정 방법, 그리고 간단한 코드 예제를 통해 Eureka Server를 효과적으로 활용하는 방법을 소개합니다.
Eureka Server란 무엇인가?
Eureka Server는 Service Registry로, 각 마이크로서비스가 자신의 위치를 등록(Registration)하고 다른 서비스가 이를 검색(Discovery)할 수 있도록 합니다. 이를 통해 서비스 간의 느슨한 결합을 유지하며, 동적으로 스케일링이 가능합니다.
Eureka Server 아키텍처
- Eureka Server: 서비스 정보를 저장 및 관리하는 중앙 서버.
- Eureka Client: 자신을 등록하고, 필요한 서비스를 Eureka Server에서 검색하는 클라이언트.
- Heartbeats: 클라이언트는 정기적으로 자신의 상태를 서버에 알림(Health Check).
Eureka Server 설정하기
1. Spring Boot 프로젝트 생성
Spring Initializr(https://start.spring.io)를 통해 다음 설정으로 프로젝트를 생성합니다:
- Dependency: Spring Cloud Netflix Eureka Server, Spring Boot DevTools
2. 프로젝트 설정
build.gradle 또는 pom.xml 파일에 필요한 의존성을 추가합니다.
build.gradle 예시:
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
implementation 'org.springframework.boot:spring-boot-starter-web'
}
3. Eureka Server 활성화
Spring Boot 애플리케이션 클래스에 @EnableEurekaServer를 추가합니다.
EurekaServerApplication.java:
package com.example.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
4. 설정 파일 작성
application.yml 또는 application.properties 파일을 작성합니다.
application.yml:
server:
port: 8761 # Eureka Server 기본 포트
eureka:
client:
register-with-eureka: false # 서버는 자신을 등록하지 않음
fetch-registry: false # 다른 레지스트리 정보를 가져오지 않음
server:
wait-time-in-ms-when-sync-empty: 0 # 서버 동기화 대기 시간
5. Eureka 대시보드 확인
Eureka Server가 실행되면, http://localhost:8761에서 Eureka 대시보드를 확인할 수 있습니다.
Eureka Client 설정하기
Eureka Server에 서비스를 등록하려면 클라이언트에서도 몇 가지 설정이 필요합니다.
1. 의존성 추가
Eureka Client 프로젝트에 spring-cloud-starter-netflix-eureka-client를 추가합니다.
build.gradle:
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
implementation 'org.springframework.boot:spring-boot-starter-web'
}
2. Eureka Client 설정
application.yml 파일에 Eureka Server URL과 클라이언트 정보를 설정합니다.
application.yml:
spring:
application:
name: my-service # 서비스 이름
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/ # Eureka Server 주소
3. 애플리케이션 실행
클라이언트를 실행하면, Eureka 대시보드에서 서비스가 등록된 것을 확인할 수 있습니다.
Eureka의 주요 기능
- Load Balancing
Eureka Client는 동적으로 서비스 목록을 가져오며, 이를 통해 클라이언트 측 로드 밸런싱이 가능합니다. - Failover
Eureka Server가 여러 인스턴스로 구성된 경우, 클라이언트는 다른 서버로 자동 전환합니다. - Self-Preservation
네트워크 오류가 발생해도 서버는 등록된 서비스 정보를 유지합니다.
결론
Eureka Server는 마이크로서비스 환경에서 서비스 등록과 발견을 간소화하여 동적 스케일링과 안정적인 서비스 통신을 지원합니다.
'IT 개발 라이프 > Back_End' 카테고리의 다른 글
Filter와 Interceptor 이해하기 ✨ (0) | 2024.11.29 |
---|---|
Servlet과 Dispatcher Servlet 이해하기 ✨ (1) | 2024.11.29 |
Microservice(MSA), Monolithic Service, Mini Service 비교 분석✨ (1) | 2024.11.28 |
Web Application Server (WAS)✨ (0) | 2024.11.28 |
자바 리플렉션(Reflection)✨ (1) | 2024.11.26 |