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

์ผ๋ฐ˜์ ์ธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ๋А์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๊ฐ€ ํ˜‘๋ ฅํ•˜์—ฌ ์ž˜ ์ •์˜๋œ ์„œ๋น„์Šค ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋Š” HTTP, REST(Representational State Transfer) ๋˜๋Š” ๋ฉ”์‹œ์ง• ๋Œ€๊ธฐ์—ด๊ณผ ๊ฐ™์€ ๊ฒฝ๋Ÿ‰ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋กœ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋Š” ์„œ๋กœ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ณ  ์ž ์žฌ์ ์œผ๋กœ ์™ธ๋ถ€ ํด๋ผ์ด์–ธํŠธ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋ฏ€๋กœ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ค‘์š”ํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ์„ ์œ„ํ•œ ์„ ๋„์  no-code ํ”Œ๋žซํผ์ธ AppMaster ๋Š” ๊ฐ•๋ ฅํ•œ ์ธ์ฆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์— ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์˜ ์ค‘์š”์„ฑ์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค. AppMaster ๊ณ ๊ฐ์ด ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค(BP) ๋””์ž์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ๊ธฐ๋ณธ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” Go, Vue3, Kotlin ๋ฐ Jetpack Compose/ SwiftUI ๊ฐ€ ํฌํ•จ๋˜๋ฉฐ ๋ณด์•ˆ, ํ™•์žฅ์„ฑ ๋ฐ ๊ณ ์„ฑ๋Šฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

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

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

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

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