๋ณธ๋ฌธ
CI/CD (์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ)
๐ก CI/CD๋?
- ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ ๋จ๊ณ๋ฅผ ์๋ํํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณด๋ค ์งง์ ์ฃผ๊ธฐ๋ก ๊ณ ๊ฐ์๊ฒ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ
- ์ ํ๋ฆฌ์ผ์ด์
์ ํตํฉ ๋ฐ ํ
์คํธ ๋จ๊ณ์์๋ถํฐ ์ ๊ณต ๋ฐ ๋ฐฐํฌ์ ์ด๋ฅด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ผ์ดํ์ฌ์ดํด ์ ์ฒด์ ๊ฑธ์ณ ์ง์์ ์ธ ์๋ํ์ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ ์ ๊ณต
- ์ด๋ฌํ ๊ตฌ์ถ ์ฌ๋ก๋ฅผ ์ผ๋ฐ์ ์ผ๋ก "CI/CD ํ์ดํ๋ผ์ธ"์ด๋ผ ๋ถ๋ฅด๋ฉฐ ๊ฐ๋ฐ ๋ฐ ์ด์์ ์ ์์ผ ๋ฐฉ์ ํ๋ ฅ์ ํตํด ์ง์
- ์ง์์ ์ธ ํตํฉ(Continuous Integration), ์ง์์ ์ธ ์๋น์ค ์ ๊ณต(Continuous Delivery), ์ง์์ ์ธ ๋ฐฐํฌ(Continuous Deployment)์ผ๋ก ๊ตฌ์ฑ
1. CI: ์ง์์ ํตํฉ(Continuous Integration)
- ๊ฐ๋ฐ์ ํ๋ฉด์ ์ง์์ ์ผ๋ก ์ฝ๋์ ๋ํ ํตํฉ์ ์งํํจ์ผ๋ก์จ ํ์ง์ ์ ์งํ์๋ ๊ฒ
- ๊ฐ๋ฐ์๋ฅผ ์ํ ์๋ํ ํ๋ก์ธ์ค(๊ฐ๋ฐ์๊ฐ์ ์ฝ๋ ์ถฉ๋์ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ชฉ์ )
- ์ ๊ธฐ์ ์ธ ๋น๋ ๋ฐ ํ
์คํธ(์ ๋ํ
์คํธ ๋ฐ ํตํฉํ
์คํธ)๋ฅผ ๊ฑฐ์ณ ๊ณต์ ๋ ํฌ์งํฐ๋ฆฌ์ ๋ณํฉ๋๋ ๊ณผ์
- ํด๋์ค์ ๊ธฐ๋ฅ์์๋ถํฐ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑํ๋ ์๋ก ๋ค๋ฅธ ๋ชจ๋์ ์ด๋ฅด๊ธฐ๊น์ง ๋ชจ๋ ๊ฒ์ ๋ํ ํ
์คํธ๋ฅผ ์ํ
- ์๋ํ๋ ํ
์คํธ์์ ๊ธฐ์กด ์ฝ๋์ ์ ๊ท ์ฝ๋ ๊ฐ์ ์ถฉ๋์ด ๋ฐ๊ฒฌ๋๋ฉด CI๋ฅผ ํตํด ์ด๋ฌํ ๋ฒ๊ทธ๋ฅผ ๋น ๋ฅด๊ฒ ์์ ๊ฐ๋ฅ
2. CD: ์ง์์ ์ธ ์๋น์ค์ ๊ณต(Continuous Delivery)
- CI ํ๋ก์ธ์ค๋ฅผ ํตํด ๊ฐ๋ฐ์ค์ ์ง์์ ์ผ๋ก ๋น๋์ ์ ๋ ๋ฐ ํตํฉ ํ
์คํธ๋ฅผ ์งํํ๊ณ , ์ด๋ฅผ ํต๊ณผํ ์ฝ๋์ ๋ํ์ฌ ํ
์คํธ์๋ฒ์ ์ด์์๋ฒ์ ์๋์ผ๋ก Release
- ์ด์ํ์ด ๋ณด๋ค ๋น ๋ฅด๊ณ ์์ฝ๊ฒ ์ ํ๋ฆฌ์ผ์ด์
์ Production์ผ๋ก ๋ฐฐํฌ ๊ฐ๋ฅ
- Production ํ๊ฒฝ์ผ๋ก ๋ฐฐํฌํ ์ค๋น๊ฐ ๋์ด ์๋ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ํ๋ณดํ๋ ๊ฒ์ด ๋ชฉํ
3. CD: ์ง์์ ์ธ ๋ฐฐํฌ(Continuous Deployment)
- Production ์ค๋น๊ฐ ์๋ฃ๋ ๋น๋๋ฅผ Source Repository์ ์๋์ผ๋ก Releaseํ๋ ์ง์์ ์ ๊ณต์ ํ์ฅ๋ ํํ
- ์ ํ๋ฆฌ์ผ์ด์
์ ํ๋์ Production์ผ๋ก Releaseํ๋ ์์
์ ์๋ํ
- Continuous Delivery๋ก ํต์นญํ์ฌ ์ธ๊ธํ๊ธฐ๋ ํจ
- ๊ฐ๋ฐ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณ๊ฒฝ ์ฌํญ์ ์์ฑํ ํ ๋ช ๋ถ ์ด๋ด์ ์ ํ๋ฆฌ์ผ์ด์
์ ์๋์ผ๋ก ์คํํ ์ ์๋ ๊ฒ์ ์๋ฏธ
- ํ
์คํธ์ ๋น๋๊ฐ ‘์ง์์ ’์ผ๋ก ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์, ๋ฐฐํฌ ๋ํ ์์ฐ์ค๋ฝ๊ฒ ‘์ง์์ ’์ผ๋ก ์ด๋ฃจ์ด์ง๊ฒ ๋จ
๐ก Jenkins
- ๋ฌด๋ฃ๋ค.
- ์ง์ํ๋ ํ๋ฌ๊ทธ์ธ์ด ๋ง๋ค.
- Reference ๋ฐ ์ฌ์ฉ์๊ฐ ๋ง๊ณ ์ฐธ์กฐํ ์ ์๋ ์ ๋ณด๊ฐ ๋ง๋ค.
- ์ค์น ๋ฐ ์ฌ์ฉ์ด ๊ฐ๋จํ๋ค.
- Remote Access API ๋ฅผ ์ ๊ณตํ๋ฏ๋ก ๋ค๋ฅธ ์๋ฃจ์
์์ ์ฐ๊ณํ์ฌ ๊ธฐ๋ฅ ํ์ฅ์ด ๊ฐ๋ฅํ๋ค.
๐ก Jenkins ์ค์นํ๋ฌ ๊ฐ๊ธฐ
https://server-engineer.tistory.com/763
๋๊ธ