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

Jinsan Lee·2022년 7월 22일
0

스프링 클라우드 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개의 댓글