๐ŸŒ’ ์šฐ์•„ํ•œ ํ…Œํฌ์บ ํ”„ 7์ฃผ์ฐจ ํšŒ๊ณ 

DDยท2021๋…„ 8์›” 24์ผ
2

์šฐ์•„ํ•œ ํ…Œํฌ์บ ํ”„

๋ชฉ๋ก ๋ณด๊ธฐ
7/14
post-thumbnail

๋ญ์•ผ ์™ค์ผ€ ๋ฐ”๋น ...

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

๋”ฐ๋ผ์„œ ์ด๋ฒˆ 7์ฃผ์ฐจ ํšŒ๊ณ ๋Š” ๊ทธ๋™์•ˆ๊ณผ๋Š” ๋น„๊ตํ•  ์ˆ˜๋„ ์—†์ด ์งง์„ ๊ฒƒ์ด๋‹ค!

๋ฌด์—‡์„ ํ–ˆ๋‚˜

ํ…Œ์ŠคํŠธ

  • Jest/testing-library๋ฅผ ์‚ฌ์šฉํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ๋Œ๋ ค๋ณด๋Š” ๊ฒฝํ—˜์„ ํ–ˆ๋‹ค. cypress๋ฅผ ์ž ๊น ์จ๋ดค๋Š”๋ฐ GUI๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๋ƒ์˜ ์ฐจ์ด์ธ๊ฐ€? ์‹ถ๋‹ค.

  • ๊ทธ๋ƒฅ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๊ฐ€ ๋˜๋Š”๊ฐ€? ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ•˜์œ„ ํ•ญ๋ชฉ์ด ๋ Œ๋”๊ฐ€ ๋˜๋Š”๊ฐ€? ์ˆ˜์ค€์˜ ํ…Œ์ŠคํŠธ๋งŒ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค. ์‹ค์ œ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๊ณ„์† ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ๋ ค๋ณด์•˜๋ƒ๊ณ ํ•œ๋‹ค๋ฉด, ์•„๋‹ˆ๋‹ค... ์˜คํžˆ๋ ค ํ…Œ์ŠคํŠธ๊ฐ€ ๊นจ์ง€๋ฉด ์ฃผ์„์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณค ํ–ˆ๋”ฐ ใ…‹ใ…‹...

  • ํŠนํžˆ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฐ›์„ props๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋„ ๋‹ค์‹œ ์ˆ˜์ •ํ•˜๊ณ  ํ•ด์•ผํ•˜๋‹ค๋ณด๋‹ˆ ๋ฐ”์˜๋‹ค๋Š” ํ•‘๊ณ„๋กœ..

  • ๊ทธ๋ƒฅ ์•„, ํ…Œ์ŠคํŠธ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋Š”๊ตฌ๋‚˜ ์ •๋„๋งŒ ๋Š๋‚€ ๋“ฏ. TDD๋ฅผ ํ–ˆ๋‹ค๊ณค ํ•  ์ˆ˜ ์—†๋‹ค..

  • ์กฐ๊ธˆ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ง€๋งŒ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์“ฐ๋‹ค๋ณด๋ฉด ํฐ ๋„์›€์„ ๋ฐ›๋Š”๋‹ค. ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์— ๋†“์นœ ์ธ์ž/์ธ์ˆ˜๋ผ๋˜๊ฐ€ ํƒ€์ž…์— ๋Œ€ํ•ด์„œ ์žก์•„์ฃผ๋‹ค๋ณด๋‹ˆ ๋ณต์žกํ•œ ๊ตฌ์กฐ์—์„œ ํ•œ์ค„๊ธฐ ๋น›์ด๋‹ค. ์ด์   ํƒ€์ž… ์—†์ด ๊ฐœ๋ฐœ์„ ํ•œ๋‹ค๋Š”๊ฒŒ ์ƒ์ƒ์ด ์•ˆ ๊ฐˆ ์ •๋„.. ์ดํ›„ ํ…Œ์ŠคํŠธ๋„ ์ต์ˆ™ํ•ด์ง€๋ฉด ๊ทธ๋ ‡๊ฒŒ ๋ ๊นŒ? ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

DDD

  • ํŒ€์› ๋ถ„์ด ๊ตฌ์„ฑํ•ด๋†“์€ DDD ๊ตฌ์กฐ์—์„œ ์ง์ ‘ Controller/Service/Domain/DTO/Entity ๋ฅผ ์ž‘์„ฑํ•ด๊ฐ€๋ฉฐ API๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

  • ์ฒ˜์Œ์—” ๋Œ€์ฒด ์ด๊ฒŒ ๋ญ” ๊ตฌ์กฐ๋ƒ ๋ณต์žกํ–ˆ๋‹ค. ๋‹น์žฅ ์ €๋ฒˆ์ฃผ์—๋„ ์ฒ˜์Œ(?)ํ•ด๋ณธ 3 layer ๋ฐฉ์‹๊ณผ ๋˜ ๋‹ฌ๋ผ์„œ ์ ์‘ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค.. DDD์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด๋ผ๋ฉด ์•„์ง๋„ ์ž์‹ ์€ ์—†๋‹ค. ๊ทธ๋ž˜๋„ ์กฐ๊ธˆ์”ฉ ์ต์ˆ™ํ•ด์ง€๊ณ  ์žˆ๋Š” ๋“ฏ.

  • DDD์˜ ์žฅ์ ? ์ง€ํ–ฅ์ ?์€ ๊ฐ ๋„๋ฉ”์ธ๋“ค๋ผ๋ฆฌ ์™„์ „ ๋…๋ฆฝ๋˜์–ด์„œ, ๊ทธ ๋„๋ฉ”์ธ ํด๋”๋งŒ ๋–ผ์–ด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•ด๋„ ๋ฌธ์ œ์—†์ด ๋™์ž‘ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์˜์กด์„ฑ 0! ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋Š” ์„œ๋กœ๊ฐ€ ๊ธด๋ฐ€ํ•˜๊ฒŒ ์—ฎ์—ฌ์žˆ๋‹ค๋ณด๋‹ˆ ๊ทธ๋ ‡๊ฒŒ๊นŒ์ง„ ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋‹ค. ํŠนํžˆ ๋‚ด๊ฐ€ ์ž‘์„ฑ ์ค‘์ธ ๋งˆ์ดํŽ˜์ด์ง€๋Š” ์ž์ฒด ๋„๋ฉ”์ธ์ด๊ธดํ•ด๋„ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ, ์„œ๋น„์Šค๋ฅผ ๊ฐ€์ ธ์™€์•ผ๋งŒ ํ•œ๋‹ค... ์–ด๋ ต๋‹ค ์–ด๋ ค์›Œ

React

  • react๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ํ‰์ค€ํ™”๋œ๋‹ค๊ณ  ์ด์•ผ๊ธฐ๋ฅผ ๋“ค์€ ์  ์žˆ๋‹ค. ์ด๋ฏธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๊ณ  ํ•˜๊ธฐ ๋ฌด์ƒ‰ํ•  ์ •๋„๋กœ ํ”„๋ ˆ์ž„์›Œํฌ ํ™”๊ฐ€ ๋˜์–ด์žˆ๊ณ , ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด์ด ์กด์žฌํ•˜๋‹ค๋ณด๋‹ˆ ์–ด์ฉ” ์ˆ˜ ์—†๋Š” ๋“ฏ.

  • ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž์˜ ์—ญ๋Ÿ‰์„ ๊ฐ€๋ฅด๋Š” ๊ฑด ๋ฌด์—‡์ผ๊นŒ? ์ตœ์ ํ™”? ๊ฐ€๋…์„ฑ? react ์™ธ ๋‹ค๋ฅธ ๊ธฐ์ˆ ?

  • ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” react-query / recoil๋กœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ์™€ ์—ฐ๊ด€๋œ ์ƒํƒœ๋Š” react-query๋กœ, ๊ทธ์™ธ ๊ธ€๋กœ๋ฒŒํ•œ ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ๋Š” recoil๋กœ ์ฒ˜๋ฆฌ์ค‘์ธ๋ฐ ์‚ฌ์‹ค ๋‘˜ ๋‹ค ์จ์•ผํ•˜๋‚˜? ๊ฐ™์€ ์˜๊ฒฌ๋„ ์žˆ์—ˆ๋‹ค. recoil๋„ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ˆ๊นŒ.. ๊ธฐ์ˆ  ์„ ํƒ์— ์ด์œ ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค!

์•„์‰ฌ์šด ๊ฒƒ

์—ฌ์ „ํžˆ ๋Š๋ฆฐ ๊ฐœ๋ฐœ ์†๋„

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

๋ฌธ์„œํ™”

  • ๋‚˜๋ฆ„ ๋ฌธ์„œํ™”๋ฅผ ์‹ ๊ฒฝ์“ด๋‹ค๊ณ  ํ–ˆ์ง€๋งŒ, ์‚ฌ์‹ค ๊ทธ๋ ‡์ง€๋„ ์•Š์€ ๊ฑฐ ๊ฐ™๋‹ค. ์ด๋ฒˆ์— 6ํŒ€์˜ ๋ฌธ์„œํ™”๋ฅผ ๋ณด์•˜๋Š”๋ฐ ์ •๋ง ๋ฏธ์นœ๊ฑฐ ๊ฐ™๋‹ค ใ„ทใ„ท ์•ก์…€ ์‹œํŠธ๋กœ ๋ฐฑ๋กœ๊ทธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ฐจํŠธ๊นŒ์ง€ ๊ทธ๋ ค์ง€๋Š”.. ์—„์ฒญ๋‚œ ...

  • ํ•œ ๋ฒˆ ์ •๋„๋Š” ๊ฒฝํ—˜ํ•ด๋ณผ๋งŒํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค! ๊ทผ๋ฐ ๋„ˆ๋ฌด ์‹œ๊ฐ„์ด ๋งŽ์ด ๋“ค์ง€ ์•Š๋‚˜ ์‹ถ๊ธฐ๋„ํ•˜๊ณ ..

  • ๊ฐ์ข… ํ˜‘์—… ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค์–ด๋‘” ๊ฒƒ๋„ ์ข‹์•„๋ณด์˜€๋‹ค. 5 whys ๋ผ๋˜๊ฐ€

์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ๋„์ž…

  • ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ ๋‚ด๊ฐ€ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ๋„์ž…ํ•˜๊ธฐ๋ณด๋‹ค, ํŒ€์›์ด ๊ฐ€์ ธ์˜จ ๊ธฐ์ˆ ์„ ํ•™์Šตํ•ด์„œ ์ฐธ๊ณ ํ•˜๋ฉฐ ์‚ฌ์šฉํ•˜๋Š” ์ž…์žฅ์ด๋‹ค.

  • ํŒ€์—์„œ ๋‚ด ์—ญํ• ์ด ๋ฌด์—‡์ผ๊นŒ ์กฐ๊ธˆ ๊ณ ๋ฏผ๋˜๊ธฐ๋„ ํ–ˆ๋‹ค..

๋งˆ๋ฌด๋ฆฌ

  • ์ •๋ง ์ •์‹ ์—†์ด ๋‹ฌ๋ ค์˜จ ์šฐํ…Œ์บ  ์ข…๋ฃŒ๋ฅผ ์ผ์ฃผ์ผ ์•ž๋‘๊ณ  ์žˆ๋‹ค. ์ „ํ™˜ ๋ฉด์ ‘์„ ์ƒ๊ฐํ•˜๋‹ค๋ณด๋ฉด ๊ฐ€๋” ์šฐ์šธ(?)ํ•ด์ง€๊ธฐ๋„ ํ•œ๋‹ค. ์ž์‹ ๊ฐ์„ ๊ฐ€์ ธ์•ผํ•œ๋‹ค!!!

๋‚จ์€ ์ผ์ฃผ์ผ ํ™”์ดํŒ…!

profile
๊ธฐ์–ต๋ณด๋‹จ ๊ธฐ๋ก์„ / TIL ์ „์šฉ => https://velog.io/@jjuny546

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2021๋…„ 8์›” 29์ผ

์ญˆ๋‹ˆ์ญˆ๋‹ˆ ํŒŒ์ดํŒ…!

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ