[E-commerce App] Profiles를 통한 Configuration 적용
멀티 환경에서 구성 정보를 달리 할 수 있는 방법에 대해 알아보자.
이를 위해, 다양한 profiles를 가진 구성 정보 파일(yml)을 여러개 만들어놓고 상황에 맞는 yml 파일을 적용할 것이다.
여러 profiles를 갖는 yml 파일 생성
ecommerce.yml
token:
expiration_time: 864000000
secret: my_token_default
gateway:
ip: 127.0.0.1
ecommerce-dev.yml
token:
expiration_time: 864000000
secret: my_token_default_dev
gateway:
ip: 127.0.0.1
ecommerce-prod.yml
token:
expiration_time: 864000000
secret: my_token_default_prod
gateway:
ip: 127.0.0.1
add - commit 까지 마친다.
bootstrap.yml 변경
user-service와 gateway-service의 bootstrap.yml 파일을 변경한다.
user-service
spring:
cloud:
config:
uri: http://127.0.0.1:8888
name: ecommerce
profiles: # 🌟 추가
active: dev
gateway-service
spring:
cloud:
config:
uri: http://127.0.0.1:8888
name: ecommerce
profiles: # 🌟 추가
active: prod
이렇게 변경한 뒤, user-service와 gateway-service 두 개의 서버를 재기동한다.
테스트
user-service와 gateway-service에 토큰을 가져오는 부분(env.getProperty("token.secret"))에 break point를 찍고, 디버그 모드로 실행하자.
포스트맨으로 로그인을 진행해보자.

user-service에서는 my_token_dev를 가져왔다.
(토큰값을 확인하기 위해서는, 위 사진에서 보이는 것처럼 env.getProperty("token.secret")을 입력하고 오른쪽 +로 추가한다.)
이번에는 로그인 하고 받은 토큰을 이용해 /user-service/health-check로 요청해보자.

gateway-service에서는 my_token_prod를 가져왔다.
이처럼 토큰 정보가 다르기 때문에 권한이 없다는 오류가 발생한다.

따라서 같은 토큰을 사용할 수 있도록 gateway-service의 bootstrap.yml에서 spring.profiles.active를 기존 prod에서 dev로 바꾼다.

이번에는 200 OK 를 확인할 수 있다.
💛 개인 공부 기록용 블로그입니다. 👻