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

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

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์˜ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ง€, ๋ณด๊ณ , ํ•ด๊ฒฐ์„ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํƒ์ง€(Detection)๋ž€ ์‹œ์Šคํ…œ ๋‚ด์—์„œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ์„ ์‹๋ณ„ํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ์—ฃ์ง€ ์ผ€์ด์Šค๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ, ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ฐ ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ์˜ ๋ชฉํ‘œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ƒํ™ฉ์— ๋Œ€์‘ํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

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

AppMasterno-code ํ”Œ๋žซํผ์˜ ๋งฅ๋ฝ์—์„œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋Š” Go(golang) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ํ™•๋ฆฝ๋œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ž๋™์œผ๋กœ ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹ ๋ขฐ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋™์‹œ์— ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๊ณ  ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

๋˜ํ•œ AppMaster ์—์„œ ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ชจ๋“  PostgreSQL ํ˜ธํ™˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฐ ๊ฒฌ๊ณ ์„ฑ ์ˆ˜์ค€์„ ๋”์šฑ ํ–ฅ์ƒ์‹œํ‚ค๋„๋ก ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ์•ˆ์ •์ ์ด๊ณ  ์•ˆ์ „ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ธ PostgreSQL์€ ๊ฐ•๋ ฅํ•œ ํŠธ๋žœ์žญ์…˜ ์ง€์›, ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๊ฒ€์‚ฌ ๋ฐ ํฌ๊ด„์ ์ธ ๋กœ๊น…๊ณผ ๊ฐ™์€ ๋‚ด์žฅ๋œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. AppMaster ์ƒ์„ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํšจ์œจ์ ์ธ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋…ผ๋ฆฌ์™€ ๊ฒฐํ•ฉ๋œ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ ์˜ค๋ฅ˜ ๋˜๋Š” ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์•ˆ์ •์„ฑ๊ณผ ๋ณต์›๋ ฅ์— ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค.

AppMaster ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ Vue3 ํ”„๋ ˆ์ž„์›Œํฌ์™€ Android์šฉ Kotlin ๋ฐ Jetpack Compose, ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ iOS์šฉ SwiftUI ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ™œ์šฉํ•œ๋‹ค๋Š” ์ ๋„ ์–ธ๊ธ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ณ ๊ธ‰ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์›ํ™œํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ์™€ ์˜ˆ์™ธ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

ํšจ๊ณผ์ ์ธ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ์˜ ํ•„์ˆ˜์ ์ธ ์ธก๋ฉด์€ ์ฒ ์ €ํ•œ ๋ฌธ์„œํ™”์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ ์‹๋ณ„ ๋ฐ ํ•ด๊ฒฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌ๊ฒŒ ์ด‰์ง„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppMaster ์„œ๋ฒ„ endpoints ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ์ตœ์‹  Swagger(OpenAPI) ๋ฌธ์„œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹œ์Šคํ…œ์„ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ , ์˜ค๋ฅ˜๋ฅผ ์ง„๋‹จํ•˜๊ณ , ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‹ค์ˆ˜๋กœ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์˜ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋กœ, ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์˜ ์•ˆ์ •์„ฑ, ์‹ ๋ขฐ์„ฑ ๋ฐ ์ „๋ฐ˜์ ์ธ ์„ฑ๊ณต์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. AppMasterno-code ํ”Œ๋žซํผ์€ ์ƒ์„ฑ๋œ ๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ž๋™์œผ๋กœ ํ†ตํ•ฉํ•˜์—ฌ ํšจ์œจ์ ์ธ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ์šฐ์„ ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด AppMaster ๊ณ ๊ฐ์ด ๋น„์šฉ ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜๊ณ  ๋‚ด๊ฒฐํ•จ์„ฑ์ด ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜์—ฌ ๊ด‘๋ฒ”์œ„ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ ๊ธฐ์—…์— ์ •๊ตํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๋Š” ํ”Œ๋žซํผ์˜ ๊ฐ€์น˜์— ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค.