ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜(Hexagonal Architecture)๋ž€?
ยท
Programmings/Design Pattern
ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜์˜ ์ดํ•ด: ์œ ์—ฐํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„๋ฅผ ์œ„ํ•œ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ „ํ™˜ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜(Hexagonal Architecture)๋Š” ํ˜„๋Œ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ํ˜์‹ ์ ์ธ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. 2005๋…„ ์•จ๋ฆฌ์Šคํ…Œ์–ด ์ฝ•๋ฒˆ(Alistair Cockburn)์ด ์ฒ˜์Œ ์ œ์•ˆํ•œ ์ด ์•„ํ‚คํ…์ฒ˜๋Š” ๊ธฐ์กด์˜ ๊ณ„์ธตํ˜• ๊ตฌ์กฐ(Layered Architecture)๊ฐ€ ๊ฐ€์ง„ ๊ตฌ์กฐ์  ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ ์ž ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์™ธ๋ถ€ ํ™˜๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ ์™„์ „ํžˆ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ์‹œ์Šคํ…œ์˜ ์œ ์—ฐ์„ฑ๊ณผ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ด ์•„ํ‚คํ…์ฒ˜์˜ ๊ทผ๋ณธ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค. 2020๋…„๋Œ€์— ๋“ค์–ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(MSA)์™€ ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„(DDD)์˜ ๋ถ€์ƒ๊ณผ ๋”๋ถˆ์–ด ๊ทธ ์ค‘์š”์„ฑ์ด ์žฌ์กฐ๋ช…๋˜๋ฉฐ ์ „๋žต์  ..
[Design Pattern] Command Bus pattern ์ด๋ž€?
ยท
Programmings/Design Pattern
Given problem ‎CommandBus ํŒจํ„ด์˜ ๋ฌธ์ œ๋Š” CQRS ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์˜ ์ž์‹ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ์œ ์ผํ•œ ์งˆ๋ฌธ์€ ํ•ญ์ƒ ์šฐ๋ฆฌ ๋จธ๋ฆฌ ์†์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค : ์šฐ๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ๋ช…๋ น๊ณผ ์ฟผ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?‎ ‎์šฐ๋ฆฌ ์‹œ์Šคํ…œ์ด ๋” ๋ณต์žก ํ•ด์ง€๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ด‡ํ‹€๋„ฅ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ž ๊ธˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋™์‹œ์„ฑ ์•ก์„ธ์Šค์˜ ์ผ๋ถ€ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ์„ฑ๋Šฅ์— ๊ด€ํ•œ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.‎ ‎๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ช…๋ น ๋ฐ ์ฟผ๋ฆฌ ๊ฐœ๋…์„ CQRS ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์˜ ๋‘ ๊ฐ€์ง€๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.‎ ‎๊ทธ๋ ‡๋‹ค๋ฉด ๋ช…๋ น ๋ฒ„์Šค ํŒจํ„ด์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๊นŒ?‎ Solution with Command Bus pattern ‎๋‹ค์Œ์€ ๋ช…๋ น ๋ฒ„์Šค ํŒจํ„ด์— ๋Œ€ํ•œ ๋‹ค์ด์–ด..