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

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

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

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

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

  • API ๊ฒŒ์ดํŠธ์›จ์ด: API ์š”์ฒญ์— ๋Œ€ํ•œ ๋‹จ์ผ ์ง„์ž…์  ์—ญํ• ์„ ํ•˜๋Š” ๋ฏธ๋“ค์›จ์–ด ๊ตฌ์„ฑ ์š”์†Œ๋กœ, ํด๋ผ์ด์–ธํŠธ ์ธก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์ถ”์ƒํ™”ํ•˜๋ฉด์„œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ๋ณด์•ˆ ๋ฐ ์ œํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๋ ˆ์ด์–ด: ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ ๊ฐ„์˜ ์›ํ™œํ•œ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ด‰์ง„ํ•˜๊ณ  CRUD(Create, Read, Update, Delete) ์ž‘์—…, ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฏธ๋“ค์›จ์–ด ์„œ๋น„์Šค ์ œํ’ˆ๊ตฐ์ž…๋‹ˆ๋‹ค.
  • Message Queue: ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ๋น„๋™๊ธฐ์‹ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์—ฌ ๋‚ด๊ฒฐํ•จ์„ฑ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ ์ˆ˜ํ‰์  ํ™•์žฅ์„ฑ์„ ์ด‰์ง„ํ•˜๋Š” ๋ฉ”์‹œ์ง€ ์ง€ํ–ฅ ๋ฏธ๋“ค์›จ์–ด ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

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

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

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