216.73.216.25 TODAY : 2,896
์ž๋ฃŒ์‹ค ์„œ๋ธŒ ํƒ€์ดํ‹€ ์•„์ด์ฝ˜

์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ์ตœ์ƒ๊ธ‰

๐Ÿ“š PHP ์ตœ์ƒ๊ธ‰ - 4์ฃผ์ฐจ: CI/CD (์ง€์†์  ํ†ตํ•ฉ/์ง€์†์  ๋ฐฐํฌ) ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•- 01 CI/CD ๊ฐœ๋… ๋ฐ ํ•„์š”์„ฑ

๐Ÿ“š PHP ์ตœ์ƒ๊ธ‰ - 4์ฃผ์ฐจ: CI/CD (์ง€์†์  ํ†ตํ•ฉ/์ง€์†์  ๋ฐฐํฌ) ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•- 01 CI/CD ๊ฐœ๋… ๋ฐ ํ•„์š”์„ฑ

์ฃผ์š” ํ”„๋กœ๊ทธ๋žจ ์ŠคํŽ™

  • ํ‰์ : 10.0
  • ๋ผ์ด์„ ์Šค: free
  • ์šด์˜์ฒด์ œ:
  • ํŒŒ์ผ ํฌ๊ธฐ: 0

ํ”ผ๋“œ๋ฐฑ ๋ฐ ๋‹ค์šด๋กœ๋“œ

  • ์‚ฌ์šฉ์ž ํ‰์ : 10.0
  • ๋‹ค์šด๋กœ๋“œ ์ˆ˜: 1
  • ์กฐํšŒ์ˆ˜: 27

์ œ์กฐ์‚ฌ ๋ฐ ๋“ฑ๋ก ์ •๋ณด

  • ์ œ์ž‘์‚ฌ: LUZENSOFT
  • ๋“ฑ๋ก์ผ: 2025-10-13 10:09:19
  •  

- ์„ค๋ช…

CI/CD๋ž€ ๋ฌด์—‡์ด๋ฉฐ, ์™œ ํ•„์š”ํ•œ๊ฐ€?

uploadImage


์ง€๋‚œ 3์ฃผ๊ฐ„ ์šฐ๋ฆฌ๋Š” #PHP์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ํ•„์ˆ˜์ ์ธ #์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ (Docker)์„ ์™„๋ฒฝํ•˜๊ฒŒ ์Šต๋“ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ฐœ๋ฐœ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž๋™ํ™”๋˜๊ณ  ์•ˆ์ •์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ์ตœ์ข… ๋‹จ๊ณ„, ๋ฐ”๋กœ CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•์— ๋Œ€ํ•ด ๋ฐฐ์šธ ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค.

#CI/CD ๋Š” **์ง€์†์  ํ†ตํ•ฉ(Continuous Integration)**๊ณผ **์ง€์†์  ๋ฐฐํฌ(Continuous Delivery/Deployment)**๋ฅผ ํ•ฉ์นœ ์šฉ์–ด์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ค‘์•™ ์ €์žฅ์†Œ(Git)์— ์ž์ฃผ ๋ณ‘ํ•ฉ(Integrate)ํ•˜๊ณ , ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ…Œ์ŠคํŠธํ•œ ํ›„, ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž๋™์œผ๋กœ ๋ฐฐํฌ(Deploy)ํ•˜๋Š” ์ผ๋ จ์˜ ์ž๋™ํ™”๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ „ํ†ต์ ์ธ ๊ฐœ๋ฐœ ๋ฐฉ์‹์—์„œ๋Š” ๋ฐฐํฌ๊ฐ€ ๋ช‡ ์ฃผ ๋˜๋Š” ๋ช‡ ๋‹ฌ์— ํ•œ ๋ฒˆ์”ฉ ์ด๋ฃจ์–ด์กŒ๊ณ , ์ด๋กœ ์ธํ•ด ๋ฒ„๊ทธ ์ˆ˜์ •๊ณผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถœ์‹œ๊ฐ€ ๋А๋ฆฌ๊ณ  ์œ„ํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„๋Œ€์˜ ์• ์ž์ผ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ #CI/CD ๋Š” ํ•„์ˆ˜์ ์ธ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค.



1. ์ง€์†์  ํ†ตํ•ฉ (Continuous Integration, CI)์˜ ๊ฐœ๋…

uploadImage


#CI ์˜ ํ•ต์‹ฌ ๋ชฉํ‘œ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์ž์ฃผ, ๊ทธ๋ฆฌ๊ณ  ์ผ๊ด€๋˜๊ฒŒ ์ฃผ ๋ธŒ๋žœ์น˜(์˜ˆ: main ๋˜๋Š” master)์— ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


CI๊ฐ€ ํ•˜๋Š” ์ผ:


  1. ์ฝ”๋“œ ๋ณ‘ํ•ฉ: ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ Git ์ €์žฅ์†Œ์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค

  2. ์ž๋™ ๋นŒ๋“œ: ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ #์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋นŒ๋“œ ๊ฐ€ ์ž๋™์œผ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค (์˜ˆ: #PHP์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ ๊ฒฝ์šฐ Composer ์˜์กด์„ฑ ์„ค์น˜, #Docker์ด๋ฏธ์ง€ ๋นŒ๋“œ)

  3. ์ž๋™ ํ…Œ์ŠคํŠธ: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Test), ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ(Integration Test) ๋“ฑ์ด ์ž๋™ ์‹คํ–‰๋˜์–ด ์ฝ”๋“œ์˜ ์˜ค๋ฅ˜๋‚˜ ๊ธฐ์กด ๊ธฐ๋Šฅ์˜ ์†์ƒ ์—ฌ๋ถ€๋ฅผ ์ฆ‰์‹œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค

  4. ํ”ผ๋“œ๋ฐฑ: ํ…Œ์ŠคํŠธ์— ์‹คํŒจํ•˜๋ฉด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ฆ‰์‹œ ์•Œ๋ฆผ์ด ์ „์†ก๋˜์–ด ๋ฌธ์ œ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

์ด๋Ÿฌํ•œ #CI ๊ณผ์ •์„ ํ†ตํ•ด ํ†ตํ•ฉ ์˜ค๋ฅ˜๋ฅผ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•˜๊ณ , ์ฝ”๋“œ ์ถฉ๋Œ์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœํŒ€์˜ ํ˜‘์—… ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



2. ์ง€์†์  ๋ฐฐํฌ (Continuous Delivery/Deployment, CD)์˜ ๊ฐœ๋…

uploadImage


#CD ๋Š” #CI ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ํ†ต๊ณผํ•œ ์ฝ”๋“œ๋ฅผ ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •์˜ ์ž๋™ํ™”๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ํ˜•ํƒœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


A. ์ง€์†์  ์ „๋‹ฌ (Continuous Delivery)


ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•œ #๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ ์ด ์–ธ์ œ๋“ ์ง€ ๋ฐฐํฌ๋  ์ˆ˜ ์žˆ๋Š” ์ค€๋น„๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ ๋‹จ๊ณ„ ์ž์ฒด๋Š” ์ˆ˜๋™์ ์ธ ์Šน์ธ์„ ๊ฑฐ์ณ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ฆ‰, ๋ฒ„ํŠผ ํด๋ฆญ ํ•œ ๋ฒˆ์œผ๋กœ ์–ธ์ œ๋“ ์ง€ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์‚ฌ๋žŒ์ด ์ตœ์ข… ๊ฒฐ์ •์„ ๋‚ด๋ฆฝ๋‹ˆ๋‹ค.


B. ์ง€์†์  ๋ฐฐํฌ (Continuous Deployment)


ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์‚ฌ๋žŒ์˜ ๊ฐœ์ž… ์—†์ด ์ž๋™์œผ๋กœ ์šด์˜ ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ€์žฅ ์ง„ํ™”๋œ ํ˜•ํƒœ์˜ ์ž๋™ํ™”๋กœ, ๋น ๋ฅธ ์‹œ์žฅ ๋ฐ˜์‘์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


CD๊ฐ€ ํ•˜๋Š” ์ผ:


  1. ๋ฐฐํฌ ํ™˜๊ฒฝ ์ค€๋น„: ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์„œ๋ฒ„ ํ™˜๊ฒฝ์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค

  2. ๋ฐฐํฌ: #๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ (์˜ˆ: #Docker์ด๋ฏธ์ง€ )์„ ์Šคํ…Œ์ด์ง•(Staging) ๋˜๋Š” ํ”„๋กœ๋•์…˜(Production) ์„œ๋ฒ„์— ํ‘ธ์‹œํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค

  3. ๊ฒ€์ฆ: ๋ฐฐํฌ ํ›„์—๋„ ๊ธฐ๋ณธ์ ์ธ ์„œ๋น„์Šค ์ƒํƒœ(Health Check)๋ฅผ ์ž๋™์œผ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค



PHP ๊ฐœ๋ฐœ์—์„œ CI/CD์˜ ํ•„์š”์„ฑ



#PHP๊ฐœ๋ฐœ ์—์„œ #CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•์€ ์„ ํƒ์ด ์•„๋‹Œ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

  1. ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„: #CI ๋ฅผ ํ†ตํ•ด Composer ์˜ค๋ฅ˜, ๋ฌธ๋ฒ• ์˜ค๋ฅ˜, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์‹คํŒจ ๋“ฑ์„ ์ฆ‰์‹œ ์•Œ ์ˆ˜ ์žˆ์–ด ๋ฒ„๊ทธ ์ˆ˜์ • ์‹œ๊ฐ„์ด ๋‹จ์ถ•๋ฉ๋‹ˆ๋‹ค

  2. ์•ˆ์ •์ ์ธ ๋ฐฐํฌ: #์ปจํ…Œ์ด๋„ˆํ™” ๋œ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•˜๊ณ  #CD ๋กœ ์ž๋™ํ™”ํ•จ์œผ๋กœ์จ, ์ˆ˜๋™ ๋ฐฐํฌ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ํ™˜๊ฒฝ ์„ค์ • ์˜ค๋ฅ˜(Dependency Hell)๋ฅผ ์™„๋ฒฝํžˆ ์ œ๊ฑฐํ•˜๊ณ  ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค

  3. ๊ฒฝ์Ÿ ์šฐ์œ„ ํ™•๋ณด: ๊ธฐ๋Šฅ ์ถœ์‹œ ์ฃผ๊ธฐ๋ฅผ ๋‹จ์ถ•ํ•˜๊ณ , ๊ณ ๊ฐ์˜ ํ”ผ๋“œ๋ฐฑ์„ ์‹ ์†ํ•˜๊ฒŒ ๋ฐ˜์˜ํ•˜์—ฌ ์‹œ์žฅ ๋ณ€ํ™”์— ๋น ๋ฅด๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (Time-to-Market ๋‹จ์ถ•)

  4. ๊ฐœ๋ฐœํŒ€ ๋ฌธํ™” ๊ฐœ์„ : ํ…Œ์ŠคํŠธ์™€ ๋นŒ๋“œ๊ฐ€ ์ž๋™ํ™”๋˜์–ด ๊ฐœ๋ฐœ์ž๋Š” ์˜ค์ง ์ฝ”๋“œ ์ž‘์„ฑ์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐฐํฌ์— ๋Œ€ํ•œ ๋ถ€๋‹ด๊ณผ ๋‘๋ ค์›€์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค


๊ฒฐ๋ก 



#CI/CD ๋Š” ๋‹จ์ˆœํžˆ ์ž๋™ํ™” ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด, ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๋ฌธํ™”์™€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ทผ๋ณธ์ ์œผ๋กœ ๋ณ€ํ™”์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์‹œ๊ฐ„๋ถ€ํ„ฐ๋Š” Gitlab CI, Jenkins, Github Actions์™€ ๊ฐ™์€ ์‹ค์ œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šฐ๋ฆฌ์˜ #PHP์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ ์œ„ํ•œ ์™„๋ฒฝํ•œ #CI/CDํŒŒ์ดํ”„๋ผ์ธ ์„ ๊ตฌ์ถ•ํ•˜๋Š” ์‹ค์Šต์„ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.



๊ธฐ๊ฐ„,์ˆ˜๋Ÿ‰๋ณ„ ์ถ”๊ฐ€50%ํ• ์ธ, KT์ดˆ๊ณ ์†IP, ๋ธ”๋กœ๊ทธ,์ง€์‹์ธ,์‡ผํ•‘,์ง€๋„ ๋งˆ์ผ€ํŒ… ๊ฐ€๋Šฅ

https://vpn.luzensoft.com