IT 개발 라이프/Back_End

Eureka Server 설정 및 개념✨

10Biliion 2024. 11. 26. 15:46

Spring Cloud Eureka Server: 마이크로서비스 등록 및 발견의 중심

마이크로서비스 아키텍처에서 서비스 간 통신은 매우 중요합니다. Eureka Server는 Netflix OSS에서 제공하는 서비스 등록 및 발견을 위한 핵심 컴포넌트입니다. 이번 글에서는 Eureka Server의 기본 개념, 설정 방법, 그리고 간단한 코드 예제를 통해 Eureka Server를 효과적으로 활용하는 방법을 소개합니다.


Eureka Server란 무엇인가?

Eureka Server는 Service Registry로, 각 마이크로서비스가 자신의 위치를 등록(Registration)하고 다른 서비스가 이를 검색(Discovery)할 수 있도록 합니다. 이를 통해 서비스 간의 느슨한 결합을 유지하며, 동적으로 스케일링이 가능합니다.


Eureka Server 아키텍처

  1. Eureka Server: 서비스 정보를 저장 및 관리하는 중앙 서버.
  2. Eureka Client: 자신을 등록하고, 필요한 서비스를 Eureka Server에서 검색하는 클라이언트.
  3. 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의 주요 기능

  1. Load Balancing
    Eureka Client는 동적으로 서비스 목록을 가져오며, 이를 통해 클라이언트 측 로드 밸런싱이 가능합니다.
  2. Failover
    Eureka Server가 여러 인스턴스로 구성된 경우, 클라이언트는 다른 서버로 자동 전환합니다.
  3. Self-Preservation
    네트워크 오류가 발생해도 서버는 등록된 서비스 정보를 유지합니다.

결론

Eureka Server는 마이크로서비스 환경에서 서비스 등록과 발견을 간소화하여 동적 스케일링과 안정적인 서비스 통신을 지원합니다.