ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์ ์์ญ์์ DSL(Domain-Specific Language)์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ค์ํ ์ธก๋ฉด์ ์ฐจ์งํฉ๋๋ค. DSL์ ํน์ ๋๋ฉ์ธ์ด๋ ์ฐ์ ์ ๊ณ ์ ํ ์๊ตฌ์ ์ ์ฝ์ ์์ฉํ๋๋ก ํน๋ณํ ์ค๊ณ๋ ๋ง์ถคํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค. ์ด๋ฌํ ์ ๋ฌธ ์ธ์ด๋ ์๋๋ ๋๋ฉ์ธ๋ณ ์์ฉ ๋ถ์ผ์ ๋ฒ์ ๋ด์์ ์๋ฃจ์ ์ ๊ฐ์ํํ๊ณ ๋จ์ํํ์ฌ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์ค์ง์ ์ผ๋ก ์ต์ ํํฉ๋๋ค. Java, Python ๋ฐ C++์ ๊ฐ์ ๋ฒ์ฉ ์ธ์ด(GPL)์ ๋ฌ๋ฆฌ DSL์ ์ด์ ์ ์ง๊ด์ ์ธ ๊ตฌ๋ฌธ, ๊ณ ๊ธ ์๋ฏธ ํํ ๋ฐ ๋ ์ ์ ์ธ ๋น๋ ๋๋ถ์ ๋์ ๋๋ฉ์ธ์์ ๋ ๋์ ์์ค์ ์์ฐ์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ ๋๋ค. -๊ธฐ๋ฅ์.
DSL์ ๋ ๊ฐ์ง ๊ธฐ๋ณธ ์ ํ, ์ฆ ๋ด๋ถ ๋๋ ๋ด์ฅ DSL๊ณผ ์ธ๋ถ ๋๋ ๋ ๋ฆฝํ DSL๋ก ํน์ง์ง์ด์ง๋๋ค. ๋ด๋ถ DSL์ ํธ์คํธ ๋ฒ์ฉ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ณํ ๋๋ ํ์ฅ์ ๋๋ค. ๊ธฐ๋ณธ ์ธ์ด์ ๊ตฌ๋ฌธ๊ณผ ๊ตฌ์ฑ์ ์์ํ๋ฏ๋ก ๋๊ตฌ ์ํ๊ณ์ ์ฝ๊ฒ ์ ์ํ๊ณ ํธํ๋ฉ๋๋ค. ๋ฐ๋ฉด, ์ธ๋ถ DSL์ ๊ตฌ๋ฌธ ๊ท์น ์ธํธ์ ํ์๋ฅผ ๊ฐ์ถ ์์ ํ ๋ ๋ฆฝ์ ์ด๊ณ ๋ง์ถค ์ค๊ณ๋ ์ธ์ด์ ๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋ณ๋์ ๋๊ตฌ, ํ์ต ๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ํน์ ๋๋ฉ์ธ์ ์ธ์ด ์ค๊ณ์ ๋ํด ๋ ํฐ ์ ์ฐ์ฑ๊ณผ ์๋ฒฝํ ์ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๋๋ฉ์ธ ํน์ ์ธ์ด๋ ๋ง์ถคํ ๊ธฐ๋ฅ๊ณผ ํฅ์๋ ์์ฐ์ฑ ์ด์ ์ผ๋ก ์ธํด ์ฐ์ ์ ๋ฐ์ ๊ฑธ์ณ ๋๋ฆฌ ์ฑํ๋์์ต๋๋ค. ์ด๋ฌํ ์ฑํ์ ํนํ UI ๋์์ธ, ๋ฐ์ดํฐ ์กฐ์, ๋ณด์ ์ ์ฑ , ๋คํธ์ํน ๊ตฌ์ฑ, ๊ฒ์ ๋ฐ ํ ์คํธ ํ๋ ์์ํฌ์ ๊ฐ์ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ญ์ ์ง์ํ๋ DSL์ ํญ๋ฐ์ ์ธ ์ฆ๊ฐ๋ก ์ ์ฆ๋ฉ๋๋ค. ์ ์๋ ค์ง DSL์ ์๋ก๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ฅผ ์ํ SQL, ์น ๊ธฐ๋ฐ UI ๋งํฌ์ ์ ์ํ HTML, ๋น๋ ์๋ํ๋ฅผ ์ํ Gradle, ์น ํ์ด์ง ์คํ์ผ ์ง์ ์ ์ํ CSS ๋ฑ์ด ์์ต๋๋ค.
DSL์ ์ข์ ์ด์ ์๋ ๋ถ๊ตฌํ๊ณ ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์์ ๊ด๋ จ์ฑ์ ์๋ฌด๋ฆฌ ๊ฐ์กฐํด๋ ์ง๋์น์ง ์์ต๋๋ค. ์ฐ๊ตฌ ์กฐ์ฌ์ ๋ฐ๋ฅด๋ฉด DSL์ ์ฌ์ฉํ์ฌ ๋๋ฉ์ธ๋ณ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ฉด ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ด ํฌ๊ฒ ์ค์ด๋ค๊ณ ์ฝ๋ ํ์ง๊ณผ ์ ์ง ๊ด๋ฆฌ์ฑ์ด ํฌ๊ฒ ํฅ์๋๋ฉฐ ์ดํด๊ด๊ณ์ ํ์ ์ด ํฅ์๋๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋์ฑ์ด DSL๊ณผ ๊ด๋ จ๋ ํ์ต ๊ณก์ ์ ์๋นํ ์งง์ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ด๋ฌํ ๋ชจ๋ ์์๋ ์ํํธ์จ์ด ์์ฐ์ ์ด ์์ ๋น์ฉ(TCO)์ ์ง์ ์ ์ผ๋ก ์ค์ด๋ ๋ฐ ๊ธฐ์ฌํฉ๋๋ค.
์ํํธ์จ์ด ๊ฐ๋ฐ์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ ๋๋ฉ์ธ๋ณ ์ธ์ด์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ๊ธฐ ์ํด AppMaster ์ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ซํผ์ด ๋ฑ์ฅํ์ต๋๋ค. AppMasterno-code ํ๋ซํผ์ ์๊ฐ์ ์ผ๋ก ์ง๊ด์ ์ธ ๋ฐ์ดํฐ ๋ชจ๋ธ, ๋น์ฆ๋์ค ํ๋ก์ธ์ค ๋ฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์์ฑํ๋ ๋ฐ ์์ด DSL์ ์์ฒญ๋ ์ ์ฌ๋ ฅ์ ์บก์ํํ์ฌ ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํํ๊ณ ๋ฏผ์ฒฉํ ๊ฐ๋ฐ์ ์ด์งํฉ๋๋ค. ์ด ๊ฐ๋ ฅํ ํ๋ซํผ์ ์น ๊ธฐ๋ฐ UI ๋งํฌ์ ๋ฐ ์คํ์ผ๋ง์ ์ํด HTML ๋ฐ CSS์ ๊ฐ์ ๋ฐ์ด๋ DSL์ ๊ธฐ๋ฅ์ ํ์ฉํ๊ณ ํ์ฅํ๋ ๋์์ AppMaster์์ ์์ฑ๋ Vue3 ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์คํธ์์ ๋๋ฉ์ธ๋ณ ๋ ผ๋ฆฌ ๊ตฌํ์ ์ํด ๋ด๋ถ DSL์ ํตํฉํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์์ฑ์ ๋ํ AppMaster ์ ํ์ ์ ์ธ ๋์์ธ ์ค์ฌ ์ ๊ทผ ๋ฐฉ์์ ์ง์์ ์ธ ํ์ฅ์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ์ฑ์ ๋ฐํ์ผ๋ก ์ ์ํ ์์ด๋์ด ๊ตฌ์, ํ๋กํ ํ์ ์ ์, ํ ์คํธ ๋ฐ ๋ฐฐํฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค. AppMaster์์ ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ Postgresql ํธํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ ์ด์ฉ ๊ฐ๋ฅํ๋ฉฐ ์ํ ์์ด ์ปดํ์ผ๋ Go(golang) ๋ฐฑ์๋ ๋๋ถ์ ๋ก๋๊ฐ ๋ง์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ๋ฐ์ด๋ ํ์ฅ์ฑ์ ๋ณด์ฌ์ค๋๋ค. DSL์ ์ ๋ต์ ํ์ฉ์ ๋ํ ์ฆ๊ฑฐ๋ก AppMaster ํ๋ซํผ์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ 10๋ฐฐ ๊ฐ์ํํ๊ณ ๋น์ฉ์ 3๋ฐฐ ์ ๊ฐํฉ๋๋ค. ๋ํ AppMaster ์์ ๋ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒ์๋ถํฐ ๋ค์ ์์ฑํ์ฌ ๊ธฐ์ ๋ถ์ฑ ๋ถ๋ด์ ์ ๊ฑฐํฉ๋๋ค. ์ผ๋ฐ ๊ฐ๋ฐ์๋ ์ด ๊ณ ๊ธ ํ๋ซํผ์ ํ์ฉํ์ฌ ์๋ฒ ๋ฐฑ์๋, ์น ์ฌ์ดํธ, ๊ณ ๊ฐ ํฌํธ ๋ฐ ๊ธฐ๋ณธ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ํ๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ํฌ๊ด์ ์ธ ์ํํธ์จ์ด ์๋ฃจ์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, Domain-Specific Languages๋ ๋ง์ถคํ ์๋ฃจ์ ์ ๋ํ ์ํํธ์จ์ด ์ ๊ณ์ ์๊ตฌ๋ฅผ ๋ท๋ฐ์นจํจ์ผ๋ก์จ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๊ธฐ์ ์ ์ต์ ์ ์์ ์ ์ง๋ฅผ ํ๊ณ ํ ํ์ต๋๋ค. AppMaster ์ ๊ฐ์ ์ต์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ซํผ๊ณผ DSL์ ๊ฒฐํฉ์ ํจ์จ์ฑ, ํ์ฅ์ฑ ๋ฐ ๋น์ฉ ํจ์จ์ฑ ์ธก๋ฉด์์ ๋น๊ตํ ์ ์๋ ํจ๋ฌ๋ค์์ ํ๋ฆฝํ์ต๋๋ค. DSL์ ํจ๊ณผ์ ์ผ๋ก ํตํฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ด๋ฌํ ์ธ์ด์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ํ์ฉํ์ฌ ์ต์ข ์ฌ์ฉ์, ์ดํด๊ด๊ณ์ ๋ฐ ๊ธฐ์ ์ํ๊ณ ์ ๋ฐ์ ๋ ๋์ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.