CM(๊ตฌ์ฑ ๊ด๋ฆฌ)์ ์๋ช ์ฃผ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ์ํํธ์จ์ด ์์คํ ์ ์ผ๊ด์ฑ, ๋ฌด๊ฒฐ์ฑ ๋ฐ ์ฌํ์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ํ์ ๊ดํ์ ๋๋ค. ์ด๋ ๋ฒ์ ์ ์ด, ๋ณ๊ฒฝ ๊ด๋ฆฌ, ๋น๋ ๊ด๋ฆฌ, ๋ฆด๋ฆฌ์ค ๊ด๋ฆฌ ๋ฐ ํ๋ก์ธ์ค ์ ์ด๋ฅผ ํฌํจํ ๊ด๋ฒ์ํ ํ๋์ ํฌํจํฉ๋๋ค. ๊ตฌ์ฑ ๊ด๋ฆฌ๋ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์, ์ข ์์ฑ ๋ฐ ๊ตฌ์ฑ ๊ด๋ฆฌ์ ๋ํ ์ฒด๊ณ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํจ์ผ๋ก์จ ์ค๋ฅ ์ํ์ ์ค์ด๊ณ ๊ฐ๋ ์ค์ง ์๊ฐ์ ์ต์ํํ๋ฉฐ ๊ฐ๋ฐ์์ ์ดํด ๊ด๊ณ์ ๋ชจ๋๋ฅผ ์ํ ์ํํ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋ณด์ฅํฉ๋๋ค.
๋ฐฑ์๋ ๊ฐ๋ฐ ์ปจํ ์คํธ์์ ๊ตฌ์ฑ ๊ด๋ฆฌ์๋ ์์ค ์ฝ๋, ์คํฌ๋ฆฝํธ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋ฌธ์, ๋น๋ ์คํฌ๋ฆฝํธ ๋ฐ ๊ตฌ์ฑ ํ์ผ๊ณผ ๊ฐ์ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์์ ์๋ณ, ์ ์ด ๋ฐ ์ถ์ ์ด ํฌํจ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ ํ์ ์งํํ๋ ์ํํธ์จ์ด ์์คํ ์ ๋ํ ๋ช ํํ ์ดํด๋ฅผ ์ ์งํ๊ณ ์ง์์ ํตํฉํ๋ฉฐ ๊ฐ๋ฐ, ํ ์คํธ, ์์ฐ ๋ฐ ์ค๋น๋ฅผ ํฌํจํ ์ฌ๋ฌ ํ๊ฒฝ์์ ์ผ๊ด๋ ๋์์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
๊ตฌ์ฑ ๊ด๋ฆฌ์ ์ค์ํ ์ธก๋ฉด์ ๋ฒ์ ์ ์ด์ ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์์ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ํ์ ํ๋ฉฐ ์ฝ๋ ๋ฒ ์ด์ค์ ์ถฉ๋์ ํผํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ Git, Mercurial ๋๋ Subversion๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ํ์ผ์ ๋ํ ๋ณ๊ฒฝ ๋ด์ญ์ ์์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌํ์ฌ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋ํ ๋ช ํํ ๊ฐ์ฌ ์ถ์ ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํจ์จ์ ์ธ ์ฝ๋ ๋ถ๊ธฐ ๋ฐ ๋ณํฉ์ด ๊ฐ๋ฅํ๋ฏ๋ก ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ์์คํ ์์ ์ฑ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ฝ๋๋ฅผ ๊ธฐ์ฌํ ์ ์์ต๋๋ค.
๋ณ๊ฒฝ ๊ด๋ฆฌ๋ ์ํํธ์จ์ด ์์คํ ์ ๋ํ ์์ ์ฌํญ์ด ํต์ ๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ํ, ๊ฒํ , ์น์ธ ๋ฐ ๊ตฌํ๋๋๋ก ๋ณด์ฅํ๋ ๊ตฌ์ฑ ๊ด๋ฆฌ์ ๋ ๋ค๋ฅธ ์ค์ํ ๊ตฌ์ฑ ์์์ ๋๋ค. ๋ช ํํ ๋ณ๊ฒฝ ๊ด๋ฆฌ ํ๋ก์ธ์ค๋ฅผ ํ๋ฆฝํจ์ผ๋ก์จ ์กฐ์ง์ ํ๋ก์ ํธ ์คํจ ์ํ์ ์ต์ํํ๊ณ , ํ ๊ฐ์ ๋ ๋์ ์์ฌ์ํต์ ์ ์งํ๊ณ , ๊ท์ ์๊ตฌ ์ฌํญ์ ์ค์ํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ณ๊ฒฝ ๊ด๋ฆฌ ํ๋ก์ธ์ค๋ ๋ณ๊ฒฝ ์์ฒญ ์ ์ถ, ์ํฅ ๋ถ์, ๋ณ๊ฒฝ ์น์ธ, ๊ตฌํ, ๊ฒ์ฆ ๋ฑ ์ ์๋ ์ผ๋ จ์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
์ํํธ์จ์ด ๋น๋ ๊ด๋ฆฌ์ ๋งฅ๋ฝ์์ ๊ตฌ์ฑ ๊ด๋ฆฌ์๋ ์์ค ์ฝ๋ ๋ฐ ๊ธฐํ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์์์ ์คํ ๊ฐ๋ฅํ ์ฝ๋ ์์ฑ์ ์๋ํํ๊ณ ๊ด๋ฆฌํ๋ ํ๋ก์ธ์ค ๋ฐ ๋๊ตฌ ์์ฑ์ด ํฌํจ๋ฉ๋๋ค. Gradle, Maven ๋๋ Ant์ ๊ฐ์ ๋น๋ ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ ์ด๋ฌํ ํ๋ก์ธ์ค๋ ๋ชจ๋ ๋น๋์ ์ผ๊ด์ฑ๊ณผ ์ฌํ์ฑ์ ๋ณด์ฅํ๋ ๋์์ ์ข ์์ฑ์ ๋ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ ํตํฉ ๋๋ ๋ฐฐํฌ ์ค ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ ์ค์ ๋๋ค.
๋ฆด๋ฆฌ์ค ๊ด๋ฆฌ๋ ๋ค์ํ ํ๊ฒฝ์ ๋ํ ์ํํธ์จ์ด ๋ฒ์ ์ ์ถ์๋ฅผ ๊ณํ, ์์ฝ ๋ฐ ์ ์ดํ๋ โโ๋ฐ ์ค์ ์ ๋๊ณ ๊ฐ๋ฐ์์ ํ๋ก๋์ ์ผ๋ก์ ์ํํ ์ ํ์ ๋ณด์ฅํ๋ ๊ตฌ์ฑ ๊ด๋ฆฌ์ ์ค์ํ ์ธก๋ฉด์ ๋๋ค. ๋ฆด๋ฆฌ์ค ๊ด๋ฆฌ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์กฐ์ง์ ์ํ์ ๋ ์ ๊ด๋ฆฌํ๊ณ ๊ฐ๋ ์ค์ง ์๊ฐ์ ์ค์ด๋ฉฐ ๊ฐ ์ํํธ์จ์ด ๋ฆด๋ฆฌ์ค๊ฐ ์ ์๋ ํ์ง ๊ธฐ์ค์ ๋ถํฉํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. Jenkins, Bamboo ๋ฐ Azure Pipelines์ ๊ฐ์ ๋ฆด๋ฆฌ์ค ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ์๋ํํ์ฌ ์ธ์ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ ์ค์ด๊ณ ๊ท์คํ ๊ฐ๋ฐ ์๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ๊ตฌ์ฑ ๊ด๋ฆฌ์๋ ์ผ๊ด๋๊ณ ํต์ ๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ณด์ฅํ๊ธฐ ์ํ ํ๋ก์ธ์ค, ์ ์ฐจ ๋ฐ ์ ์ฑ ์ ์ค์ , ์ ์ง ๊ด๋ฆฌ ๋ฐ ์ํํ๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ฝ๋ฉ ํ์ค ์ค์ , ๋ถ๊ธฐ ๋ฐ ๋ณํฉ ์ ๋ต ์ ์, ๋ฆด๋ฆฌ์ค ์ ์ฑ ์ค์ ์ด ํฌํจ๋ฉ๋๋ค. ์ ์ ํ ํ๋ก์ธ์ค ์ ์ด๋ฅผ ํตํด ์ํํธ์จ์ด ํ์ง์ด ํฅ์๋๊ณ ์์ฐ์ฑ์ด ํฅ์๋๋ฉฐ ์์ฐ ๋ฌธ์ ๊ฐ ์ค์ด๋ค ์ ์์ต๋๋ค.
AppMasterno-code ํ๋ซํผ์ ๋งฅ๋ฝ์์ ๋ง์ ํ๋ก์ธ์ค๊ฐ ์ถ์ํ๋๊ณ ์๋ํ๋๋ฏ๋ก ๊ตฌ์ฑ ๊ด๋ฆฌ์ ๋ํ ๊ณ ๊ฐ์ ์ ๊ทผ์ฑ์ด ๋์์ง๋๋ค. AppMaster ์์ค ์ฝ๋ ์์ฑ, ์ ํ๋ฆฌ์ผ์ด์ ์ปดํ์ผ, ํ ์คํธ ์คํ ๋ฐ ๋ฐฐํฌ์ฉ ํจํค์ง์ ๋ด๋นํฉ๋๋ค. ๋ด์ฅ๋ ๊ธฐ๋ฅ์๋ ๋ชจ๋ ์๋ฒ endpoints ์ ๋ํ Swagger(๊ฐ๋ฐฉํ API) ๋ฌธ์ ์๋ ์์ฑ๋ ํฌํจ๋์ด ์์ด ๊ตฌ์ฑ ๋ณ๊ฒฝ ์ฌํญ์ด ์ง์์ ์ผ๋ก ์ต์ ์ํ๋ก ์ ์ง๋ฉ๋๋ค. ์ด๋ ์ฌ์ฉ์์ ๊ตฌ์ฑ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ์ฌ ๋ณต์กํ ๊ตฌ์ฑ ๊ด๋ฆฌ ์์ ์ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ ๋์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋์์ ์ ์ํ๋ ๋ฐ ์ง์คํ ์ ์๊ฒ ํด์ค๋๋ค.
์์ฝํ์๋ฉด, ๊ตฌ์ฑ ๊ด๋ฆฌ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์์ ์ค์ํ ๊ดํ์ผ๋ก, ์๋ช ์ฃผ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ์ํํธ์จ์ด ์์คํ ์ ์ ๋ขฐ์ฑ, ์ผ๊ด์ฑ ๋ฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ๋ฒ์ ์ ์ด, ๋ณ๊ฒฝ ๊ด๋ฆฌ, ๋น๋ ๊ด๋ฆฌ, ๋ฆด๋ฆฌ์ค ๊ด๋ฆฌ ๋ฐ ํ๋ก์ธ์ค ์ ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํจ์ผ๋ก์จ ๊ฐ๋ฐ ํ์ ์ํ์ ์ค์ด๊ณ ๊ฐ๋ ์ค์ง ์๊ฐ์ ์ต์ํํ๋ฉฐ ์ํํ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋ณด์ฅํ ์ ์์ต๋๋ค. AppMaster ์ ๊ฐ์ ํ๋ซํผ์ ๋์์ผ๋ก ๊ตฌ์ฑ ๊ด๋ฆฌ๊ฐ ํฌ๊ฒ ๋จ์ํ๋์ด ๊ธฐ์ ์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๊ฐ์ํํ๊ณ ๊ฐ๋ ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ํํธ์จ์ด ์์คํ ์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค.