Java

[Spring Boot/Spring Cloud] MSA - Spring Cloud Config 외부 설정 관리

cob 2023. 12. 25. 20:26

 

Spring Cloud Config의 기능
- 분산 시스템에서 서버와 클라이언트 구성에 필요한 설정 정보(application.yml)를 외부 시스템에서 관리
- 하나의 중앙화된 저장소에서 구성요소 관리 기능
- 각 서비스를 다시 빌드하지 않고, 바로 적용 가능
- 배포 파이프라인을 통해 dev, uat, prod 등 환경에 맞는 구성 정보 사용 가능

 

 

1. Lcal Git Repository

로컬 Repository에만 등록해 형상관리 진행(인터넷이 되지 않더라도 Git을 이용해 형상관리, 소스 관리, 히스토리 관리를 할 수 있다.)

 

1-1) Git 디렉토리 생성

$ mkdir git-local-repo // 디렉터리 생성
$ cd git-local-repo      // 이동
$ git init                      // git 초기화(git으로 관리 가능하게 됨)

 

1-2) 설정파일 생성

$ code ecommerce.yml    // 설정파일 생성 code는 VSC를 사용해서 파일을 만드는 방법이다.

ecommerce.yml

$ git add ecommerce.yml                // git에 등록(추적을 위한 인덱싱 작업)
$ git commit -m "설정파일 업로드"

 

 

 


2. Config 프로젝트 생성

  • [New Project] > [Spring Initializr] > [Next]

 

  • [Articat] 프로젝트 이름 > [Next]

 

  • Dependencies는 Config Server만 추가

 

 

 


3. config-service 프로젝트 설정

3-1) EnableConfigServer 추가

Config Server 역할을 하기 위한 @EnableConfigServer 어노테이션 추가

 

 

3-2) application.yml

server:
  port: 8888

spring:
  application:
    name: config-service
  cloud:
    config:
      server:
        git:
          uri: file:///D:/Iwork/SpringBoot/Spring Cloud/ecommerce/git-local-repo
  • file : 불러오고자하는 파일 경로 입력

 

 

3-3) 프로젝트(config-service) 실행 테스트

[1. Lcal Git Repository]에서 만든 yml 파일 이름과 아무것도 명시하지 않으면 default로 인식되기 때문에 defalut를 입력하여 값이 잘 들어오는지 테스트
  • {URL}/{설정 파일 이름}/default

 

 

 


4. 다른 프로젝트에서 공통 설정 정보 사용하기

4-1) pom.xml 추가

Spring Cloud 최신버전에서는 bootstrap이 자동으로 로드되지 않기 때문에 설정 정보가 바로바로 반영이 안 되는 문제가 발생한다. 이를 해결하기 위한 방법으로 Actuator refresh, Spring Cloud Bus가 있다.
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

 

 

 

4-2) bootstrap.yml 생성

우선순위

우선순위에 따라 application.yml 보다 bootstarp.yml이 먼저 실행된다. 공통 설정 파일을 읽어오는 부분을 먼저 실행 될 수 있게 bootstarp.yml를 만들어 작성한다.

  • uri : config-service(공통 설정 프로젝트) 주소를 입력
  • name :  yml 파일명

 

 

4-3) 설정 값 불러오기

 

 

 

 

반응형