๋ฐฑ์๋ ๊ฐ๋ฐ ๋งฅ๋ฝ์์ ์์ฒญ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ฑฐ๋ ์์ ์ ์คํํ๊ธฐ ์ํด ์น ๋ธ๋ผ์ฐ์ ๋๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ฐ์ ํด๋ผ์ด์ธํธ์์ ์๋ฒ ์ธก ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ ์ก๋๋ ๋ฉ์์ง๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋ถ์ฐ ์์คํ ์ด ์ธํฐ๋ท์ ํตํด ์ํธ ์์ฉํ๊ณ ์ ๋ณด๋ฅผ ๊ตํํ ์ ์๋๋ก ํ๋ ํด๋ผ์ด์ธํธ-์๋ฒ ํต์ ๋ชจ๋ธ์ ์ผ๋ถ๋ฅผ ํ์ฑํฉ๋๋ค.
HTTP(Hypertext Transfer Protocol) ๋ฐ WSS(WebSocket Secure)๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ผ๋ฐ์ ์ธ ํ๋กํ ์ฝ์ ๋๋ค. HTTP๋ ์์ฒญ-์๋ต ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ฐ๋ฉด WSS๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ ์ ์ด์ค ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ์๋ฐฉํฅ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
HTTP ์์ฒญ์ ์ผ๋ฐ์ ์ผ๋ก ์์ฒญ ๋ฉ์๋(์: GET, POST, PUT ๋๋ DELETE), ์์ฒญ URI(Uniform Resource Identifier) โโ๋ฐ ํ๋กํ ์ฝ ๋ฒ์ ์ ํฌํจํ๋ ์์ฒญ ๋ผ์ธ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ํ ์์ฒญ์๋ ํ์ํ ๊ฒฝ์ฐ ๋ฉํ๋ฐ์ดํฐ ๋ฐ ํ์ด๋ก๋๋ฅผ ์ ๊ณตํ๋ ์์ฒญ ํค๋ ํ๋๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๋ ์ง์ ๋ URI์ HTTP GET ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ์๋ฒ ๊ธฐ๋ฐ ์ ์ ์๊ฑฐ๋ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ๊ฒ์ํ๋๋ก ์์ฒญํ ์ ์์ต๋๋ค.
๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ด์ค๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์ง์ ๋ ์์ฒญ ์ฝํ ์ธ ๋ฐ ๊ตฌ์ฑ๋ ๋ ผ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์๋ต์ ๋ฐํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์๋ต์๋ ์ข ์ข ๊ตฌ์กฐํ๋ ํ์(์: JSON ๋๋ XML )์ ๋ฐ์ดํฐ ๋๋ ์์ฒญ ์ฒ๋ฆฌ์ ์ฑ๊ณต ๋๋ ์คํจ๋ฅผ ๋ํ๋ด๋ ์ํ ์ฝ๋๊ฐ ํฌํจ๋ฉ๋๋ค.
AppMaster ํ๋ซํผ์์ ์ฌ์ฉ์๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ๋ฐ์ดํฐ ๋ชจ๋ธ, ๋น์ฆ๋์ค ๋ก์ง, REST API ๋ฐ WSS endpoints ์๊ฐ์ ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ๊ณ ์ ํ ์๊ฐ์ BP(๋น์ฆ๋์ค ํ๋ก์ธ์ค) ๋์์ด๋๋ฅผ ํตํด AppMaster ์ฌ์ฉํ๋ฉด ๊ณ ๊ฐ์ด ์์๋ฅผ ๋์ด๋ค ๋๊ณ ํ์์ ๋ฐ๋ผ ๊ตฌ์ฑํ์ฌ ๋ฐฑ์๋ ๋ก์ง์ ์ค๊ณํ๊ณ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ํตํด ์ ์ํ ์๋ฒ ์ธก ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ, ๋ฐฐํฌ ๋ฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ฏ๋ก ์ ์ฒด ํ๋ก์ธ์ค๊ฐ 10๋ฐฐ ๋ ๋น ๋ฅด๊ณ 3๋ฐฐ ๋ ๋น์ฉ ํจ์จ์ ์ ๋๋ค.
์์ฑ๋ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ PostgreSQL ํธํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ํธํ๋ฉ๋๋ค. AppMaster ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ์ Go(golang)๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ฐ์ด๋ ํ์ฅ์ฑ์ ๋ณด์ฅํ๋ฏ๋ก ์ํฐํ๋ผ์ด์ฆ ๋ฐ ๊ณ ๋ถํ ์ฌ์ฉ ์ฌ๋ก์ ์ด์์ ์ธ ์๋ฃจ์ ์ ๋๋ค.
์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ๋ค์ํ ๋ถ์ผ์ ์ ๋ฌธ๊ฐ์ ์ฝ์์ ์์ฝํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐํด ๋ณด์ญ์์ค. ๋ฐฑ์๋ ์๋ฒ๋ REST API๋ฅผ ๋ ธ์ถํ์ฌ ์ฌ์ฉ์ ๊ณ์ ์ ๊ด๋ฆฌํ๊ณ , ์์ฒญ์ ์ธ์ฆํ๊ณ , ์์ฝ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ , ์๋ฆผ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํด ๋ก๊ทธ์ธํ๋ฉด ์ธ์ฆ ์์ฒญ์ด ์๋ฒ๋ก ์ ์ก๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์๋ฒ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์ฌ์ฉ์ ์๊ฒฉ ์ฆ๋ช ์ ๊ฒ์ฆํ ๋ค์ ์ ์ ํ ์๋ต(์: ์ฑ๊ณต์ ์ธ ๋ก๊ทธ์ธ ๋๋ ์ค๋ฅ ๋ฉ์์ง)์ ๋ฐํํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ์ฉ์๊ฐ ์ฝ์์ ์์ฝํ๋ ค๋ ๊ฒฝ์ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ธ ๋ค์ ์์ฝ์ ์ฒ๋ฆฌํ๊ณ ์๋ต์ ๋ณด๋ ๋๋ค.
AppMaster ์์ค ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปดํ์ผํ๊ณ , ํ ์คํธ๋ฅผ ์คํํ๊ณ , ํด๋ผ์ฐ๋์ ๋ฐฐํฌํฉ๋๋ค. ๋ํ ์๋ฒ endpoints ์ฉ Swagger(OpenAPI) ๋ฌธ์ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์ ๋ฐ์ดํธ์ฉ ์๋ ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ์ ๊ฐ์ ๊ธฐ๋ณธ ์ ๊ณต ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ผ๋ฐ์ ์ผ๋ก 30์ด ์ด๋ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํธ๋ฅผ ์ ์ํ๊ฒ ์์ฑํ๊ณ ๋ฐฐํฌํ ์ ์์ผ๋ฉฐ, ์ฒญ์ฌ์ง์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฒ์๋ถํฐ ์์ฑ๋๋ฏ๋ก ๊ธฐ์ ์ ๋ถ์ฑ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค.
๋ฐฑ์๋ ๊ฐ๋ฐ ์ปจํ ์คํธ ๋ด์ ์์ฒญ์ ํด๋ผ์ด์ธํธ-์๋ฒ ํต์ ์ ํ์์ ์ด๋ฉฐ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ์๋ฒ์์ ์์ ์ ์คํํ ์ ์๋๋ก ํฉ๋๋ค. AppMaster ํ๋ซํผ์ ๋ค์ํ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฑ์๋ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑ์ ์ฉ์ดํ๊ฒ ํ์ฌ ์ํํธ์จ์ด ์๋ฃจ์ ์ ํ์ฅ์ฑ, ์ ์ง ๊ด๋ฆฌ์ฑ ๋ฐ ์ ์ํ ๋ฐฐํฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค. AppMaster ํ๋ซํผ์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ํ์ฉํจ์ผ๋ก์จ ์ํํธ์จ์ด ๊ฐ๋ฐ์๋ ์๋ฒ ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ํ๋ซํผ ์ ๋ฐ์ ๊ฑธ์น ํฌ๊ด์ ์ด๊ณ ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ์ฌ ๋น์ฆ๋์ค ๋ฐ ์ํฐํ๋ผ์ด์ฆ์ ๊ด๋ฒ์ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ถฉ์กฑํ ์ ์์ต๋๋ค.