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

์›น ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํ˜„๋Œ€ ์›น ๊ฐœ๋ฐœ์˜ ๊ธฐ๋ณธ ๋ถ€๋ถ„์ด ๋˜์—ˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์ƒ์‚ฐ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ธ๊ธฐ๋Š” Stack Overflow ๊ฐœ๋ฐœ์ž ์„ค๋ฌธ์กฐ์‚ฌ 2020์—์„œ ์ฐธ์—ฌ ๊ฐœ๋ฐœ์ž์˜ 50% ์ด์ƒ์ด ์ตœ๊ณ ์˜ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์–ธ๊ธ‰ํ•œ ์‚ฌ์‹ค์—์„œ ๋ถ„๋ช…ํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ฐฑ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์ธก ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ ๋„ ์•Œ๋ ค์ง„ ํ”„๋ŸฐํŠธ ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉ์ž ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ ํ‘œ์‹œ๋˜๊ณ  ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„ํŠผ, ์–‘์‹, ํƒ์ƒ‰ ๋ชจ์Œ๊ณผ ๊ฐ™์€ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ผ๊ด€์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค. ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” Bootstrap, Material-UI, ReactJS, AngularJS ๋ฐ Vue.js๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์‚ฌ์ „ ๊ตฌ์ถ•๋œ ํ’๋ถ€ํ•œ UI ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ˜์‘์„ฑ์ด ๋›ฐ์–ด๋‚˜๊ณ  ์‹œ๊ฐ์ ์œผ๋กœ ๋งค๋ ฅ์ ์ธ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์ธก ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ ๋„ ์•Œ๋ ค์ง„ ๋ฐฑ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์„œ๋ฒ„ ์ธก ๋…ผ๋ฆฌ์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, API ๋ฐ ๊ธฐํƒ€ ์™ธ๋ถ€ ์„œ๋น„์Šค์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ณ ์„ฑ๋Šฅ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ์š”์†Œ์ธ ๋น„์ฆˆ๋‹ˆ์Šค๋ณ„ ๋…ผ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๋ณด์•ˆ์„ ๋ณด์žฅํ•˜๊ณ , ๋ฐ์ดํ„ฐ ํŠธ๋žœ์žญ์…˜์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฑ์—”๋“œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋กœ๋Š” JavaScript์šฉ Express.js(Node.js), Django(Python), Ruby on Rails(Ruby) ๋ฐ Laravel(PHP)์ด ์žˆ์Šต๋‹ˆ๋‹ค.

AppMaster ์™€ ๊ฐ™์€ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ฐœ๋ฐœ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” no-code ์†”๋ฃจ์…˜๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•๋ ฅํ•œ no-code ๋„๊ตฌ AppMaster ์‚ฌ์šฉ์ž๊ฐ€ ๊ด‘๋ฒ”์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์‹ ์—†์ด๋„ ๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๊ฐ์€ ์‹œ๊ฐ์ ์ธ BP Designer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, REST API ๋ฐ WSS endpoints ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๋Š” Web BP ๋””์ž์ด๋„ˆ ๋‚ด์—์„œ ๊ฐ„๋‹จํ•œ drag-and-drop ์ธํ„ฐํŽ˜์ด์Šค๋กœ UI๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌ์ถ•ํ•˜๊ณ , ๋Œ€ํ™”ํ˜• ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” drag-and-drop ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ชจ๋ฐ”์ผ BP ๋””์ž์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UI ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋””์ž์ธํ•˜๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. '๊ฒŒ์‹œ' ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•˜๋ฉด AppMaster ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปดํŒŒ์ผํ•˜๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , ์ด๋ฅผ ํด๋ผ์šฐ๋“œ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•๋ ฅํ•œ ์„œ๋ฒ„ ์ธก ๊ธฐ์ˆ ์ธ Go(golang)๋Š” ์ด๋Ÿฌํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋†’์€ ํ™•์žฅ์„ฑ๊ณผ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

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

๋ณด์•ˆ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋Š” XSS(๊ต์ฐจ ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…), ์‚ฝ์ž… ๊ณต๊ฒฉ(SQL, LDAP ๋˜๋Š” XPath) ๋ฐ ์„ธ์…˜ ํ•˜์ด์žฌํ‚น๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ์ทจ์•ฝ์„ฑ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” ๋ณด์•ˆ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๊ณ  ๋ณด์•ˆ ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•จ์ •์„ ํ”ผํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

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