spring cloud config server에 파일 시스템 사용

Jinsan Lee·2022년 7월 22일

스프링 클라우드 config 서버는 bootstrap.yml 파일에서 애플리케이션의 구성 데이터를 보관할 저장소를 지정한다.

파일 시스템 기반의 저장소를 설정하는 것이 가장 쉽다.

  • bootstrap.yml

우선 애플리케이션 구성 정보를 저장하고자 파일 시스템을 사용하므로 스프링 클라우드 config 서버가 native profile로 실행되도록 지정해야 한다.
(스프링 profile은 스프링 프레임워크가 제공하는 핵심 기능이다.)

위 사진에서는 구성 데이터를 찾기 위한 경로 search-locations를 특정 클래스 패스를 지정해 주었다. -> classpath:/config
(src/main/resources/config 폴더를 탐색한다.)


스프링 클라우드 config 서버를 설정했으니 이제 서비스 프로퍼티 파일을 작성하면 된다.

간단한 예를 위해 세 환경에 대한 구성 데이터만 설정했다.

  • default (서비스에서 직접 사용될 예제용 프로퍼티)
example.property= I AM THE DEFAULT


spring.jpa.hibernate.ddl-auto=none
spring.jpa.database=POSTGRESQL
spring.datasource.platform=postgres
spring.jpa.show-sql = true
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.database.driverClassName= org.postgresql.Driver
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1



management.endpoints.web.exposure.include=*
management.endpoints.enabled-by-default=true
  • dev (서비스에서 사용될 스프링 액추에이터 구성)
example.property= I AM DEV

# DataSource settings: set here your own configurations for the database
spring.datasource.url = jdbc:mysql://localhost/spring5s?characterEncoding=utf8
spring.datasource.username = spring5
spring.datasource.password = spring5
  • production (서비스의 데이터 베이스 구성)
example.property= I AM PROD

# DataSource settings: set here your own configurations for the database
spring.datasource.url = jdbc:mysql://localhost/spring5s?characterEncoding=utf8
spring.datasource.username = spring5
spring.datasource.password = spring5

이후 프로젝트를 실행해보자.

http://localhost:8071/licensing-service/default를 입력하면

위와 같은 결과를 반환한다.

그 다음 http://localhost:8071/licensing-service/dev를 입력해보자.

dev 엔드포인트를 호출했는데 위와 같이 default와 dev의 구성 프로퍼티를 모두 반환했다는 것을 알 수 있다.

Why?

1. 왜 dev 엔드포인트 호출 시 default와 dev의 구성 프로퍼티를 모두 반환하는 것일까?

왜냐하면 스프링 프레임워크가 문제를 해결하는데 계층적 메커니즘을 수행하기 때문이다.

스프링 프레임워크가 이 일을 수행할 때 default profile에서 정의된 프로퍼티를 먼저 찾은 후 특정 환경에 값이 있다면 그 값으로 default 값을 교체한다.


참고 자료:
스프링 마이크로서비스 코딩 공작소 - 존 카넬, 일러리 후알리루포 산체스

0개의 댓글