Community

๐Ÿ•Š๏ธ [NHN] ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ์• ๋งคํ•œ ๋ถ€๋ถ„ ์ •๋ฆฌํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค ์˜์ƒ ์ •๋ฆฌ

์ฒ˜์Œ ์ปฌ๋ฆฌ์— ์ž…์‚ฌํ–ˆ์„ ๋•Œ ํŒ€ ๋‚ด์—์„œ๋Š” Java/Spring ์Šคํƒ์œผ๋กœ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ํšŒ์‚ฌ์—์„œ๋„ ๊ฐ™์€ ์Šคํƒ์„ ์‚ฌ์šฉํ•ด์„œ ์ ์‘ํ•˜๊ธฐ์— ๋ณ„ ๋ฌด๋ฆฌ ์—†๊ฒ ๊ตฌ๋‚˜~ ํ–ˆ๋Š”๋ฐ ์›ฌ๊ฑธ, ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๊ฐ€ ๊ทธ๋™์•ˆ ๋ด์™”๋˜ ๊ฒƒ๊ณผ๋Š” ์ƒ์ดํ–ˆ๋˜ ๊ฑฐ์˜€์ฃ .ย  ย  ์›๋ž˜๋Š” ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ”ํžˆ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ฉด ๋ฐฐ์šฐ๊ฒŒ ๋˜๋Š” ๊ทธ Controller/Service/Repository ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐ์—ฌ์„œ ๊ทธ๋Ÿฐ์ง€ ํ•™์ƒ๋“ค์„ ๊ฐ€๋ฅด์น  ๋•Œ๋„ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ฃ . ์ €๋„ ์˜ˆ์™ธ๋Š” ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ย  ๊ทธ๋Ÿฌ๋‚˜ ๋งˆ์ฃผ์นœ ๊ฒƒ์€ ์ด๋ฆ„์กฐ์ฐจ๋„ ๋‚ฏ์„  ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜(Hexagonal Architecture)์˜€์Šต๋‹ˆ๋‹ค. ์–ด๋Œ‘ํ„ฐ, ์œ ์Šค์ผ€์ด์Šค, ํฌํŠธ ๋“ฑ ํ˜„๋ž€ํ•œ ์šฉ์–ด๋“ค ์‚ฌ์ด์—์„œ ์ €๋Š” ์ •์‹ ์„ ์ฐจ๋ฆด ์ˆ˜๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ฒ˜์Œ ๋„์ž…ํ–ˆ๋˜ ํŒ€์›๋“ค์€ ํšŒ์‚ฌ๋ฅผ ๋– ๋‚ฌ๊ณ , ๋‚จ๊ฒจ์ง„ ์ €ํฌ๋“ค์€ ํ•™์Šต๋œ ๋‚ด์šฉ์ด ์—†๋Š” ์ƒํƒœ์—์„œ ๋”๋“ฌ๋”๋“ฌ ๊ธฐ์กด ๊ตฌ์กฐ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ฒŒ์จ 1๋…„์ด ๋„˜์—ˆ๋„ค์š”. ๋ฌธ๋“ ํŒ€์› ํ•œ ๋ถ„์ด ๊ทธ๋Ÿฐ ๋ง์”€์„ ํ•˜์‹  ๊ฒ๋‹ˆ๋‹ค.ย  ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ๋ฅผ ์ž˜ ๋”ฐ๋ผ๊ฐ€๊ณ  ์žˆ์„๊นŒ? ์‚ฌ์‹ค ์ž์‹  ์žˆ๊ฒŒ ๊ทธ๋ ‡๋‹ค๊ณ  ๋‹ตํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ์˜€์Šต๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ ๊ฐœ๋…๋„ ๋ชจ๋ฅด๊ณ , ์™œ ๋„์ž…ํ–ˆ๋Š”์ง€ ์ด์œ ๋„ ๋ชจ๋ฅธ ์ฑ„ ์–ด์ฉŒ๋‹ค ๋ณด๋‹ˆ ์—ฌ๊ธฐ๊นŒ์ง€ ์™€๋ฒ„๋ ธ์œผ๋‹ˆ๊นŒ์š”. ย  ์—ญ์‹œ ์œ ํŠœ๋ธŒ ๋งŒํ•œ ๊ฒŒ ์—†์ฃ . NHN์—์„œ ์ง„ํ–‰ํ•œ ์ฝ˜ํผ๋Ÿฐ์Šค์—์„œ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๋ฐœํ‘œ๋ฅผ ์ง„ํ–‰ํ•œ ์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ๋ชฉ์€ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์ง€๋งŒ, ๊ทธ ์•ˆ์— ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜์— ๊ด€ํ•œ ๋‚ด์šฉ๋„ ๋“ค์–ด์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„ ํ•ด๋‹น ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค