Spring Cloud Config

CHEESE·2022년 9월 2일
0

Spring Cloud + MSA

목록 보기
11/13
post-thumbnail

Spring Cloud Config

  • 분산 시스템에서 서버, 클라이언트 구성에 필요한 설정 정보(application.properties)를 외부 시스템에서 관리하는 방법
  • 하나의 중앙화된 저장소에서 구성 요소를 관리할 수 있다.
  • 각 서비스를 다시 빌드하지 않고 바로 적용할 수 있다.
  • 어플리케이션 배포 파이프라인을 통해 DEV(개발) - UAT(테스트) - PROD(운영) 환경에 맞는 구성 정보를 사용할 수 있다.

Config Server 프로젝트 생성

1. [Spring Cloud Config] -> [Config Server] 의존성만 추가하고 Spring Boot 프로젝트를 생성한다.

2. Application java 파일 클래스 레벨에 @EnableConfigServer 어노테이션을 추가해준다.

@SpringBootApplication
@EnableConfigServer     // Spring Config Server 역할로 등록하기 위함
public class ConfigServiceApplication {

3. application.yml 파일을 작성한다.

native file 사용 시

server:
  port: 8888

spring:
  application:
    name: config-service
  profiles:
    active: native
  cloud:
    config:
      server:
        native:
          search-locations: file://${user.home}/[directory]

spring.cloud.config.server.native.search-locations 항목에 설정 정보 파일이 위치한 위치를 작성해주면 된다.

local / remote git uri 사용 시

server:
  port: 8888

spring:
  application:
    name: config-service
  cloud:
    config:
      server:
        git:
          uri: #(local/remote git-uri)

spring.cloud.config.server.git.uri 항목에 설정 정보 파일이 위치한 local/remote git uri를 작성해주면 된다.

local의 경우 file://[local directory info]
remote의 경우 https://github.com/[user]/[repository]
형태로 입력할 수 있다.

remote uri(git repository)를 사용할 땐 해당 레포지토리가 private으로 설정되지는 않았는지 반드시 확인한다!
private repository의 경우 uri와 동일한 레벨에 username, password 속성을 추가해주어야 한다.

4. 확인

localhost:[port]/[설정파일이름]/default 를 호출하면 해당하는 설정 파일 내용이 조회된다.

변경된 설정 정보 파일을 적용하는 방법

Spring Cloud Config Server를 통해 설정한 설정 파일의 내용이 변경되었을 때는 어떻게 적용할 수 있을까?

1. 서버 재기동

  • 간단하지만 매끄럽지 못하다.
  • Spring Cloud Config를 사용하는 의미가 불분명해진다.

2. Actuator refresh

  • spring boot의 actuator의 refresh 옵션을 사용하면 마이크로서비스를 재기동하지 않고도 적용 가능
  • 변경 적용을 원하는 서비스마다 actuator의 refresh 기능을 실행해주는 방식으로 변경 사항 적용
  • 서비스의 개수가 많아질 경우 이 역시 매끄럽지 못하다.

🔍 Spring Boot Actuator

  • application 상태를 모니터링할 수 있는 작업
  • 의존성 추가 하나로 지표 수집을 위한 http end point를 제공한다.

적용 방법

1) 서비스 어플리케이션에 의존성 추가

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2) application.yml 파일에 actuator 설정 정보 추가

management:
  endpoints:
    web:
      exposure:
        include: refresh, health, beans

3) 확인

기동 후 http://(서비스host):(port)/actuator/refreshpost방식으로 호출하면 config server에서 변경한 설정 파일이 적용되는 것을 확인할 수 있다.

3. Spring Cloud Bus

  • 각각의 서비스가 refresh를 호출해주어야만 했던 actuator보다 효율적으로 적용 가능
  • Spring Cloud Config Server가 연결되어있는 Spring Cloud Bus가 마이크로서비스에 직접 데이터 변경사항을 알려주는 방식

0개의 댓글