์๋ฒ๋ฆฌ์ค ์ปดํจํ ์ ๋งฅ๋ฝ์์ "์์ "์ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ ๋๋ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ํ๊ฒฝ๊ณผ ๊ฐ์ ๋ถ์ฐ ์์คํ ๋ด์ ํน์ ์๋น์ค๋ก ๋ผ์ฐํ ๋๋๋ก ๋ค์ด์ค๋ ๋คํธ์ํฌ ํธ๋ํฝ(์ผ๋ฐ์ ์ผ๋ก HTTP/HTTPS ์์ฒญ)์ ๊ด๋ฆฌํ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ ์์คํ ๋ฆฌ์์ค์ ๋ํ ์ธ๋ถ ์ก์ธ์ค๋ฅผ ์ ์ดํ๊ณ ์์คํ ์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ์ ์งํ๋ ๋ฐ ํ์์ ์ธ ์ ์ ํ ์์ฒญ ๋ผ์ฐํ , ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฐ ๋ณด์ ๊ตฌ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
์๋ฒ๋ฆฌ์ค ์ปดํจํ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ๋ฐ๋ผ ์๋์ผ๋ก ํ์ฅ๋๋๋ก ์ค๊ณ๋๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๊ฐ ๊ด๋ฆฌํ๋ ์๋ฒ์์ ํธ์คํ ๋์ง ์์ต๋๋ค. ๋์ ํด๋ผ์ฐ๋ ๊ณต๊ธ์๋ ๋ฆฌ์์ค๋ฅผ ๋์ ์ผ๋ก ํ ๋นํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ฒ ํ๋ก๋น์ ๋, ํ์ฅ ๋ฐ ๋ฆด๋ฆฌ์คํ ์ ์์ต๋๋ค. ์๋ฒ๋ฆฌ์ค ์ค์ ์์ ์๋ฒ๊ฐ ๋ถ์กฑํ๋ค๋ ๊ฒ์ ์์ ํ๋ก์ธ์ค๋ฅผ ํฌํจํ ๋คํธ์ํน ๊ตฌ์ฑ ์์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ๋๋ ํด๋ผ์ฐ๋ ๊ณต๊ธ์๊ฐ ์ ๊ณตํ๋ ์ธ๋ถ ๊ตฌ์ฑ ์์์ ๋์์ ๋ฐ์ ์ฒ๋ฆฌ๋์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๊ธฐ๋ณธ ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ๋ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ์ ๋ ์ง์คํ ์ ์์ต๋๋ค.
Ingress๋ URL ๊ฒฝ๋ก, ํธ์คํธ ๋๋ ๊ธฐํ ์ฌ์ฉ์ ์ ์ ๊ท์น๊ณผ ๊ฐ์ ๋ค์ํ ์์์ ๋ฐ๋ผ ์์ ์์ฒญ์ด ์ ์ ํ ์๋ฒ๋ฆฌ์ค ๊ธฐ๋ฅ ๋๋ ์๋น์ค๋ก ์ฌ๋ฐ๋ฅด๊ฒ ๋ผ์ฐํ ๋๋๋ก ๋ณด์ฅํ๋ฏ๋ก ์๋ฒ๋ฆฌ์ค ํจ๋ฌ๋ค์์ ์ค์ํ ๊ตฌ์ฑ ์์์ ๋๋ค. ๋ค์ด์ค๋ ๋คํธ์ํฌ ํธ๋ํฝ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉด ๋๊ธฐ ์๊ฐ์ด ์ค์ด๋ค๊ณ , ์๋น์ค์ ์ฌ๋ฌ ์ธ์คํด์ค์ ๊ฑธ์ณ ๋ถํ ๋ถ์ฐ์ด ๊ฐ์ ๋๋ฉฐ, ์์ฒญ ์๋ ์ ํ, SSL ์ข ๋ฃ, ์ก์ธ์ค ์ ์ด ๋ฑ๊ณผ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ์ ๊ณต๋ฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก Ingress๋ ์์ ๊ตฌ์ฑ์ ๊ด๋ฆฌํ๊ณ ์ด์ ๋ฐ๋ผ ๋ค์ด์ค๋ ์์ฒญ์ ๋ผ์ฐํ ํ๋ ์ ์ฉ ๊ตฌ์ฑ ์์์ธ Ingress Controller๋ฅผ ํ์ฉํ์ฌ ๊ตฌํ๋ฉ๋๋ค. ์์ ์ปจํธ๋กค๋ฌ๋ ์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ฐ๋ ๊ณต๊ธ์ ๋๋ ํ์ฌ ๋๊ตฌ์์ ์ ๊ณต๋๋ฉฐ ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ์ ์ํํ๊ฒ ์๋ํ๋๋ก ์ค๊ณ๋์ด ๊ธฐ๋ณธ ๋ฆฌ์์ค์ ๊ท๋ชจ๊ฐ ์์์ ๋ฐ๋ผ ์กฐ์ ๋จ์ ๋ฐ๋ผ ํธ๋ํฝ์ ๋์ ์ผ๋ก ๋ผ์ฐํ ํฉ๋๋ค. ์์ ์ปจํธ๋กค๋ฌ๋ ๋ผ์ฐํ ๊ท์น ๋ฐ ๊ธฐํ ๊ด๋ จ ์ ๋ณด๊ฐ ํฌํจ๋ YAML ํ์ผ์ ์ค๋ช ๋ ์์ ๋ฆฌ์์ค์ ํจ๊ป ์๋ํฉ๋๋ค.
AppMasterno-code ํ๋ซํผ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์๋ ์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ์์ ์๋๋ฆฌ์ค๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. AppMaster ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ๋ชจ๋ธ, ๋น์ฆ๋์ค ํ๋ก์ธ์ค ๋ฐ API endpoints ์๊ฐ์ ์ผ๋ก ์์ฑํ์ฌ ์์ ๋คํธ์ํฌ ํธ๋ํฝ์ ์ํํ๊ณ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ด ํ๋ซํผ์ ํฌ๊ด์ ์ธ IDE๋ก ์๋ํ์ฌ ๊ธฐ์ ์ ๋ถ์ฑ๋ฅผ ์ ๊ฑฐํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํฉ๋๋ค. ๊ฐ๋ฐ์๋ ์ธํ๋ผ ๊ด๋ฆฌ, ์์ฐ์ฑ ํฅ์, ๋น์ฉ ์ ๊ฐ์ ๋ํ ๊ฑฑ์ ์์ด ํต์ฌ ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ์ ์ง์คํ ์ ์์ต๋๋ค.
Golang์ ์ฌ์ฉํ์ฌ ์์ฑ๋ AppMaster ์ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ์ ๋ฐ ๊ณ ๋ถํ ์๋๋ฆฌ์ค์์ ํ์ํ ํ์ฅ์ฑ๊ณผ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ํ Postgresql ํธํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ง์์ ํตํด ํ๋ซํผ์ ์ํํธ์จ์ด ์ธ๊ณ์ ๋ค์ํ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ฉด์ ๊ด๋ฒ์ํ ์ฌ์ฉ ์ฌ๋ก์ ์ ํฉํฉ๋๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ์ ์ํ Vue3 ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ AppMaster ์ ์๋ฒ ๊ธฐ๋ฐ ํ๋ ์์ํฌ์ ๊ฐ์ ์ต์ ์น ํ๋ ์์ํฌ๋ฅผ ํ์ฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ์ ์ฐํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ์๋ฒ ์ค์ฌ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ฑ ๋ง์ผํ๋ ์ด์ค์ ์ ๋ฒ์ ์ ์ ์ถํ์ง ์๊ณ ๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ UI, ๋ก์ง ๋ฐ API ํค๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ผ๋ฏ๋ก ์ ๋ฐ์ดํธ ํ๋ก์ธ์ค๊ฐ ๋์ฑ ์ํํ๊ณ ํจ์จ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก Ingress๋ ๋ค์ด์ค๋ ๋คํธ์ํฌ ํธ๋ํฝ, ๋ผ์ฐํ ๋ฐ ๋ถ์ฐ ์์คํ ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๊ด๋ฆฌํจ์ผ๋ก์จ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ์ํ๊ณ์์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์์ ์ปจํธ๋กค๋ฌ ๋ฐ ์์ ๋ฆฌ์์ค์ ๊ฐ์ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์๋ ๋ค์ด์ค๋ ์์ฒญ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ฒ๋ฆฌํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. AppMasterno-code ํ๋ซํผ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํตํด ๊ฐ๋ฐ์๋ ํต์ฌ ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๋ฐ ์ง์คํ๋ฉด์ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ์ ์ ์ฐ์ฑ๊ณผ ํจ์จ์ฑ์ ํ์ฉํ๋ ๊ฐ๋ ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.