μŠ€ν”„λ§ μ™ΈλΆ€ μ„€μ • 방법 (μ™ΈλΆ€ 데이터)

2023. 5. 9. 17:03γ†μΈν”„λŸ°/μŠ€ν”„λ§ λΆ€νŠΈ - 핡심 원리와 ν™œμš©

728x90

 

μŠ€ν”„λ§ μ™ΈλΆ€ μ„€μ • 방법 (OS ν™˜κ²½ λ³€μˆ˜, μžλ°” μ‹œμŠ€ν…œ 속성) (tistory.com)

 

μŠ€ν”„λ§ μ™ΈλΆ€ μ„€μ • 방법 (OS ν™˜κ²½ λ³€μˆ˜, μžλ°” μ‹œμŠ€ν…œ 속성)

0️⃣ μ™ΈλΆ€ μ„€μ •μ΄λž€ ? 보톡 μ‹€λ¬΄μ—μ„œ κ°œλ°œμ„ ν•˜λ‹€λ³΄λ©΄ λŒ€λΆ€λΆ„ νšŒμ‚¬μ—μ„œ 운영 μ„œλ²„μ™€ 개발 μ„œλ²„λ₯Ό λ‚˜λˆ μ„œ κ°œλ°œμ„ μ§„ν–‰ν•œλ‹€. λ¨Όμ € 개발 μ„œλ²„μ—μ„œ κ°œλ°œν•˜κ³ , ν…ŒμŠ€νŠΈλ₯Ό 진행 ν›„ μ •μƒμ μœΌλ‘œ λ™μž‘ν•œ

hyejin.tistory.com

μŠ€ν”„λ§ μ™ΈλΆ€ μ„€μ • 방법 (μ»€λ§¨λ“œ 라인 인수, μ»€λ§¨λ“œ 라인 μ˜΅μ…˜ 인수, μŠ€ν”„λ§ 톡합) (tistory.com)

 

μŠ€ν”„λ§ μ™ΈλΆ€ μ„€μ • 방법 (μ»€λ§¨λ“œ 라인 인수, μ»€λ§¨λ“œ 라인 μ˜΅μ…˜ 인수, μŠ€ν”„λ§ 톡합)

μŠ€ν”„λ§ μ™ΈλΆ€ μ„€μ • 방법 (OS ν™˜κ²½ λ³€μˆ˜, μžλ°” μ‹œμŠ€ν…œ 속성) (tistory.com) μŠ€ν”„λ§ μ™ΈλΆ€ μ„€μ • 방법 (OS ν™˜κ²½ λ³€μˆ˜, μžλ°” μ‹œμŠ€ν…œ 속성) 0️⃣ μ™ΈλΆ€ μ„€μ •μ΄λž€ ? 보톡 μ‹€λ¬΄μ—μ„œ κ°œλ°œμ„ ν•˜λ‹€λ³΄λ©΄ λŒ€λΆ€λΆ„ νšŒμ‚¬μ—

hyejin.tistory.com

 

 

0️⃣ μ™ΈλΆ€ μ„€μ • 방법 

μŠ€ν”„λ§μ—μ„œ μ™ΈλΆ€ μ„€μ •ν•˜λŠ” λ°©λ²•μœΌλ‘œλŠ” 4가지 정도가 μžˆλ‹€. 

- OS ν™˜κ²½ λ³€μˆ˜: OS μ—μ„œ μ§€μ›ν•˜λŠ” μ™ΈλΆ€ μ„€μ •, ν•΄λ‹Ή OSλ₯Ό μ‚¬μš©ν•˜λŠ” λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ‚¬μš© 
- μžλ°” μ‹œμŠ€ν…œ 속성 : μžλ°”μ—μ„œ μ§€μ›ν•˜λŠ” μ™ΈλΆ€ μ„€μ •, ν•΄λ‹Ή JVM μ•ˆμ—μ„œ μ‚¬μš© 
- μžλ°” μ»€λ§¨λ“œ 라인 인수 : μ»€λ§¨λ“œ λΌμΈμ—μ„œ μ „λ‹¬ν•˜λŠ” μ™ΈλΆ€ μ„€μ •, μ‹€ν–‰ μ‹œ main(args) λ©”μ„œλ“œμ—μ„œ μ‚¬μš©
- μ™ΈλΆ€ 파일(μ„€μ • 데이터) : ν”„λ‘œκ·Έλž¨μ—μ„œ μ™ΈλΆ€ νŒŒμΌμ„ 직접 μ½μ–΄μ„œ μ‚¬μš© 

μ•žμ— κΈ€μ—μ„œ OS ν™˜κ²½ λ³€μˆ˜, μžλ°” μ‹œμŠ€ν…œ 속성, μžλ°” μ»€λ§¨λ“œ 라인 인수둜 μ„€μ • 값을 μ§€μ •ν•˜κ³  μ½μ–΄μ˜€λŠ” 방법에 λŒ€ν•΄μ„œ μ•Œμ•„λ΄€λ‹€. 

μœ„μ˜ 세가지 방법은 직접 값을 μ§€μ •ν•΄μ€˜μ•Ό ν•˜λŠ”λ° 외뢀에 값을 μ§€μ •ν•΄μ€˜μ•Όν•˜λŠ”κ²Œ λ§Žμ•„μ§€λ©΄ μ‚¬μš©ν•˜κΈ° 점점 λΆˆνŽΈν•΄μ§„λ‹€. 

 

μ‹€λ¬΄μ—μ„œλŠ” μˆ˜μ‹­κ°œμ˜ 섀정값이 ν•„μš”ν•΄μ§€λŠ”λ° 이λ₯Ό ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ν•  λ•Œ λ§ˆλ‹€ μž…λ ₯ν•˜λ €κ³  ν•œλ‹€λ©΄ λˆ„λ½λ˜λŠ” 뢀뢄도 μžˆμ„ 것이고, 관리 μ—­μ‹œ μ–΄λ ΅λ‹€. 

 

μ΄λŸ¬ν•œ 단점을 ν•΄κ²°ν•˜κΈ° μœ„ν•œ λ°©λ²•μœΌλ‘œλŠ” 섀정값을 νŒŒμΌμ— λ„£μ–΄μ„œ κ΄€λ¦¬ν•˜λŠ” 방법이 μžˆλ‹€. 

섀정값을 νŒŒμΌμ— λ„£μ–΄ κ΄€λ¦¬ν•œ λ‹€μŒ μ‹€ν–‰ν•  λ•ŒλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‘œλ”© μ‹œμ μ— 이 νŒŒμΌμ„ μ½μ–΄μ„œ μ‚¬μš©ν•˜λ©΄ λœλ‹€. 

파일 ν˜•μ‹μ€‘μ—μ„œλŠ” .properties 파일이 key=value ν˜•μ‹μ„ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— 섀정값을 κ΄€λ¦¬ν•˜κΈ°μ— μš©μ΄ν•˜λ‹€. 

 

 

 

1️⃣  μ™ΈλΆ€ μ„€μ • 방법 : μ™ΈλΆ€ 파일 

application.properties νŒŒμΌμ„ μ„€μ • 값을 λ‹€λ₯΄κ²Œ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 개발 μ„œλ²„μ™€ 운영 μ„œλ²„μ— 각각 같은 μ΄λ¦„μœΌλ‘œ λ§Œλ“€μ–΄λ‘”λ‹€. 

κ·Έ λ‹€μŒ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‘œλ”© μ‹œμ μ— ν•΄λ‹Ή νŒŒμΌμ„ μ½μ–΄μ„œ κ·Έ 속에 μžˆλŠ” 값듀을 μ™ΈλΆ€ μ„€μ •κ°’μœΌλ‘œ μ‚¬μš©ν•˜λ©΄ λœλ‹€. 

(이제 νŒŒμΌμ΄λ¦„μ€ κ°™κΈ° λ•Œλ¬Έμ— μ½”λ“œλ₯Ό μˆ˜μ •ν•΄μ•Όν•˜λŠ” 그런 λΆˆνŽΈν•¨μ€ μ—†λ‹€.) 

 

url=dev.db.com
user=dev_user
password=dev_pw

application.properties에 μ΄λŸ°μ‹μœΌλ‘œ μž‘μ„±λ§Œ 해두면 μŠ€ν”„λ§λΆ€νŠΈκ°€ 이 섀정값을 μ½μ–΄μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ κ΅¬ν˜„μ„ λ‹€ ν•΄λ’€λ‹€. 

λ”°λΌμ„œ κ·Έλƒ₯ κ°œλ°œμžλŠ” application.properties 파일만 μžλ°”λ₯Ό μ‹€ν–‰ν•˜λŠ” μœ„μΉ˜μ— λ§Œλ“€μ–΄ λ‘κΈ°λ§Œ ν•˜λ©΄ λœλ‹€. 

 

-> 그러면 μŠ€ν”„λ§μ—μ„œ PropertySoource의 κ΅¬ν˜„μ²΄λ₯Ό μ œκ³΅ν•΄ ν•΄λ‹Ή νŒŒμΌμ„ μ½μ–΄μ˜¬ 수 있고, Environment λ₯Ό ν†΅ν•΄μ„œ μ„€μ • 데이터λ₯Ό μ‘°νšŒν•  수 μžˆλ‹€. 

 

 

❗ 근데 외뢀에 application.properties νŒŒμΌμ„ λ‘¬μ„œ κ΄€λ¦¬ν•˜κ²Œ 되면 μ„€μ • 파일 자체λ₯Ό κ΄€λ¦¬ν•˜λŠ”λ° 번거둜운 λ¬Έμ œκ°€ λ°œμƒν•œλ‹€. 

λ§Œμ•½ μ„œλ²„κ°€ λ§Œμ•½ 10λŒ€λ©΄ 변경사항이 μžˆλ‹€λ©΄ 10개 μ„œλ²„μ˜ μ™ΈλΆ€ μ„€μ • νŒŒμΌμ„ λͺ¨λ‘ λ³€κ²½ν•΄μ€˜μ•Ό ν•œλ‹€λŠ” λΆˆνŽΈν•¨μ΄ μžˆλ‹€. 

 

 

2️⃣ μ™ΈλΆ€ μ„€μ • 방법 : λ‚΄λΆ€ 파일 

μœ„μ—μ„œ μ™ΈλΆ€ 파일둜 application.properties을 두면 μ„€μ • 파일 자체λ₯Ό κ΄€λ¦¬ν•˜λŠ”λ° λΆˆνŽΈν•¨μ΄ μžˆλŠ”λ° 이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆλŠ” λ°©λ²•μœΌλ‘œλŠ” μ„€μ • νŒŒμΌμ„ ν”„λ‘œμ νŠΈ 내뢀에 ν¬ν•¨ν•΄μ„œ κ΄€λ¦¬ν•˜κ³  λΉŒλ“œ μ‹œμ μ— 같이 λΉŒλ“œν•˜λŠ” 것이닀. 

 

μ΄λ ‡κ²Œ ν•˜λ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 배포할 λ•Œ μ„€μ • νŒŒμΌλ„ ν•¨κ»˜ λ°°ν¬ν•˜λŠ”κ±΄λ° 즉, jar ν•˜λ‚˜μ— μ„€μ • λ°μ΄ν„°κΉŒμ§€ ν¬ν•¨ν•΄μ„œ κ΄€λ¦¬ν•˜λŠ” 것이닀. 

src > main > resources 에 application-dev.properties, application-prod.properties μ΄λŸ°μ‹μœΌλ‘œ 개발, 운영 μ„€μ • νŒŒμΌμ„ λ§Œλ“€κ³ , ν•¨κ»˜ ν¬ν•¨ν•΄μ„œ λΉŒλ“œν•˜κ³  jar λŠ” 두 μ„€μ • νŒŒμΌμ„ λͺ¨λ‘ 가지고 λ°°ν¬ν•˜κ²Œ λœλ‹€. 

κ·Έ λ‹€μŒ 각각 μ‹€ν–‰ν•  λ•Œ μ–΄λ–€ μ„€μ • νŒŒμΌμ„ 가지고 μ‹€ν–‰ν•˜λ©΄ λ˜λŠ”μ§€λ§Œ 지정해주면 λœλ‹€. 

(개발 μ„œλ²„λΌλ©΄ application-prod.properties, 운영 μ„œλ²„λΌλ©΄ application-dev.properties) 

그리고 이 ꡬ뢄은 profile ν”„λ‘œν•„μ„ ν†΅ν•΄μ„œ ꡬ뢄해주면 μŠ€ν”„λ§μ΄ 이 ν”„λ‘œν•„μ— 따라 각각 νŒŒμΌμ„ μ½λŠ” 방법을 κ΅¬ν˜„ν•΄λ’€λ‹€. 

 

 

* ν”„λ‘œν•„ 

μŠ€ν”„λ§μ€ μ„€μ • 파일 같은 것을 κ΅¬λΆ„ν•΄μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ ν”„λ‘œν•„μ΄λΌλŠ” κ°œλ…μ„ μ§€μ›ν•œλ‹€. 

 spring.profiles.active 둜 μ™ΈλΆ€ 섀정에 값을 λ„£μœΌλ©΄ ν•΄λ‹Ή ν”„λ‘œν•„μ„ μ‚¬μš©ν•œλ‹€κ³  νŒλ‹¨ν•œλ‹€. 

그리고 이 ν”„λ‘œν•„μ€ application-{profile}.properties κ·œμΉ™μ— 따라 ν•΄λ‹Ή ν”„λ‘œν•„μ— λ§žλŠ” λ‚΄λΆ€ 파일 (μ„€μ • 데이터)λ₯Ό μ‘°νšŒν•œλ‹€. 

--spring.profiles.active=prod 둜 μ„€μ •ν•˜λ©΄ ν”„λ‘œν•„μ„ prod둜 ν•œλ‹€λŠ” κ²ƒμœΌλ‘œ application-prod.properties 파일의 섀정을 μ‘°νšŒν•œλ‹€. 

μ§€κΈˆμ€ μ»€λ§¨λ“œ 라인 μ˜΅μ…˜ 인수둜 μ„€μ •ν•΄μ„œ μ‹€ν–‰ν–ˆλŠ”λ° μžλ°” μ‹œμŠ€ν…œ μ†μ„±μ΄λ‚˜ os ν™˜κ²½ λ³€μˆ˜ 뭐든 μ‚¬μš©μ€ κ°€λŠ₯ν•˜λ‹€. 

 

 

-> μ΄λ ‡κ²Œ μ„€μ • 데이터 νŒŒμΌμ„ ν”„λ‘œμ νŠΈ 내뢀에 μƒμ„±ν•΄μ„œ 관리할 수 있고, 배포 μ‹œμ μ— μ„€μ • νŒŒμΌλ„ ν•¨κ»˜ λ°°ν¬ν•˜κ²Œ λœλ‹€. 

그런데 μ΄λ ‡κ²Œ νŒŒμΌμ„ λ‚˜λˆ μ„œ μ‚¬μš©ν•˜λ©΄ μ„€μ • 데이터λ₯Ό ν•œλˆˆμ— νŒŒμ•…ν•˜κΈ° μ–΄λ €μš΄λ° 파일 ν•˜λ‚˜μ— λ‹€ 포함할 μˆ˜λ„ μžˆλ‹€. 

 

 

3️⃣ μ™ΈλΆ€ μ„€μ • 방법 : λ‚΄λΆ€ 파일 톡합 

μœ„μ— λ‚΄λΆ€ νŒŒμΌμ€ μ„€μ • νŒŒμΌμ„ λΆ„λ¦¬ν•΄μ„œ μ‚¬μš©ν•˜κ³  μžˆλŠ”λ° 이러면 각각 νŒŒμΌμ„ λΆ„λ¦¬ν–ˆκΈ° λ•Œλ¬Έμ— μ„€μ • 데이터λ₯Ό ν•œλˆˆμ— νŒŒμ•…ν•˜κΈ° μ–΄λ ΅λ‹€λŠ” 단점이 μ‘΄μž¬ν•œλ‹€. 

-> μŠ€ν”„λ§μ€ 이 문제λ₯Ό 또 ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ λ‚΄λΆ€ 파일 ν•˜λ‚˜ 가지고 λΆ„λ¦¬ν•΄μ„œ μ‚¬μš©ν•  수 μžˆλŠ” 방법도 μ œκ³΅ν•œλ‹€. 

 

 

application.properties에 μœ„ κ·Έλ¦Όκ³Ό 같이 dev, prod ν™˜κ²½μ— λŒ€ν•œ μ„€μ • 데이터λ₯Ό μž‘μ„±ν•΄μ£Όκ³ , #--- λ˜λŠ” !---둜 κ΅¬λΆ„ν•΄μ„œ μ˜μ—­μ„ λ‚˜λˆŒ 수 μžˆλ‹€. 

#--- λ˜λŠ” !---둜 ꡬ뢄해주면 ν•˜λ‚˜μ˜ νŒŒμΌμ„ 가지고 λΆ„λ¦¬ν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ‹€. 

그리고 spring.config.activate.on-profile에 profile 을 지정해주면 ν”„λ‘œν•„ 값에 λ”°λΌμ„œ ν•΄λ‹Ήν•˜λŠ” 데이터λ₯Ό ν™œμ„±ν™”ν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ‹€. 

 

(ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄μ„œ μœ„μ— λ§Œλ“€μ—ˆλ˜ application-dev.properties와 application-prod.properties의 데이터듀은 μ£Όμ„μ²˜λ¦¬ν•΄μ€€λ‹€.) 

 

 

* ν”„λ‘œν•„μ„ prod 둜 지정 

 

* ν”„λ‘œν•„μ„ dev둜 지정 

 

-> μ΄λ ‡κ²Œ application.properties 파일 ν•˜λ‚˜μ— ν†΅ν•©ν•΄μ„œ λ‹€μ–‘ν•œ ν”„λ‘œν•„μ˜ μ„€μ • 데이터λ₯Ό 관리할 수 μžˆλ‹€. 

 

 

 

 

 

 

 

 

728x90