2023๋…„ 8์›” 16์ผยท4๋ถ„ ์ฝ๊ธฐ

Java์˜ 6๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ์ „๋žต

Java์˜ Hexagonal Architecture๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์—ฐํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.

Java์˜ 6๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ์ „๋žต

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

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

์œก๊ฐํ˜• ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Hexagonal Architecture๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด๋ฏธ์ง€ ์ถœ์ฒ˜: GitHub

์ฃผ์š” ๊ฐœ๋… ๋ฐ ์šฉ์–ด

Hexagonal Architecture๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ํ•„์ˆ˜ ์šฉ์–ด์™€ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋กœ์ง

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

ํฌํŠธ

ํฌํŠธ๋Š” ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋…ผ๋ฆฌ์™€ ์™ธ๋ถ€ ์„œ๋น„์Šค ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์— ๋Œ€ํ•œ ๊ณ„์•ฝ์„ ์ •์˜ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ํฌํŠธ๋Š” ๋˜ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ•ด๋‹น ์–ด๋Œ‘ํ„ฐ ๊ฐ„์˜ ์ž…๋ ฅ/์ถœ๋ ฅ ํ˜•์‹ ๋ฐ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์„ ์ •์˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ํฌํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์–ด๋Œ‘ํ„ฐ

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

  • ๊ตฌ๋™ ์–ด๋Œ‘ํ„ฐ: ๊ตฌ๋™ ์–ด๋Œ‘ํ„ฐ๋Š” ์™ธ๋ถ€ ์ž…๋ ฅ(์˜ˆ: HTTP ์š”์ฒญ ๋˜๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ)์„ ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋…ผ๋ฆฌ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น ๋ฐ ์ฟผ๋ฆฌ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ตฌ๋™ ์–ด๋Œ‘ํ„ฐ: ๊ตฌ๋™ ์–ด๋Œ‘ํ„ฐ๋Š” ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋…ผ๋ฆฌ์˜ ์ถœ๋ ฅ ๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์™ธ๋ถ€ ์„œ๋น„์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ˜ธ์ถœ ๋ฐ ์ž‘์—…์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ฃผ์š” ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋ฉด Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Hexagonal Architecture๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ํ™œ์šฉํ•˜์—ฌ ์œ ์ง€ ๊ด€๋ฆฌ, ์ ์‘์„ฑ ๋ฐ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

Java์˜ 6๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜ ๊ตฌํ˜„

Java์—์„œ Hexagonal Architecture๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์ธํ”„๋ผ ๊ณ„์ธต์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Hexagonal Architecture์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ์ธ Port์™€ Adapter๋ฅผ ์ •์˜ํ•จ์œผ๋กœ์จ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Java์—์„œ Hexagonal Architecture๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

  1. ํฌํŠธ ์ •์˜: ํฌํŠธ๋ฅผ Java ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ •์˜ํ•˜์—ฌ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค. ํฌํŠธ๋Š” ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํ˜ธ ์ž‘์šฉ์— ๋Œ€ํ•œ ๊ณ„์•ฝ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ์™€ ์™ธ๋ถ€ ์‹œ์Šคํ…œ ๋˜๋Š” UI ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ๊ฒฝ๊ณ„ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํฌํŠธ๋Š” ์˜ˆ์ƒ๋˜๋Š” ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ์„ ์ •์˜ํ•˜๋Š” ์ผ๋ จ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋…ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ์–ด๋Œ‘ํ„ฐ ๊ตฌํ˜„: ํฌํŠธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” Java ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์–ด๋Œ‘ํ„ฐ๋Š” ์™ธ๋ถ€ ์‹œ์Šคํ…œ์˜ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์„ ํฌํŠธ์—์„œ ์ •์˜ํ•œ ๊ณ„์•ฝ์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋Œ‘ํ„ฐ๋Š” ๊ธฐ๋ณธ ๋ฐ ๋ณด์กฐ์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์–ด๋Œ‘ํ„ฐ๋Š” UI ๋˜๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐ˜๋ฉด ๋ณด์กฐ ์–ด๋Œ‘ํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, API ๋˜๋Š” ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  3. ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ƒ์„ฑ: ์–ด๋Œ‘ํ„ฐ ๋ฐ ํฌํŠธ์™€ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ์Šคํ† ๋ฆฌ์ง€ ๋˜๋Š” ๋ฉ”์‹œ์ง•๊ณผ ๊ฐ™์€ ์ธํ”„๋ผ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ข…์†์„ฑ ์—†์ด ์ˆœ์ˆ˜ํ•˜๊ณ  ์ƒํƒœ ๋น„์ €์žฅ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ๊ณผ ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ  ํ•ต์‹ฌ ๋„๋ฉ”์ธ์ด ์ฃผ๋ณ€ ์•„ํ‚คํ…์ฒ˜์˜ ๋ณ€๊ฒฝ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ตฌ์„ฑ ์š”์†Œ ์—ฐ๊ฒฐ: DI(์ข…์†์„ฑ ์ฃผ์ž…)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ์ข…์†์„ฑ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. DI๋Š” ํŠน์ • ๊ตฌ์„ฑ ์š”์†Œ์— ํ•„์š”ํ•œ ์ข…์†์„ฑ์ด ๊ตฌ์„ฑ ์š”์†Œ ๋‚ด์—์„œ ์ง์ ‘ ์ธ์Šคํ„ด์Šคํ™”๋˜์ง€ ์•Š๊ณ  ์™ธ๋ถ€์ ์œผ๋กœ ์ œ๊ณต๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ข…์†์„ฑ์„ ํ…Œ์ŠคํŠธ double ๋˜๋Š” ๋ชจ์˜๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์šฐ๋ ค ์‚ฌํ•ญ์„ ๋ณด๋‹ค ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ณ  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

6๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜ ๊ตฌํ˜„์„ ์œ„ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€

ํ—ฅ์‚ฌ๊ณ ๋‚  ์•ฑ์„ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•˜์„ธ์š”
ํ•ต์‹ฌ ๋กœ์ง์„ ๋จผ์ € ๋ชจ๋ธ๋งํ•˜๊ณ , ๊น”๋”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ API, UI, ๋ฐ์ดํ„ฐ์™€ ์—ฐ๊ฒฐํ•˜์„ธ์š”.
AppMaster ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

6๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

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

์œก๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜์˜ ์‹ค์ œ ์‚ฌ๋ก€

์ˆ˜๋งŽ์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์€ ๋” ๋‚˜์€ ์œ ์ง€ ๊ด€๋ฆฌ, ์ ์‘์„ฑ ๋ฐ ์œ ์—ฐ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Hexagonal Architecture๋ฅผ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ์‹ค์ œ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

  1. ์ „์ž์ƒ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ: ์ „์ž์ƒ๊ฑฐ๋ž˜ ์‹œ์Šคํ…œ์€ ๊ฒฐ์ œ ๊ฒŒ์ดํŠธ์›จ์ด, ๋ฐฐ์†ก์—…์ฒด, ์žฌ๊ณ  ๊ด€๋ฆฌ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์™ธ๋ถ€ ์„œ๋น„์Šค์™€์˜ ํ†ตํ•ฉ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. Hexagonal Architecture๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๊ฐ ํ†ตํ•ฉ์„ ๋ณ„๋„์˜ ์–ด๋Œ‘ํ„ฐ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ์‹ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๊ณต๊ธ‰์ž ๊ฐ„์— ์‰ฝ๊ฒŒ ์ „ํ™˜ํ•˜๊ฑฐ๋‚˜ ํƒ€์‚ฌ ์„œ๋น„์Šค์˜ ์—…๋ฐ์ดํŠธ์— ์ ์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” Hexagonal Architecture์˜ ํƒ์›”ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. Hexagonal ์›์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, API ๋ฐ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ ์™ธ๋ถ€ ์„œ๋น„์Šค ๋ฐ ๊ตฌ์„ฑ ์š”์†Œ์— ์—ฐ๊ฒฐํ•  ๋•Œ ๋ฌธ์ œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๋ฉฐ ์œ ์—ฐ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ฝ˜ํ…์ธ  ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(CMS): Drupal ๋˜๋Š” WordPress์™€ ๊ฐ™์€ ์ธ๊ธฐ ์žˆ๋Š” CMS ํ”Œ๋žซํผ์€ ๋‹ค์–‘ํ•œ ์™ธ๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ, ํ…Œ๋งˆ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•ด์•ผ ํ•˜๋ฏ€๋กœ Hexagonal Architecture์˜ ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hexagonal ์›์น™์„ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์™ธ๋ถ€ ์ข…์†์„ฑ ๋˜๋Š” ์š”๊ตฌ ์‚ฌํ•ญ ๋ณ€๊ฒฝ์— ์‰ฝ๊ฒŒ ์ ์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

AppMaster.io์™€ ์œก๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜ ํ†ตํ•ฉ

์„ค๊ณ„๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ฆํ•˜์„ธ์š”
ํ•˜๋‚˜์˜ ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ ๋ชจ๋“ˆํ˜• ์„œ๋น„์Šค๋ฅผ ํ”„๋กœํ† ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค๊ณ , ์ „์ฒด๋ฅผ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๊ณ  ๋ฐ˜๋ณต ๊ฐœ์„ ํ•˜์„ธ์š”.
์‹œ์ž‘ํ•˜๊ธฐ

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

์ผ๋ จ์˜ ๋„๊ตฌ์™€ ์ง๊ด€์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ–์ถ˜ AppMaster.io๋Š” ํ”„๋กœ์ ํŠธ์—์„œ Hexagonal Architecture ๊ตฌํ˜„์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hexagonal Architecture๋ฅผ AppMaster.io์™€ ํ†ตํ•ฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

1๋‹จ๊ณ„: Visual BP Designer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋กœ์ง ์„ค๊ณ„

AppMaster.io์˜ ์‹œ๊ฐ์  BP Designer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋กœ์ง์„ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค. ํ•ต์‹ฌ ๋…ผ๋ฆฌ์  ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊นจ๋—ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ๊ธฐ๋ณธ ์ฑ…์ž„์— ์ง‘์ค‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ Hexagonal Architecture๊ฐ€ ์˜นํ˜ธํ•˜๋Š” ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

2๋‹จ๊ณ„: ์™ธ๋ถ€ ์„œ๋น„์Šค์šฉ ํฌํŠธ ๋ฐ ์–ด๋Œ‘ํ„ฐ ์ •์˜

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

3๋‹จ๊ณ„: ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ์ƒํ˜ธ ์ž‘์šฉ ์„ค๊ณ„

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

4๋‹จ๊ณ„: UI ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ตฌํ˜„

AppMaster.io๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ ์‹œ๊ฐ์  BP ๋””์ž์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UI ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hexagonal Architecture ์›์น™์„ ๋”ฐ๋ฅด๋ฉด ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋…ผ๋ฆฌ ๋ฐ ์™ธ๋ถ€ ์„œ๋น„์Šค์™€ ํšจ๊ณผ์ ์œผ๋กœ ํ†ตํ•ฉ๋˜๋Š” ์กฐ์ • ๊ฐ€๋Šฅํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ UI๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5๋‹จ๊ณ„: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฒŒ์‹œ ๋ฐ ๋ฐฐํฌ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋กœ์ง, ํฌํŠธ, ์–ด๋Œ‘ํ„ฐ ๋ฐ UI๊ฐ€ ์„ค๊ณ„๋˜๊ณ  ๊ตฌํ˜„๋˜๋ฉด AppMaster.io์—์„œ "๊ฒŒ์‹œ" ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ปดํŒŒ์ผํ•˜๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , Docker ์ปจํ…Œ์ด๋„ˆ ์— ์••์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค( ๋ฐฑ์—”๋“œ๋งŒ ํ•ด๋‹น) ํด๋ผ์šฐ๋“œ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ํŒ

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

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž์ธ ์ฑ„๋“œ ํŒŒ์šธ๋Ÿฌ(Chad Fowler )๋Š” "๋‚˜์ด๊ฐ€ ๋“ค์ˆ˜๋ก ๊ธฐ์ˆ  ๋ถ„์•ผ์—์„œ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋” ์ด์ƒ ์ผ์„ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž„์„ ๊นจ๋‹ซ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. AppMaster.io๊ฐ€ ๋ณต์žก์„ฑ์„ ๋‹จ์ˆœํ™”ํ•˜๋ฏ€๋กœ ์ด๋Š” ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ์ ์ธ BP Designer, ์ง๊ด€์ ์ธ UI ๋นŒ๋” ๋ฐ ๊ฐ•๋ ฅํ•œ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ Hexagonal Architecture์˜ ์›์น™์„ ํ”„๋กœ์ ํŠธ์— ์›ํ™œํ•˜๊ฒŒ ์ฃผ์ž…ํ•˜์—ฌ ๊ฐ„์†Œํ™”๋œ ๊ฐœ๋ฐœ ์‹œ๋Œ€๋ฅผ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

์œก๊ฐํ˜• ๊ตฌ์กฐ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

์œก๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

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

์œก๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ์š”์†Œ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

Hexagonal Architecture์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํ˜ธ ์ž‘์šฉ์— ๋Œ€ํ•œ ๊ณ„์•ฝ์„ ์ •์˜ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ธ ํฌํŠธ ์™€ ํฌํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์™ธ๋ถ€ ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ์–ด๋Œ‘ํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Java์—์„œ Hexagonal Architecture๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

Java์—์„œ Hexagonal Architecture๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ํฌํŠธ ๋ฐ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์ •์˜ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์ธํ”„๋ผ ๊ณ„์ธต์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌํŠธ๋ฅผ ์ •์˜ํ•œ ๋‹ค์Œ ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์–ด๋Œ‘ํ„ฐ ์— ๊ตฌํ˜„ํ•˜์‹ญ์‹œ์˜ค.

6๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

์œก๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜์˜ ์‹ค์ œ ์˜ˆ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Hexagonal Architecture์˜ ์‹ค์ œ ์‚ฌ๋ก€์—๋Š” ๋” ๋‚˜์€ ์œ ์ง€ ๊ด€๋ฆฌ, ์ ์‘์„ฑ ๋ฐ ์œ ์—ฐ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ด ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์„ ์ฑ„ํƒํ•œ ๋‹ค์–‘ํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ๋ฐ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

AppMaster.io ํ”„๋กœ์ ํŠธ์— Hexagonal Architecture๋ฅผ ์–ด๋–ป๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

AppMaster.io ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ Hexagonal Architecture๋ฅผ ํ†ตํ•ฉํ•˜๋ฉด ์œ ์ง€ ๊ด€๋ฆฌ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppMaster ์˜ ์‹œ๊ฐ์  BP ๋””์ž์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ ๋ฐ ์›น ์•ฑ์—์„œ ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋กœ์ง์„ ์„ค๊ณ„ํ•˜๊ณ  Hexagonal Architecture ์›์น™์— ๋”ฐ๋ผ ์™ธ๋ถ€ ์„œ๋น„์Šค ๋ฐ UI ๊ตฌ์„ฑ ์š”์†Œ์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‰ฌ์šด ์‹œ์ž‘
๋ฉ‹์ง„๋งŒ๋“ค๊ธฐ

๋ฌด๋ฃŒ ์š”๊ธˆ์ œ๋กœ AppMaster๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.
์ค€๋น„๊ฐ€ ๋˜๋ฉด ์ ์ ˆํ•œ ๊ตฌ๋…์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋‹ค
Java์˜ 6๊ฐํ˜• ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ์ „๋žต | AppMaster