TIL - 서비스 디스커버리 (Eureka)

Skadi·2024년 8월 1일
0

서비스 디스커버리란?


서비스 디스커버리는 분산 시스템에서 서비스 인스턴스의 위치를 동적으로 찾기 위한 메커니즘입니다. 서비스 디스커버리 없이, 각 서비스는 다른 서비스의 위치를 알고 있어야 합니다. 이는 서비스 인스턴스의 수가 증가하거나 변경될 때마다 큰 관리 비용을 발생시킵니다.

서비스 디스커버리는 서비스 레지스트리를 유지하여 각 서비스 인스턴스의 위치를 관리합니다. 서비스 레지스트리는 각 서비스 인스턴스의 네트워크 위치(IP 주소 및 포트 번호)를 저장하고, 이를 기반으로 다른 서비스가 해당 인스턴스에 요청을 보낼 수 있게 합니다.

Spring Cloud Netflix Eureka


Spring Cloud Netflix Eureka는 넷플릭스 오픈소스 프로젝트 중 하나로, 서비스 디스커버리를 위한 솔루션을 제공합니다. Eureka는 서비스 레지스트리 역할을 하며, 서비스 인스턴스는 Eureka 서버에 등록되고, 클라이언트는 이 서버를 통해 다른 서비스의 위치를 찾습니다.

Eureka 서버 설정

  1. 프로젝트 설정

    build.gradle 파일에 Eureka 서버 의존성을 추가합니다:

    dependencies {
        implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
        implementation 'org.springframework.boot:spring-boot-starter-web'
    }
  2. Eureka 서버 애플리케이션 클래스

    Eureka 서버를 활성화하기 위해 메인 애플리케이션 클래스에 @EnableEurekaServer 어노테이션을 추가합니다:

    package com.example.eurekaserver;
    
    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);
        }
    }
  3. 설정 파일

    application.yml 파일을 생성하고 Eureka 서버 설정을 추가합니다:

    server:
      port: 8761
    
    eureka:
      client:
        register-with-eureka: false
        fetch-registry: false
    
    spring:
      application:
        name: eureka-server

Eureka 클라이언트 설정

  1. 프로젝트 설정

    build.gradle 파일에 Eureka 클라이언트 의존성을 추가합니다:

    dependencies {
        implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
        implementation 'org.springframework.boot:spring-boot-starter-web'
    }
  2. Eureka 클라이언트 애플리케이션 클래스

    Eureka 클라이언트를 활성화하기 위해 메인 애플리케이션 클래스에 @EnableEurekaClient 어노테이션을 추가합니다:

    package com.example.eurekaclient;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    
    @SpringBootApplication
    @EnableEurekaClient
    public class EurekaClientApplication {
        public static void main(String[] args) {
            SpringApplication.run(EurekaClientApplication.class, args);
        }
    }
  3. 설정 파일

    application.yml 파일을 생성하고 Eureka 클라이언트 설정을 추가합니다:

    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/
    spring:
      application:
        name: eureka-client

요약


  • 서비스 디스커버리: 분산 시스템에서 서비스 인스턴스의 위치를 동적으로 찾기 위한 메커니즘.
  • Spring Cloud Netflix Eureka: 서비스 레지스트리를 제공하는 Eureka 서버와 클라이언트를 통해 서비스 디스커버리를 구현.
  • Eureka 서버 설정: @EnableEurekaServer 어노테이션과 설정 파일을 통해 Eureka 서버를 설정.
  • Eureka 클라이언트 설정: @EnableEurekaClient 어노테이션과 설정 파일을 통해 Eureka 클라이언트를 설정.

0개의 댓글