[Spring Boot & MSA] Spring Cloud Config Server - Centralized Configuration

원알렉스·2020년 7월 29일
2

Spring Boot MSA

목록 보기
3/12
post-thumbnail

깃허브 소스코드
Udemy 강의

Spring Cloud Config Server란?

Spring Cloud Config Server는 스프링 부트로 만든 REST 기반의 애플리케이션입니다. 그리고 분산 시스템에서 환경설정을 외부로 분리하여 관리할 수 있는 기능을 제공해줍니다. Config Server를 사용하여 모든 환경(개발, 테스트, 프로덕션 등)에 대한 어플리케이션들의 속성을 한 곳에서 관리할 수 있습니다.

장점

  • 설정 관리의 용이성
  • 운영중에 서버 빌드 및 배포를 다시 할 필요 없이 환경설정 변경 가능

기능

Spring Cloud Config Server

  • 환경설정(name-value pair, YAML 파일)을 위한 HTTP, 리소스 기반 API
  • 속성 값 암호화 및 암호 해독 (대칭 또는 비대칭)
  • @EnableConfigServer 어노테이션을 사용하여 쉽게 Spring Boot 어플케이션에 적용

Config Client(for Spring Boot 어플리케이션)

  • Config Server에 붙어 원격 속성 소스로 Spring 환경 초기화
  • 속성 값 암호화 및 암호 해독 (대칭 또는 비대칭)

Config Server 구조

의존성 설정

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-config-server</artifactId>
</dependency>

애플리케이션 프로퍼티 설정(application.yml)

spring:
  application:
    name: {application.name}

  profiles:
    active: git

  cloud:
    config:
      server:
        git:
          uri: {remote.property.source.uri}
          username: {username}
          password: {password}

@EnableConfigServer 어노테이션 추가

@SpringBootApplication
@EnableConfigServer
public class PhotoAppApiConfigServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(PhotoAppApiConfigServerApplication.class, args);
	}
}

Spring Cloud Config Client 구조

의존성 설정

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-config</artifactId>
</dependency>

Remote Git Repository에 프로퍼티 파일 생성

  • 우선순위: {application.name}-{profile}.yml > {application.name}.yml > application.yml

부트스트래핑 설정(bootstrap.yml)

spring:
  application:
    name: {application.name}

  profiles:
    active: {profile}

  cloud:
    config:
      uri: {config.server.uri}
  • 이때, spring.application.name은 원격 저장소에 있는 파일명이랑 동일해야 합니다.
  • 원격 저장소에 디렉터리별로 관리중이라면 spring.cloud.config.server.git.searchPaths 를 추가해서 경로를 지정해주면 됩니다.
profile
Alex's Develog 🤔

0개의 댓글