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

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

๋นŒ๋” ํŒจํ„ด์€ ๋„ค ๊ฐ€์ง€ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • Director: ์ด ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ ์ ˆํ•œ ์ˆœ์„œ๋กœ Builder์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ตฌ์„ฑ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ๋นŒ๋”: ๋ณตํ•ฉ ๊ฐ์ฒด์˜ ์ผ๋ถ€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.
  • Concrete Builder: ์ด๊ฒƒ์€ Builder ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋กœ, ๋ณต์žกํ•œ ๊ฐ์ฒด์˜ ํŠน์ • ํ‘œํ˜„์— ๋Œ€ํ•œ ์‹ค์ œ ๊ตฌ์„ฑ ๋…ผ๋ฆฌ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ œํ’ˆ(Product): ์ด๋Š” ์—ฌ๋Ÿฌ ๋ถ€๋ถ„๊ณผ ๋‹ค์–‘ํ•œ ๊ฐ€๋Šฅํ•œ ํ‘œํ˜„์„ ํฌํ•จํ•˜๋Š” ๊ตฌ์„ฑ๋˜๋Š” ๋ณต์žกํ•œ ๊ฐœ์ฒด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

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

๋˜ํ•œ AppMasterno-code ํ”Œ๋žซํผ์€ ๋นŒ๋” ํŒจํ„ด์„ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ์ž‘์—…์„ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค. AppMaster ์‚ฌ์šฉํ•˜๋ฉด ๊ณ ๊ฐ์€ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, REST API ๋ฐ ์›น ์„œ๋น„์Šค(WSS) endpoints ์‹œ๊ฐ์ ์œผ๋กœ ๋””์ž์ธํ•œ ๋‹ค์Œ ๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Go, Vue3, Kotlin ๋ฐ SwiftUI ์™€ ๊ฐ™์€ ์–ธ์–ด ์‚ฌ์šฉ)์„ ์œ„ํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ํ”Œ๋žซํผ์˜ ์‚ฌ์ „ ๊ตฌ์ถ•๋œ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ ์š”์†Œ์™€ ์žฌ์‚ฌ์šฉ์„ฑ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๋†’์€ ์ˆ˜์ค€์˜ ์ œ์–ด๋กœ ๋” ๋น ๋ฅธ ์†๋„๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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