๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋งฅ๋ฝ์—์„œ ์š”์ฒญ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์›น ๋ธŒ๋ผ์šฐ์ € ๋˜๋Š” ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„ ์ธก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ „์†ก๋˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์ด ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ณ  ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ํ†ต์‹  ๋ชจ๋ธ์˜ ์ผ๋ถ€๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค.

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 ํ”Œ๋žซํผ์˜ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•จ์œผ๋กœ์จ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋Š” ์„œ๋ฒ„ ๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ ์ „๋ฐ˜์— ๊ฑธ์นœ ํฌ๊ด„์ ์ด๊ณ  ํšจ์œจ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์˜ ๊ด‘๋ฒ”์œ„ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.