CI/CD ํ์ดํ๋ผ์ธ ๋๋ ์ง์์ ์ธ ํตํฉ/์ง์์ ์ธ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ค์ํ ๋จ๊ณ๋ฅผ ์๋ํํ์ฌ ํจ์จ์ฑ, ์ผ๊ด์ฑ ๋ฐ ์ ์ํ ์ ๊ณต์ ํฅ์์ํค๋ ์ ๊ตํ๊ณ ์ฒด๊ณ์ ์ธ ํ๋ก์ธ์ค์ ๋๋ค. CI/CD์ ๋งฅ๋ฝ์์ ์ง์์ ์ธ ํตํฉ์ ๊ฐ๋ฅํ ์ถฉ๋์ ์๋ณํ๊ธฐ ์ํด ์์ ์ฆ๋ถ ๋ณ๊ฒฝ ๋๋ ๊ฐ๋ฐ ์์ ์ ๊ณต์ ์ ์ฅ์์ ์ผ๊ด๋๊ฒ ๋ณํฉํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ ๋ฐ๋ฉด, ์ง์์ ์ธ ๋ฐฐํฌ๋ ํ์ง ํ ์คํธ๋ฅผ ๊ฑฐ์ณ ์์ฐ ์ค๋น๊ฐ ์๋ฃ๋ ๋ฆด๋ฆฌ์ค๋ฅผ ์๋ํํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ. CI/CD ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ณ ์์ ์ ์ผ๋ก ๊ตฌ์ถ, ํ ์คํธ ๋ฐ ๋ฐฐํฌํ ์ ์์ผ๋ฏ๋ก ๊ธฐ์ ์ ์์ฅ ๋ณํ์ ์ ์ํ๊ณ , ๊ณ ๊ฐ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ฉฐ, ์งง์ ์๊ฐ ๋ด์ ๊ณ ํ์ง ์ ํ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
CI/CD ํ์ดํ๋ผ์ธ์ ์ฌ๋ฌ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ ๋จ๊ณ๋ ์ํํธ์จ์ด ํ์ง์ ํฅ์ํ๊ณ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๋ฌํ ๋จ๊ณ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ, ํ ์คํธ, ๋ฐฐํฌ, ๋ชจ๋ํฐ๋ง ๋ฐ ํผ๋๋ฐฑ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋น๋ ๋จ๊ณ์์ ๊ฐ๋ฐ์๋ Git ๋๋ SVN๊ณผ ๊ฐ์ ๊ณต์ ์ ์ฅ์์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํฉ๋๋ค. CI ์๋ฒ๋ ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํ๊ณ , ์ ๋ฐ์ดํธ๋ ์ฝ๋ ์ ์ฅ์๋ฅผ ๊ฒ์ํ๊ณ , ์์ค ์ฝ๋๋ฅผ ์คํ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ๋ฐ์ด๋๋ฆฌ๋ก ์ปดํ์ผํ์ฌ ํ์ดํ๋ผ์ธ์ ์ถ๊ฐ ๋จ๊ณ์ ์ฌ์ฉํ ์ค๋น๊ฐ ๋ ์ํฐํฉํธ๋ฅผ ์์ฑํฉ๋๋ค. ์ฃผ๋ชฉํ ๋งํ CI ๋๊ตฌ๋ก๋ Jenkins, Gitlab CI ๋ฐ CircleCI๊ฐ ์์ต๋๋ค.
๋น๋ ๋จ๊ณ์ ์ด์ด ํ์ดํ๋ผ์ธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ์ผ๋ จ์ ์๋ํ๋ ํ ์คํธ๋ฅผ ์คํํ์ฌ ์ฝ๋ ํ์ง๊ณผ ์ ์ง ๊ด๋ฆฌ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ํ ์คํธ๋ ๋จ์, ํตํฉ, ์์คํ ๋ฐ ์น์ธ ํ ์คํธ๋ฅผ ํฌํจํ ๋ค์ํ ์์ค์์ ์ด๋ฃจ์ด์ง๋ฉฐ ๊ธฐ๋ฅ์ ๊ฒฐํจ, ์ฑ๋ฅ ๋ณ๋ชฉ ํ์, ๋ณด์ ์ทจ์ฝ์ฑ ๋ฐ ์ ์ฉ์ฑ ๋ฌธ์ ์ ๊ฐ์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ํ ์คํธ ํ๋ ์์ํฌ๋ก๋ JUnit, Selenium, XCTest ๋ฑ์ด ์์ต๋๋ค. ์ค์ํ ์ธก๋ฉด์ ๊ฐ๋ฐ ์๋์ ์ ์ฝ์ ์ฃผ์ง ์์ผ๋ฉด์ ์ํํธ์จ์ด์ ํ์ง์ ๋ณด์ฅํ๋ ํจ๊ณผ์ ์ธ ํ ์คํธ ์ค์ํธ๋ฅผ ์ ์งํ๋ ๊ฒ์ ๋๋ค.
ํ ์คํธ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌ๋ฅผ ๊ฑฐ์น๋ฉฐ ํ์ดํ๋ผ์ธ์ ์ด๋ฅผ ์ค๋น, ์ฌ์ ํ๋ก๋์ ๋ฐ ํ๋ก๋์ ํ๊ฒฝ๊ณผ ๊ฐ์ ์ฌ๋ฌ ํ๊ฒฝ์ผ๋ก ์ด๋ํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ ์ํํธ์จ์ด๊ฐ ์กฐ์ง์ ์ธํ๋ผ ์๊ตฌ ์ฌํญ ๋ฐ ๊ตฌ์ฑ์ ์ค์ํ๊ณ ๋ฐฐํฌ ๊ด๋ จ ์ํ์ ์ค์ด๋ฉฐ ์์ฐ ํ์ฉ ์ค๋น๊ฐ ๋์๋์ง ํ์ธํฉ๋๋ค. ๋ฐฐํฌ ๋จ๊ณ์์๋ Ansible, Puppet, macOS์ ๊ฐ์ ๊ตฌ์ฑ ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ํตํฉํ์ฌ ๋ค์ํ ํ๋ซํผ๊ณผ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ๋ฅผ ์๋ํํ๊ณ ๊ด๋ฆฌํฉ๋๋ค.
์ผ๋จ ๋ฐฐํฌ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ Prometheus, Grafana ๋๋ New Relic๊ณผ ๊ฐ์ ๋๊ตฌ๊ฐ ํ์ ์ฑ๋ฅ ์งํ๋ฅผ ์์งํ๊ณ , ์ด์ ์งํ๋ฅผ ๊ฐ์งํ๊ณ , ๊ท์คํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์ฑ, ์ ์ฉ์ฑ ๋ฐ ๊ฐ์ฉ์ฑ์ ํฅ์์ํค๋ ๋ชจ๋ํฐ๋ง ๋ฐ ํผ๋๋ฐฑ ๋จ๊ณ์ ๋ค์ด๊ฐ๋๋ค. ์ด ์ ๋ณด๋ฅผ ํตํด ๊ฐ๋ฐ ํ์ ๋ฐ์ดํฐ ๊ธฐ๋ฐ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ณ ๊ณ ๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉฐ ํฅํ ๊ฐ์ ์ฌํญ์ ์ฐ์ ์์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
CI/CD ํ์ดํ๋ผ์ธ ๊ตฌํ์ ์๋ก๋ ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๊ธฐ ์ํ ๊ฐ๋ ฅํ no-code ํ๋ซํผ์ธ AppMaster ํ๋ซํผ์ด ์์ต๋๋ค. AppMaster ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ ๋ชจ๋ธ, ๋น์ฆ๋์ค ๋ก์ง, REST API ๋ฐ WSS endpoints ์๊ฐ์ ์ผ๋ก ์์ฑํ ์ ์๋๋ก ํ์ฌ ์ํํ๊ณ ํจ์จ์ ์ธ CI/CD ํ์ดํ๋ผ์ธ์ ์ ๊ณตํฉ๋๋ค. ๋ํ ์ด๋ฅผ ํตํด ๊ณ ๊ฐ์ ๊ฐ๋จํ drag-and-drop ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ํ UI๋ฅผ ๋์์ธํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๊ณต์ํํ๊ณ , ํ๋ก๋์ ๊ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์์ค ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ AppMaster ์์ฑ๋ ์์ค ์ฝ๋๋ฅผ ์๋์ผ๋ก ์ปดํ์ผ, ํ ์คํธ, ํจํค์งํ๊ณ Docker ์ปจํ ์ด๋์ ๋ฐฐํฌํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ, ์ ๊ณต ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ฅผ ํฌ๊ฒ ๊ฐ์ํํฉ๋๋ค.
๊ฐ๋ฐ ํ๋ก์ธ์ค์์ CI/CD ํ์ดํ๋ผ์ธ์ ์ฑํํ๋ฉด ์ํํธ์จ์ด ํ๋ก์ ํธ์ ํ์ง, ์๋ ๋ฐ ์ ์ฐ์ฑ์ด ํฌ๊ฒ ํฅ์๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํ์ ์๋ก์ด ๋ณ๊ฒฝ ์ฌํญ์ ์ํํ๊ฒ ํตํฉํ๊ณ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ์์ธกํ๋ฉฐ ๋ค์ํ ํ๊ฒฝ์ ๊ฑธ์ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฝ๊ฒ ๋ฐฐํฌํ ์ ์์ต๋๋ค. CI/CD ํ์ดํ๋ผ์ธ์ ํตํด ์ค์ํ ๊ฐ๋ฐ ๋จ๊ณ๋ฅผ ์๋ํํจ์ผ๋ก์จ ์กฐ์ง์ ๋น์ฉ ์ ๊ฐ, ์๊ฐ ๋จ์ถ ๋ฐ ์ง์์ ์ธ ํ์ ์ธก๋ฉด์์ ์๋นํ ์ด์ ์ ์ป์ ์ ์์ผ๋ฉฐ ๊ถ๊ทน์ ์ผ๋ก ๋น ๋ฅด๊ฒ ๋ณํํ๊ณ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๋ ๊ธฐ์ ํ๊ฒฝ์์ ๊ฒฝ์ ์ฐ์๋ฅผ ํ๋ณดํ ์ ์์ต๋๋ค.