CI/CD(์ง์์ ํตํฉ ๋ฐ ์ง์์ ์ธ ๋ฐฐํฌ)์ ๋งฅ๋ฝ์์ "CI/CD ์ํฐํฉํธ"๋ผ๋ ์ฉ์ด๋ ์ํํธ์จ์ด ๋น๋ ๋ฐ ํจํค์ง ํ๋ก์ธ์ค์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ ๋๋ค. ์ด๋ฌํ ์ํฐํฉํธ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๊ฒฐ๊ณผ๋ก ์์ฑ๋๋ฉฐ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธ, ๋ฐฐํฌ ๋ฐ ๊ด๋ฆฌ์ ํ์์ ์ ๋๋ค. ํฌ๊ด์ ์ธ no-code ํ๋ซํผ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์์ฝ์์คํ ์ธ AppMaster ์น, ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ CI/CD ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ์ฌ ๋ชจ๋ ๊ท๋ชจ์ ๊ธฐ์ ์ ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ, ํจ์จ์ ์ธ ๋ฐฐํฌ ๋ฐ ์๋นํ ๋น์ฉ ์ ๊ฐ์ ๋ณด์ฅํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
CI/CD ์ํฐํฉํธ๋ ํฌ๊ฒ ๋ค ๊ฐ์ง ๋ฒ์ฃผ๋ก ๋ถ๋ฅํ ์ ์์ต๋๋ค.
- ์์ค ์ฝ๋ ์ํฐํฉํธ: ์ฌ๊ธฐ์๋ ์ํํธ์จ์ด ์ปดํ์ผ, ํ ์คํธ ๋ฐ ๋ฐฐํฌ์ ํ์์ ์ธ ํ๋ก์ ํธ์ ์ต์ ์์ค ์ฝ๋, ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ข ์์ฑ์ด ํฌํจ๋ฉ๋๋ค. ์ด๋ฌํ ์ํฐํฉํธ๋ ๋ณ๊ฒฝ ๊ธฐ๋ก์ ์ ์งํ๊ณ ์ํํ ํ์ ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก ๋ฒ์ ์ ์ด ์์คํ (VCS)์ ์ฌ์ฉํ์ฌ ๋ฒ์ ์ ์ ์ดํด์ผ ํฉ๋๋ค.
- ์ปดํ์ผ ๋ฐ ์คํ ๊ฐ๋ฅํ ์ํฐํฉํธ: ์๋ํ๋ ๋น๋ ํ๋ก์ธ์ค์ ๊ฒฐ๊ณผ์ธ ๋ฐ์ด๋๋ฆฌ(์ปดํ์ผ๋) ํ์ผ๊ณผ ์คํ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌ์ฑ๋ ์ด๋ฌํ ์ํฐํฉํธ๋ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋ฐ ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด AppMaster ์์ฑ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ Go(Golang)๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋๊ณ , ์น ์ ํ๋ฆฌ์ผ์ด์ ์ Vue3 ํ๋ ์์ํฌ์ JavaScript/TypeScript๋ฅผ ํ์ฉํ๋ฉฐ, ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ Android์ฉ Kotlin ๋ฐ Jetpack Compose ์ iOS์ฉ SwiftUI ์ฌ์ฉํฉ๋๋ค.
- ๊ตฌ์ฑ ์ํฐํฉํธ: ์ํํธ์จ์ด์ ์ฌ๋ฐ๋ฅธ ์๋ ๋ฐ ๋ฐฐํฌ์ ํ์ํ ํ์ ๊ตฌ์ฑ ํ์ผ, ํ๊ฒฝ ๋ณ์ ๋ฐ ์ค์ ์ ๋๋ค. ์ด๋ฌํ ์ํฐํฉํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ค ์ฝ๋์ ๋ถ๋ฆฌ๋์ด์ผ ํ๋ฉฐ ๋ณด์์์ ์ด์ ๋ก ๋ ๋ฆฝ์ ์ผ๋ก ๋ฒ์ ์ด ๊ด๋ฆฌ๋๊ณ ์ํธํ๋์ด์ผ ํฉ๋๋ค.
- ๋ฌธ์ ์ํฐํฉํธ: ์ด๋ฌํ ์ํฐํฉํธ์๋ API ๋ฌธ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ ๋ฐ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๊ณต์ ์ผ๋ก ํตํฉ, ํ ์คํธ, ๋ฐฐํฌ ๋ฐ ์ ์งํ๋ ๋ฐ ํ์ํ ๊ธฐํ ์ค์ํ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.
CI/CD ์ํฐํฉํธ๋ ์ํํ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ๋ฐฐํฌ๋ฅผ ๋ฌ์ฑํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ด๊ธฐ์ ๋ฌธ์ ๋ฅผ ํ์ ํ์ฌ ๋ฒ๊ทธ ๋์ ์ํ์ ์ค์ด๊ณ ๋ฐฐํฌ ์ง์ฐ์ ์ต์ํํ ์ ์์ต๋๋ค. ์ํฐํฉํธ ์์ฑ, ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ๊ด๋ฆฌ์ ์๋ํ๋ ์ต์ CI/CD ์ํฌํ๋ก์ ํต์ฌ ์ธก๋ฉด์ผ๋ก, ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค์ ๋์ ํ์ง๊ณผ ํจ์จ์ฑ์ ์ ์งํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
AppMasterno-code ํ๋ซํผ์์ CI/CD ์ํฐํฉํธ๋ฅผ ์ฒ๋ฆฌํ๋ ํ์ ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ํ์ฉํฉ๋๋ค. ๊ธฐ์ ๋ถ์ฑ ์ํ์ ์ด์ ์ ๋ง์ถ AppMaster ์๊ตฌ ์ฌํญ์ด ๋ณ๊ฒฝ๋๊ฑฐ๋ ์ฒญ์ฌ์ง์ด ์ ๋ฐ์ดํธ๋ ๋๋ง๋ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒ์๋ถํฐ ์๋์ผ๋ก ๋ค์ ์์ฑํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก์ธ์ค์ ๋ชจ๋ ๋จ๊ณ์์ ์ ํํ ์ํฐํฉํธ ์์ฑ์ด ๊ฐ๋ฅํด ๊ฐ๋ฐ์๊ฐ ์๋ ๊ฐ์ ๋ฐ ๋ฌธ์ ํด๊ฒฐ์ ์์๋๋ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค. ๋ํ OpenAPI(Swagger) ๋ฌธ์์ ๊ฐ์ ํ์ ๋ฌธ์์ ์๋ ์์ฑ์ ํตํด ์ํํธ์จ์ด ๊ตฌ์ฑ ์์์ ํจ์จ์ ์ธ ํตํฉ, ํ ์คํธ ๋ฐ ๊ด๋ฆฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
CI/CD ์ํฐํฉํธ ๊ด๋ฆฌ๋ฅผ no-code ํ๋ซํผ์ ํตํฉํจ์ผ๋ก์จ AppMaster ์ฌ์ฉ์์๊ฒ ๋ฒ๊ฑฐ๋กญ์ง ์๊ณ ๊ฐ์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ธฐ์ ์ ์ํํธ์จ์ด ์๋ฃจ์ ์ ํ์ง๊ณผ ํ์ฅ์ฑ์ ์ ํ์ํค์ง ์์ผ๋ฉด์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํจ์จ์ฑ์ ๋์ด๊ณ ๋น์ฉ์ ์ ๊ฐํ ์ ์์ต๋๋ค. AppMaster ์ ์๋ฃจ์ ์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๋ ๋ฒํผ ํด๋ฆญ๋ง์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒ์ํ ์ ์์ผ๋ฏ๋ก ์์ฑ๋ ์ํฐํฉํธ์ ๋ํ ์๋ฒฝํ ๋ฐฐํฌ ๋ฐ ์ ๋ฐ์ดํธ ๊ธฐ๋ฅ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
์ค๋๋ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๋ ์ํํธ์จ์ด ํ๊ฒฝ์์ CI/CD ์ํฐํฉํธ์ ์ ์ํ๊ณ ์ ํํ ์์ฑ, ๊ด๋ฆฌ ๋ฐ ๋ฐฐํฌ๋ ๋น์ฆ๋์ค ์ดํด๊ด๊ณ์์ ์ต์ข ์ฌ์ฉ์์๊ฒ ๊ณ ํ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํ๋ ๋ฐ ํฐ ๋ณํ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๋ฐ์ด๋ CI/CD ์ํฐํฉํธ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ๊ฐ์ถ AppMaster ํ๋ซํผ์ ๊ณ ๊ฐ์ด ํ ๊ท๋ชจ๋ ๊ธฐ์ ์ ๋ฌธ ์ง์์ ๊ด๊ณ์์ด ํ์ฅ ๊ฐ๋ฅํ ๋น์ฆ๋์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํํ๊ฒ ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. CI/CD ์ํฐํฉํธ ๊ด๋ฆฌ๋ฅผ no-code ํ๋ซํผ์ ํตํฉํจ์ผ๋ก์จ ๊ณ ๊ฐ์ ์ต์ ์ ํจ์จ์ฑ๊ณผ ๋ ๋์ ํฌ์ ์์ต์ ์ป์ ์ ์์ผ๋ฉฐ AppMaster ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ ์์ญ์์ ํ๋๋ฅผ ๋ฐ๊พธ๋ ๋๊ตฌ๋ก ๋ง๋ค ์ ์์ต๋๋ค.