springboot

[용어] profile

주다애 2023. 10. 28. 16:32

🥕 profile

이번에 프로젝트를 진행하면서 사용한 개념이 있다.

바로 profile!

application.yml파일에 profile별로 구동 환경을 다르게 해서 개발을 진행했다.

 

application.yml

spring:
  config:
    activate:
      on-profile: local
---
spring:
  config:
    activate:
      on-profile: aws

local환경은 local로, 배포 환경은 aws라는 이름을 주었다.

즉, profile은 서버를 실행할 때 환경을 다르게 해주는 방법이다.

 

나는 local에서는 h2를, aws에서는 rds를 사용했다.

local에서 h2를 사용한 이유는 h2는 memory에 데이터를 저장하는 경량 DB이므로 휘발성이다. 즉 우리는 코드에만 집중할 수 있게 되기 때문이다.

 

spring boot에서 profile은 - - - 을 구분선으로 한다.

이 선을 기준으로 profile이 구분된다.

🥒 실제 예시

배포를 위한 aws환경에서는 rds를 사용했기 때문에 aws에서 설정한 url, username, password를 가져온다

url, username, password는 중요 정보이기 때문에 하드코딩은 금지다!

그럼 어디에 저장되어있나?

 

application-aws.yml

url: rds의 url
username: rds의 username
password: rds의 password

위와 같이 작성해주면 된다.

우리가 해당 파일을 application-aws.yml이라고 작성해주었기 때문에 application.yml에서 on-profile: aws를 보고 아 우리가 필요한 정보가 application-aws.yml에 있구나!를 자동으로 파악하여 application-aws.yml에서 필요한 정보를 가져온다고 한다.

 

그럼 배포 환경에서 어떻게 원하는 profile을 실행시킬까?

java -jar 우리 애플리케이션의 jar 파일 --spring.profiles.active=profile 이름(ex. dev, aws)

위의 명령어를 입력하면 된다. 

그럼 jar파일이 구동될 때 저절로 작성한 profile의 실행 환경이 구동된다.