๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[DevOps]/CI & CD

๋กœ์ปฌ์—์„œ ์  ํ‚จ์Šค๋กœ ๋ธ”๋ฃจ/๊ทธ๋ฆฐ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ํ…Œ์ŠคํŠธํ•˜๊ธฐ (1) - ์  ํ‚จ์Šค ์„ค์น˜, ์Šคํ”„๋ง ๋ถ€ํŠธ ์„œ๋ฒ„ ์„ธํŒ…

by ํŒกํŽ‘ํ 2023. 11. 24.
728x90
๐Ÿ’ก ์ด ๊ธ€์—์„œ ํ…Œ์ŠคํŠธํ•ด ๋ณผ ๋‚ด์šฉ์€ nginx + jenkins + springboot + github๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ์„œ๋ฒ„์˜ ๋ฐฐํฌ ์ž๋™ํ™” ๋ฐ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ๋กœ์ปฌ ํ™˜๊ฒฝ์— ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๐Ÿ“Œ ์  ํ‚จ์Šค ์„ค์น˜

  • ๋กœ์ปฌ์—์„œ ์  ํ‚จ์Šค๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค.
  • https://www.jenkins.io/
  • ์œ„ ๋งํฌ์— ์ ‘์†ํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œ๋ฅผ ํด๋ฆญํ•œ๋‹ค. 

 

  • ๊ทธ๋Ÿผ ์  ํ‚จ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ ๊ฐ ์šด์˜์ฒด์ œ๋‚˜ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์—์„œ ๋งž๋Š” ๊ฑธ ํด๋ฆญํ•˜๋ฉด ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‚˜์˜จ๋‹ค.
  • MAC์„ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๋ฉด macOS๋ฅผ ํด๋ฆญํ•œ๋‹ค.

 

  • ๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ Homebrew๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‚˜์˜จ๋‹ค. 

 

brew install jenkins
brew services start jenkins
  • ์ฒ˜์Œ ์„ค์น˜๋ผ๋ฉด ์œ„ ๋‘ ๋ช…๋ น์–ด๋กœ ๊ฐ„๋‹จํžˆ ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

https://suzuworld.tistory.com/415

 

๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๋„์ปค ์  ํ‚จ์Šค(Jenkins) ์ปจํ…Œ์ด๋„ˆ๋กœ ๊นƒํ—ˆ๋ธŒ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ํด๋ก  ํ…Œ์ŠคํŠธํ•˜๊ธฐ(with Ngrok)

๐Ÿ’ก ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ๋„์ปค์˜ jenkins ๊ณต์‹์ด๋ฏธ์ง€๋Š” Deprecated ๋˜์—ˆ๋‹ค. ๋‚˜์˜ ๊ฒฝ์šฐ ์ž๋ฐ” 11 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— lts-jdk 11 ๋ฒ„์ „์„ ์‚ฌ์šฉํ–ˆ๋‹ค. LTS(Long Term Support)๋Š” ์žฅ๊ธฐ ์ง€์› ๋ฒ„์ „์ด๋ž€ ์˜๋ฏธ๋กœ, ์ผ๋ฐ˜์ ์ธ ๊ฒฝ

suzuworld.tistory.com

  • ์  ํ‚จ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ณ  Github ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์— ์ €์žฅ๋œ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์  ํ‚จ์Šค ์›Œํฌ์ŠคํŽ˜์ด์Šค๋กœ ํด๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์œ„ ๋งํฌ์— ๋งค์šฐ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ๋†“์•˜๋‹ค.
    • ์—ฌ๊ธฐ์—์„œ๋Š” ์  ํ‚จ์Šค ์„ค์น˜ ํ›„ ์Šคํ”„๋ง ๋ถ€ํŠธ ์„œ๋ฒ„ ์„ธํŒ…๊ณผ ์‰˜ ์Šคํฌ๋ฆฝํŠธ & ์  ํ‚จ์Šค ํŒŒ์ผ ์ž‘์„ฑ์„ ๋ฉ”์ธ์œผ๋กœ ๋‹ค๋ฃฌ๋‹ค.
  • ๋งŒ์•ฝ ์  ํ‚จ์Šค๊ฐ€ ์™„์ „ํžˆ ์ฒ˜์Œ์ด๋ผ๋ฉด ๊ผญ ํด๋ก ๊นŒ์ง€์˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋”ฐ๋ผ ํ•ด ๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.
  • ์œ„ ๋งํฌ์˜ ๊ธ€์€ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์œผ๋‹ˆ ๋กœ์ปฌ ์  ํ‚จ์Šค ์„ค์น˜์™€ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ๋‹ค.
    • ๋„์ปค์˜ ๊ฒฝ์šฐ ์  ํ‚จ์Šค ํฌํŠธ๋ฅผ <docker run> ๋ช…๋ น์–ด๋กœ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, mac์— ์ง์ ‘ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ดˆ๊ธฐ ํฌํŠธ๊ฐ€ 8080์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.
    • macOS ๊ธฐ์ค€์œผ๋กœ ์  ํ‚จ์Šค ํฌํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ ๋กœ์ปฌ์— ์  ํ‚จ์Šค๋ฅผ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ์—๋„ ๋”ฐ๋ผํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•ด ๋†“์•˜์œผ๋‹ˆ ์œ„ ๋งํฌ์˜ ๊ธ€์„ ๋”ฐ๋ผ Jenkins ๊ธฐ๋ณธ ์„ค์ •์„ ๋๋‚ด๊ณ  ๋Œ์•„์˜ค์ž.

 

โ“ ์™œ ํด๋ก  ํ…Œ์ŠคํŠธ๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ ํ•˜๊ณ  ๋ฐฐํฌ ํ…Œ์ŠคํŠธ๋Š” ๋กœ์ปฌ PC์˜ ์  ํ‚จ์Šค๋กœ ํ•˜์‹œ๋‚˜์š”?

  • ์›๋ž˜๋Š” ์  ํ‚จ์Šค ์ปจํ…Œ์ด๋„ˆ๋กœ ํ•˜๊ณ  ์‹ถ์—ˆ์œผ๋‚˜, ํŠน์ • ์™ธ๋ถ€ ์„œ๋ฒ„์— ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ 100%ํ•˜๋‚˜์˜ ๋กœ์ปฌ ์„œ๋ฒ„์— ๋ฐฐํฌ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.
    • ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋นŒ๋“œ ๊ณผ์ •์ด ๋๋‚˜๊ณ  ํ˜ธ์ŠคํŠธ PC์— ๋นŒ๋“œ ํŒŒ์ผ์„ ์ „์†ก(๋ฐฐํฌ)๊นŒ์ง€๋Š” ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜(docker cp ๋ช…๋ น์–ด ์‚ฌ์šฉํ•ด์„œ), ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ํ˜ธ์ŠคํŠธ PC์—๊ฒŒ ์‰˜์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ผ๊ณ  ๋ช…๋ น์„ ๋‚ด๋ฆด ๋ฐฉ๋ฒ•์ด ๋„์ €ํžˆ ์ƒ๊ฐ๋‚˜์ง€ ์•Š์•˜๋‹ค. 
  • ๋ฌผ๋ก  ๋ฐฉ๋ฒ•์„ ์ฐพ์œผ๋ ค๊ณ  ํ•˜๋ฉด ํ•ด๊ฒฐ์ฑ…์ด์•ผ ์žˆ์—ˆ๊ฒ ์ง€๋งŒ ๋ณต์žกํ•  ๊ฒƒ์ด ๋ป”ํ•˜๊ณ  ์ด๊ฑด ๋ง๊ทธ๋Œ€๋กœ ์‹ค์ œ ์„œ๋ฒ„์— ์ ์šฉํ•ด๋ณด๊ธฐ ์ „์˜ ๋กœ์ปฌ ํ…Œ์ŠคํŠธ์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋„์ปค ์  ํ‚จ์Šค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ๋กœ์ปฌ PC์— ์  ํ‚จ์Šค๋ฅผ ์„ค์น˜ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ–ˆ๋‹ค.

 

๐Ÿ˜€ ๋ธ”๋ฃจ/๊ทธ๋ฆฐ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ค€๋น„

  • ์œ„ ๊ธ€์„ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผํ–ˆ๋‹ค๋ฉด ์Šคํ”„๋ง ๋ถ€ํŠธ ์„œ๋ฒ„๋ฅผ ngrok์œผ๋กœ ์™ธ๋ถ€์— ๋…ธ์ถœ์‹œํ‚ค๊ณ  ์ด๋ฅผ ๊นƒํ—ˆ๋ธŒ์˜ ์›นํ›…์„ ์ด์šฉํ•ด ์  ํ‚จ์Šค ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ํด๋ก ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ๋˜์–ด์žˆ์„ ๊ฒƒ์ด๋‹ค. 
  • ์ด ๊ธ€์€ ์ดํ›„์— ๊ณผ์ •๋ถ€ํ„ฐ ์„ค๋ช…ํ•œ๋‹ค.
    • ์ด ๊ธ€์˜ ๋งˆ์ง€๋ง‰ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ngrok์œผ๋กœ ์™ธ๋ถ€์— ์„œ๋ฒ„๋ฅผ ๋…ธ์ถœ ์‹œ์ผœ ๋กœ์ปฌ์—์„œ ๊นƒํ—ˆ๋ธŒ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ๋กœ ํ‘ธ์‹œํ•˜๋Š” ๊ฑธ ํŠธ๋ฆฌ๊ฑฐ๋กœ ๋ฐฐํฌ ์ž๋™ํ™”ํ•˜๋Š” ํ…Œ์ŠคํŠธ ๊ณผ์ •์„ ์ƒ๋žตํ•˜๊ณ  ์  ํ‚จ์Šค UI์—์„œ ์ง์ ‘ ๋นŒ๋“œํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ง„ํ–‰ํ•œ๋‹ค.(๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋งŒ ํ…Œ์ŠคํŠธ ์ง„ํ–‰)
    • ๋”ฐ๋ผ์„œ ngrok๊นŒ์ง€ ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด(๋ฐฐํฌ ์ž๋™ํ™”) ์œ„ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๋ฉด ๋œ๋‹ค.
  • ๋‚ด๊ฐ€ ๋งŒ๋“ค ๋ธ”๋ฃจ/๊ทธ๋ฆฐ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ๊ณผ์ •์— ๋Œ€ํ•œ ๊ณ„ํš์€ 

blue -> green
green -> blue

  • ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์ด๋‹ค.
    • ์‹ค์ œ 3ํŽธ ๊ธ€์˜ ๋ฐฐํฌํ…Œ์ŠคํŠธ์—์„œ๋Š” ๊นƒํ—ˆ๋ธŒ ํ‘ธ์‹œ ๊ณผ์ •์„ ์ƒ๋žตํ•˜๊ณ  ์  ํ‚จ์Šค์—์„œ ์ง์ ‘ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ–ˆ๋‹ค.

 

https://suzuworld.tistory.com/416

 

์  ํ‚จ์Šค(jenkins)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ๊ณ„ํš์„ ์„ธ์›Œ๋ณด์ž

๐Ÿ’ก ์‚ฌ๋‚ด ํ”„๋กœ์ ํŠธ์— ์  ํ‚จ์Šค๋ฅผ ์ ์šฉํ•˜์—ฌ ๊ธฐ์กด์˜ ๊ณ ์ „์ ์ธ ๋นŒ๋“œ & ๋ฐฐํฌ ๋ฐฉ์‹์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๊ณผ์ •์„ ๊ธฐ๋กํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๐Ÿค” What is Jenkins? ์  ํ‚จ์Šค(Jenkins)๋Š” ์ง€์†์ ์ธ ํ†ตํ•ฉ(Continuous Integration)๊ณผ ์ง€์†์ ์ธ

suzuworld.tistory.com

  • ์ž์„ธํ•œ ๋ฐฐํฌ ์„ค๋ช…์€ ์ด ๊ธ€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฝ๊ณ  ์•„๋ž˜์˜ ๋‚ด์šฉ์„ ๋ด์•ผ ์ง„ํ–‰์ƒํ™ฉ์ด ์‰ฝ๊ฒŒ ์ดํ•ด๋  ๊ฒƒ์ด๋‹ค.
  • ์œ„ ๊ธ€์—์„œ๋Š” ๋กœ์ปฌ ์„œ๋ฒ„์—์„œ ์™ธ๋ถ€ ์„œ๋ฒ„๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๋Š”๋ฐ(๋กœ์ปฌ -> ๊นƒํ—ˆ๋ธŒ -> ์™ธ๋ถ€ ์„œ๋ฒ„ ์  ํ‚จ์Šค -> ์™ธ๋ถ€ ์„œ๋ฒ„ ๋ฐฐํฌ)
  • ์—ฌ๊ธฐ์„œ ์ง„ํ–‰ํ•  ํ…Œ์ŠคํŠธ์—์„œ๋Š” (๋กœ์ปฌ -> ๊นƒํ—ˆ๋ธŒ -> ๋กœ์ปฌ ์  ํ‚จ์Šค -> ๋กœ์ปฌ ๋ฐฐํฌ)๋กœ ์ง„ํ–‰ ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋Š” ์ ์„ ์ฐธ๊ณ ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.
    • ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง€์ง€๋Š” ์•Š์•˜๊ณ  ๊ทธ์ € ์™ธ๋ถ€์„œ๋ฒ„๋กœ ๋ฐฐํฌํ•˜๋Š”๋ƒ ๋กœ์ปฌ์— ๋ฐฐํฌํ•˜๋А๋ƒ์— ์ฐจ์ด๊ฐ€ ์žˆ์„ ๋ฟ์ด๋‹ค.
    • ๋กœ์ปฌ -> ๊นƒํ—ˆ๋ธŒ๋Š” ํ…Œ์ŠคํŠธ ๊ณผ์ •์—์„œ ์ƒ๋žตํ•œ๋‹ค.

 

โš’๏ธ ์Šคํ”„๋ง๋ถ€ํŠธ ์„œ๋ฒ„ ์„ธํŒ…

import lombok.RequiredArgsConstructor;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;

@RestController
@RequiredArgsConstructor
public class MainController {

    private final Environment environment;

    @GetMapping("/")
    public String getVersion() {
        return "์ด ์„œ๋ฒ„๋Š” V1์ž…๋‹ˆ๋‹ค. ๋นŒ๋“œ ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ท!!!";
    }

    @GetMapping("/profile")
    public String getProfile() {
        return Arrays.stream(environment.getActiveProfiles()).findFirst().orElse("default");
    }
}
  • ๋จผ์ € ์Šคํ”„๋ง๋ถ€ํŠธ ์„œ๋ฒ„๋ฅผ ์„ธํŒ…ํ•˜๊ฒ ๋‹ค.
  • ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“  ๋’ค ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค์— ์œ„ ๋‘ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
    • getVersion()์˜ ๊ฒฝ์šฐ localhost:8080์œผ๋กœ ์ ‘์†ํ•˜๋ฉด ์œ„ ๋ฆฌํ„ด๋ฌธ์ด ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค.
    • getProfile()์˜ ๊ฒฝ์šฐ์—๋Š” localhost:8080/profile๋กœ ์ ‘์†ํ•˜๋ฉด ์Šคํ”„๋ง๋ถ€ํŠธ ์„œ๋ฒ„์˜ ํ”„๋กœํผํ‹ฐ ํ”„๋กœํ•„์ด ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค.

 

  • ๋กœ์ปฌ ์„œ๋ฒ„์—๋Š” ์ด 3๊ฐœ์˜ application.yml ํŒŒ์ผ์ด ์กด์žฌํ•œ๋‹ค.
  • application.yml์—๋Š” spring.profiles.active: blue๋งŒ ์ ๋Š”๋‹ค.
    • ๋กœ์ปฌ์—์„œ ์ธํ…”๋ฆฌ์ œ์ด๋กœ ์ง์ ‘ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋Š” default๋กœ blue๋ฅผ ์‹คํ–‰ํ•  ๊ฒƒ์ด๋‹ค.
  • blue์˜ ํฌํŠธ๋Š” 8081์ด๋ฉฐ, ๊ทธ๋ฆฐ์˜ ํฌํŠธ๋Š” 8082์ด๋‹ค.
  • ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ ๋ฐ˜๋“œ์‹œ" applicaiion-" ๋‹ค์Œ ์›ํ•˜๋Š” ํ”„๋กœํ•„ ์ด๋ฆ„์„ ์ ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

  • /profile๋กœ ์„œ๋ฒ„์— ์ ‘์†ํ•ด ๋ณด์ž.
  • application.yml์— blue๋กœ ์„ค์ •ํ•˜์—ฌ ์‹คํ–‰ํ•˜๋ฉด blue๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ , green์œผ๋กœ ์„ค์ •ํ•˜๋ฉด green์œผ๋กœ ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค.

 

๐Ÿ’ก build.gradle ์„ค์ •

implementation 'org.springframework.boot:spring-boot-starter-actuator'

 

  • ์œ„ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜์ž.
    • ๋‚˜์ค‘์— health check๋ฅผ ํ•  ๋•Œ ์„œ๋ฒ„๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
    • ์ปจํŠธ๋กค๋Ÿฌ์— ๋”ฐ๋กœ get ์š”์ฒญ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•„๋„ ์œ„ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์„œ๋ฒ„์˜ ์ •์ƒ ์‹คํ–‰ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋Š” api๊ฐ€ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋œ๋‹ค.
    • api ์—”ํŠธํฌ์ธํŠธ๋Š” /actuator/health์ด๋‹ค.
    • ์‹ค์ œ๋กœ ์ ‘์†ํ•ด ๋ณด๋ฉด json ํ˜•ํƒœ๋กœ "UP"์ด๋ผ๊ณ  value๊ฐ€ ์ถœ๋ ฅ๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
      • ์ด "UP"์ด๋ผ๋Š” ๋ฌธ์ž๋Š” ์‰˜ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์„œ๋ฒ„์˜ ์ •์ƒ ์‹คํ–‰ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉ๋  ๊ฒƒ์ด๋‹ค.(health check)

 

๋‹ค์Œ ๊ธ€์— ๊ณ„์†๋œ๋‹ค.

 

 

 

์ฐธ๊ณ 

๋คผํŠผ

https://hyunminh.github.io/nonstop-deploy/

 

728x90