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

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

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

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

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

AppMaster ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ์—์„œ API endpoint ์ƒ์„ฑ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋‹จ๊ณ„์—์„œ ๊ถŒํ•œ ๋ถ€์—ฌ ๊ทœ์น™์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์˜ ๊ฐ•๋ ฅํ•œ REST API ๋ฐ WebSocket ์ง€์›์„ ํ†ตํ•ด ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š”์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž ์—ญํ•  ๋˜๋Š” ์†์„ฑ์— ๋”ฐ๋ผ ์•ก์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์€ ์ธ์ฆ ๋ฐ ์•ก์„ธ์Šค ์ œ์–ด ์š”๊ตฌ ์‚ฌํ•ญ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„ endpoints ์— ๋Œ€ํ•œ OpenAPI(Swagger) ๋ฌธ์„œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ํˆฌ๋ช…ํ•œ ๋ฌธ์„œ๋Š” ๊ตฌํ˜„๋œ ์ธ์ฆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ดํ•ดํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ๊ฐœ๋ฐœ์ž์™€ ์ดํ•ด ๊ด€๊ณ„์ž๋ฅผ ๋•์Šต๋‹ˆ๋‹ค.

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