์จ๋ผ์ธ ๊ฐ์
>PHP - ์ต์๊ธ
๐ PHP ์ต์๊ธ - 4์ฃผ์ฐจ: CI/CD (์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ) ํ์ดํ๋ผ์ธ ๊ตฌ์ถ- 01 CI/CD ๊ฐ๋ ๋ฐ ํ์์ฑ
์ฃผ์ ํ๋ก๊ทธ๋จ ์คํ
- ํ์ : 10.0
- ๋ผ์ด์ ์ค: free
- ์ด์์ฒด์ :
- ํ์ผ ํฌ๊ธฐ: 0
ํผ๋๋ฐฑ ๋ฐ ๋ค์ด๋ก๋
- ์ฌ์ฉ์ ํ์ : 10.0
- ๋ค์ด๋ก๋ ์: 1
- ์กฐํ์: 27
์ ์กฐ์ฌ ๋ฐ ๋ฑ๋ก ์ ๋ณด
- ์ ์์ฌ: LUZENSOFT
- ๋ฑ๋ก์ผ: 2025-10-13 10:09:19
- ์ค๋ช
CI/CD๋ ๋ฌด์์ด๋ฉฐ, ์ ํ์ํ๊ฐ?
์ง๋ 3์ฃผ๊ฐ ์ฐ๋ฆฌ๋ #PHP์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํ์์ ์ธ #์ปจํ ์ด๋ ๊ธฐ์ (Docker)์ ์๋ฒฝํ๊ฒ ์ต๋ํ์ต๋๋ค. ์ด์ ๊ฐ๋ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์์๊ฒ ์๋ํ๋๊ณ ์์ ์ ์ธ ๋ฐฉ์์ผ๋ก ์ ๋ฌํ๋ ์ต์ข ๋จ๊ณ, ๋ฐ๋ก CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ์ ๋ํด ๋ฐฐ์ธ ์ฐจ๋ก์ ๋๋ค.
#CI/CD ๋ **์ง์์ ํตํฉ(Continuous Integration)**๊ณผ **์ง์์ ๋ฐฐํฌ(Continuous Delivery/Deployment)**๋ฅผ ํฉ์น ์ฉ์ด์ ๋๋ค. ์ด๋ ๊ฐ๋ฐ์๊ฐ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ค์ ์ ์ฅ์(Git)์ ์์ฃผ ๋ณํฉ(Integrate)ํ๊ณ , ์ด ๋ณ๊ฒฝ ์ฌํญ์ ํ ์คํธํ ํ, ์ฌ์ฉ์์๊ฒ ์๋์ผ๋ก ๋ฐฐํฌ(Deploy)ํ๋ ์ผ๋ จ์ ์๋ํ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ฏธํฉ๋๋ค.
์ ํต์ ์ธ ๊ฐ๋ฐ ๋ฐฉ์์์๋ ๋ฐฐํฌ๊ฐ ๋ช ์ฃผ ๋๋ ๋ช ๋ฌ์ ํ ๋ฒ์ฉ ์ด๋ฃจ์ด์ก๊ณ , ์ด๋ก ์ธํด ๋ฒ๊ทธ ์์ ๊ณผ ์๋ก์ด ๊ธฐ๋ฅ ์ถ์๊ฐ ๋๋ฆฌ๊ณ ์ํํ์ต๋๋ค. ๊ทธ๋ฌ๋ ํ๋์ ์ ์์ผ ๊ฐ๋ฐ ํ๊ฒฝ์์ #CI/CD ๋ ํ์์ ์ธ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค.
1. ์ง์์ ํตํฉ (Continuous Integration, CI)์ ๊ฐ๋
#CI ์ ํต์ฌ ๋ชฉํ๋ ๊ฐ๋ฐ์๋ค์ด ์์ฑํ ์ฝ๋๋ฅผ ์์ฃผ, ๊ทธ๋ฆฌ๊ณ ์ผ๊ด๋๊ฒ ์ฃผ ๋ธ๋์น(์: main ๋๋ master)์ ํตํฉํ๋ ๊ฒ์
๋๋ค.
CI๊ฐ ํ๋ ์ผ:
์ฝ๋ ๋ณํฉ: ๊ฐ๋ฐ์๊ฐ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ Git ์ ์ฅ์์ ํธ์ํฉ๋๋ค
์๋ ๋น๋: ๋ณ๊ฒฝ๋ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก #์ ํ๋ฆฌ์ผ์ด์ ๋น๋ ๊ฐ ์๋์ผ๋ก ์์๋ฉ๋๋ค (์: #PHP์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ Composer ์์กด์ฑ ์ค์น, #Docker์ด๋ฏธ์ง ๋น๋)
์๋ ํ ์คํธ: ๋จ์ ํ ์คํธ(Unit Test), ํตํฉ ํ ์คํธ(Integration Test) ๋ฑ์ด ์๋ ์คํ๋์ด ์ฝ๋์ ์ค๋ฅ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ ์์ ์ฌ๋ถ๋ฅผ ์ฆ์ ํ์ธํฉ๋๋ค
ํผ๋๋ฐฑ: ํ ์คํธ์ ์คํจํ๋ฉด ๊ฐ๋ฐ์์๊ฒ ์ฆ์ ์๋ฆผ์ด ์ ์ก๋์ด ๋ฌธ์ ๋ฅผ ์ ์ํ๊ฒ ์์ ํ ์ ์์ต๋๋ค
์ด๋ฌํ #CI ๊ณผ์ ์ ํตํด ํตํฉ ์ค๋ฅ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ , ์ฝ๋ ์ถฉ๋์ ์ต์ํํ์ฌ ๊ฐ๋ฐํ์ ํ์ ํจ์จ์ฑ์ ๊ทน๋ํํ ์ ์์ต๋๋ค.
2. ์ง์์ ๋ฐฐํฌ (Continuous Delivery/Deployment, CD)์ ๊ฐ๋
#CD ๋ #CI ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ํต๊ณผํ ์ฝ๋๋ฅผ ์ค์ ์ด์ ํ๊ฒฝ์ผ๋ก ์ ๋ฌํ๋ ๊ณผ์ ์ ์๋ํ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ ๊ฐ์ง ์ฃผ์ ํํ๊ฐ ์์ต๋๋ค.
A. ์ง์์ ์ ๋ฌ (Continuous Delivery)
ํ ์คํธ๋ฅผ ํต๊ณผํ #๋น๋ ๊ฒฐ๊ณผ๋ฌผ ์ด ์ธ์ ๋ ์ง ๋ฐฐํฌ๋ ์ ์๋ ์ค๋น๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค. ๋ฐฐํฌ ๋จ๊ณ ์์ฒด๋ ์๋์ ์ธ ์น์ธ์ ๊ฑฐ์ณ ์ด๋ฃจ์ด์ง๋๋ค. ์ฆ, ๋ฒํผ ํด๋ฆญ ํ ๋ฒ์ผ๋ก ์ธ์ ๋ ์ง ๋ฐฐํฌํ ์ ์์ง๋ง, ์ฌ๋์ด ์ต์ข ๊ฒฐ์ ์ ๋ด๋ฆฝ๋๋ค.
B. ์ง์์ ๋ฐฐํฌ (Continuous Deployment)
ํ ์คํธ๋ฅผ ํต๊ณผํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ฌ๋์ ๊ฐ์ ์์ด ์๋์ผ๋ก ์ด์ ํ๊ฒฝ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์ด๋ ๊ฐ์ฅ ์งํ๋ ํํ์ ์๋ํ๋ก, ๋น ๋ฅธ ์์ฅ ๋ฐ์์ด ์ค์ํ ์๋น์ค์์ ์ฌ์ฉ๋ฉ๋๋ค.
CD๊ฐ ํ๋ ์ผ:
๋ฐฐํฌ ํ๊ฒฝ ์ค๋น: ์๋ก์ด ์ฝ๋๋ฅผ ์คํํ ์๋ฒ ํ๊ฒฝ์ ์ค๋นํฉ๋๋ค
๋ฐฐํฌ: #๋น๋ ๊ฒฐ๊ณผ๋ฌผ (์: #Docker์ด๋ฏธ์ง )์ ์คํ ์ด์ง(Staging) ๋๋ ํ๋ก๋์ (Production) ์๋ฒ์ ํธ์ํ๊ณ ์คํํฉ๋๋ค
๊ฒ์ฆ: ๋ฐฐํฌ ํ์๋ ๊ธฐ๋ณธ์ ์ธ ์๋น์ค ์ํ(Health Check)๋ฅผ ์๋์ผ๋ก ํ์ธํฉ๋๋ค
PHP ๊ฐ๋ฐ์์ CI/CD์ ํ์์ฑ
#PHP๊ฐ๋ฐ ์์ #CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ์ ์ ํ์ด ์๋ ํ์์ ๋๋ค.
๋น ๋ฅธ ํผ๋๋ฐฑ ๋ฃจํ: #CI ๋ฅผ ํตํด Composer ์ค๋ฅ, ๋ฌธ๋ฒ ์ค๋ฅ, ๋จ์ ํ ์คํธ ์คํจ ๋ฑ์ ์ฆ์ ์ ์ ์์ด ๋ฒ๊ทธ ์์ ์๊ฐ์ด ๋จ์ถ๋ฉ๋๋ค
์์ ์ ์ธ ๋ฐฐํฌ: #์ปจํ ์ด๋ํ ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐฐํฌํ๊ณ #CD ๋ก ์๋ํํจ์ผ๋ก์จ, ์๋ ๋ฐฐํฌ ์ ๋ฐ์ํ๋ ํ๊ฒฝ ์ค์ ์ค๋ฅ(Dependency Hell)๋ฅผ ์๋ฒฝํ ์ ๊ฑฐํ๊ณ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค
๊ฒฝ์ ์ฐ์ ํ๋ณด: ๊ธฐ๋ฅ ์ถ์ ์ฃผ๊ธฐ๋ฅผ ๋จ์ถํ๊ณ , ๊ณ ๊ฐ์ ํผ๋๋ฐฑ์ ์ ์ํ๊ฒ ๋ฐ์ํ์ฌ ์์ฅ ๋ณํ์ ๋น ๋ฅด๊ฒ ๋์ํ ์ ์์ต๋๋ค (Time-to-Market ๋จ์ถ)
๊ฐ๋ฐํ ๋ฌธํ ๊ฐ์ : ํ ์คํธ์ ๋น๋๊ฐ ์๋ํ๋์ด ๊ฐ๋ฐ์๋ ์ค์ง ์ฝ๋ ์์ฑ์๋ง ์ง์คํ ์ ์์ผ๋ฉฐ, ๋ฐฐํฌ์ ๋ํ ๋ถ๋ด๊ณผ ๋๋ ค์์ด ์ค์ด๋ญ๋๋ค
๊ฒฐ๋ก
#CI/CD ๋ ๋จ์ํ ์๋ํ ๋๊ตฌ๋ฅผ ์ค์นํ๋ ๊ฒ์ ๋์ด, ์ฝ๋๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ฐฐํฌํ๋ ๋ฌธํ์ ํ๋ก์ธ์ค๋ฅผ ๊ทผ๋ณธ์ ์ผ๋ก ๋ณํ์ํค๋ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. ๋ค์ ์๊ฐ๋ถํฐ๋ Gitlab CI, Jenkins, Github Actions์ ๊ฐ์ ์ค์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๋ฆฌ์ #PHP์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์๋ฒฝํ #CI/CDํ์ดํ๋ผ์ธ ์ ๊ตฌ์ถํ๋ ์ค์ต์ ์์ํ๊ฒ ์ต๋๋ค.
๊ธฐ๊ฐ,์๋๋ณ ์ถ๊ฐ50%ํ ์ธ, KT์ด๊ณ ์IP, ๋ธ๋ก๊ทธ,์ง์์ธ,์ผํ,์ง๋ ๋ง์ผํ ๊ฐ๋ฅ