๋ญ์ผ ์ค์ผ ๋ฐ๋น ...
ํ๋ก์ ํธ ๋จ์ ๊ธฐ๊ฐ ์ผ์ฃผ์ผ! ์ ๋ง์ ๋ง ๋ฐ์๊ฒ ์ง๋ด๋ค๋ณด๋ ์๊ฐ์ด ์ ๋ง ์์๊ฐ์ ํ๋ฌ๊ฐ์ ์ฐํ ์บ ๋ ๋ฒ์จ ๋ง์ง๋ง์ฃผ๊ฐ ๋ค๊ฐ์๋ค.. ์ด๋ฒ์ฃผ๋ ํนํ ์ ์ ์์ด ๊ฐ๋ฐ๋งํด์ ๊ธฐ๋ก์ ์ํํด์ก๋๋ฐ, ์ด์ฉ ์ ์๋๊ฑฐ ๊ฐ๋ค. ์ผ์ผํ์คํธ๋ง ํ๊ธฐ๋ ๋ฐ์ ์ง๊ฒฝ.. ํ์๋ค๊ณผ ์คํ๋ผ์ธ์ผ๋ก ๋ง๋์ ๊ฐ๋ฐํ๋ค๋ณด๋ฉด ์๋ฒฝ2์๊ฐ ๋๊ณ .. ์ง์์์ ๋ง์ ํ๊ณ .. ์ ์ด ๋ถ์กฑํด...
๋ฐ๋ผ์ ์ด๋ฒ 7์ฃผ์ฐจ ํ๊ณ ๋ ๊ทธ๋์๊ณผ๋ ๋น๊ตํ ์๋ ์์ด ์งง์ ๊ฒ์ด๋ค!
Jest/testing-library๋ฅผ ์ฌ์ฉํ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ๋๋ ค๋ณด๋ ๊ฒฝํ์ ํ๋ค. cypress๋ฅผ ์ ๊น ์จ๋ดค๋๋ฐ GUI๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๋์ ์ฐจ์ด์ธ๊ฐ? ์ถ๋ค.
๊ทธ๋ฅ ํด๋น ์ปดํฌ๋ํธ๊ฐ ๋ ๋๊ฐ ๋๋๊ฐ? ๋ฒํผ์ ๋๋ฅด๋ฉด ํ์ ํญ๋ชฉ์ด ๋ ๋๊ฐ ๋๋๊ฐ? ์์ค์ ํ ์คํธ๋ง ์์ฑํด๋ณด์๋ค. ์ค์ ๋ก ๊ฐ๋ฐ์ ์งํํ๋ฉด์ ๊ณ์ ํ ์คํธ๋ฅผ ๋๋ ค๋ณด์๋๊ณ ํ๋ค๋ฉด, ์๋๋ค... ์คํ๋ ค ํ ์คํธ๊ฐ ๊นจ์ง๋ฉด ์ฃผ์์ฒ๋ฆฌ๋ฅผ ํ๊ณค ํ๋ฐ ใ ใ ...
ํนํ ํด๋น ์ปดํฌ๋ํธ๊ฐ ๋ฐ์ props๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋๋ฏธ ๋ฐ์ดํฐ๋ ๋ค์ ์์ ํ๊ณ ํด์ผํ๋ค๋ณด๋ ๋ฐ์๋ค๋ ํ๊ณ๋ก..
๊ทธ๋ฅ ์, ํ ์คํธ์ด๋ ๊ฒ ์์ฑํ๋๊ตฌ๋ ์ ๋๋ง ๋๋ ๋ฏ. TDD๋ฅผ ํ๋ค๊ณค ํ ์ ์๋ค..
์กฐ๊ธ ๋ค๋ฅธ ์ด์ผ๊ธฐ์ง๋ง ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฐ๋ค๋ณด๋ฉด ํฐ ๋์์ ๋ฐ๋๋ค. ๋ด๊ฐ ์ฌ๊ธฐ์ ๋์น ์ธ์/์ธ์๋ผ๋๊ฐ ํ์ ์ ๋ํด์ ์ก์์ฃผ๋ค๋ณด๋ ๋ณต์กํ ๊ตฌ์กฐ์์ ํ์ค๊ธฐ ๋น์ด๋ค. ์ด์ ํ์ ์์ด ๊ฐ๋ฐ์ ํ๋ค๋๊ฒ ์์์ด ์ ๊ฐ ์ ๋.. ์ดํ ํ ์คํธ๋ ์ต์ํด์ง๋ฉด ๊ทธ๋ ๊ฒ ๋ ๊น? ์๊ฐ์ด ๋ค์๋ค.
ํ์ ๋ถ์ด ๊ตฌ์ฑํด๋์ DDD ๊ตฌ์กฐ์์ ์ง์ Controller/Service/Domain/DTO/Entity ๋ฅผ ์์ฑํด๊ฐ๋ฉฐ API๋ฅผ ์์ฑํ๋ค.
์ฒ์์ ๋์ฒด ์ด๊ฒ ๋ญ ๊ตฌ์กฐ๋ ๋ณต์กํ๋ค. ๋น์ฅ ์ ๋ฒ์ฃผ์๋ ์ฒ์(?)ํด๋ณธ 3 layer ๋ฐฉ์๊ณผ ๋ ๋ฌ๋ผ์ ์ ์ํ๋๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ธ๋ค.. DDD์ ๋ํด ์ค๋ช ํด๋ณด๋ผ๋ฉด ์์ง๋ ์์ ์ ์๋ค. ๊ทธ๋๋ ์กฐ๊ธ์ฉ ์ต์ํด์ง๊ณ ์๋ ๋ฏ.
DDD์ ์ฅ์ ? ์งํฅ์ ?์ ๊ฐ ๋๋ฉ์ธ๋ค๋ผ๋ฆฌ ์์ ๋ ๋ฆฝ๋์ด์, ๊ทธ ๋๋ฉ์ธ ํด๋๋ง ๋ผ์ด์ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ถ๊ฐํด๋ ๋ฌธ์ ์์ด ๋์ํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ์์กด์ฑ 0! ํ์ง๋ง ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ์๋ก๊ฐ ๊ธด๋ฐํ๊ฒ ์ฎ์ฌ์๋ค๋ณด๋ ๊ทธ๋ ๊ฒ๊น์ง ๋ถ๊ฐ๋ฅํ๋ค. ํนํ ๋ด๊ฐ ์์ฑ ์ค์ธ ๋ง์ดํ์ด์ง๋ ์์ฒด ๋๋ฉ์ธ์ด๊ธดํด๋ ๋ค๋ฅธ ๋๋ฉ์ธ, ์๋น์ค๋ฅผ ๊ฐ์ ธ์์ผ๋ง ํ๋ค... ์ด๋ ต๋ค ์ด๋ ค์
react๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ํ์คํ๋๋ค๊ณ ์ด์ผ๊ธฐ๋ฅผ ๋ค์ ์ ์๋ค. ์ด๋ฏธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ํ๊ธฐ ๋ฌด์ํ ์ ๋๋ก ํ๋ ์์ํฌ ํ๊ฐ ๋์ด์๊ณ , ์์ฃผ ์ฌ์ฉ๋๋ ํจํด์ด ์กด์ฌํ๋ค๋ณด๋ ์ด์ฉ ์ ์๋ ๋ฏ.
๊ทธ๋ ๋ค๋ฉด ๊ฐ๋ฐ์์ ์ญ๋์ ๊ฐ๋ฅด๋ ๊ฑด ๋ฌด์์ผ๊น? ์ต์ ํ? ๊ฐ๋ ์ฑ? react ์ธ ๋ค๋ฅธ ๊ธฐ์ ?
์ด๋ฒ ํ๋ก์ ํธ์์๋ react-query / recoil๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค. ์๋ฒ ๋ฐ์ดํฐ์ ์ฐ๊ด๋ ์ํ๋ react-query๋ก, ๊ทธ์ธ ๊ธ๋ก๋ฒํ ํด๋ผ์ด์ธํธ ์ํ๋ recoil๋ก ์ฒ๋ฆฌ์ค์ธ๋ฐ ์ฌ์ค ๋ ๋ค ์จ์ผํ๋? ๊ฐ์ ์๊ฒฌ๋ ์์๋ค. recoil๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋๊น.. ๊ธฐ์ ์ ํ์ ์ด์ ๊ฐ ์์ด์ผ ํ๋ค!
๋๋ฆ ๋ฌธ์ํ๋ฅผ ์ ๊ฒฝ์ด๋ค๊ณ ํ์ง๋ง, ์ฌ์ค ๊ทธ๋ ์ง๋ ์์ ๊ฑฐ ๊ฐ๋ค. ์ด๋ฒ์ 6ํ์ ๋ฌธ์ํ๋ฅผ ๋ณด์๋๋ฐ ์ ๋ง ๋ฏธ์น๊ฑฐ ๊ฐ๋ค ใทใท ์ก์ ์ํธ๋ก ๋ฐฑ๋ก๊ทธ๋ฅผ ์์ฑํ๊ณ ์ฐจํธ๊น์ง ๊ทธ๋ ค์ง๋.. ์์ฒญ๋ ...
ํ ๋ฒ ์ ๋๋ ๊ฒฝํํด๋ณผ๋งํ๋ค๊ณ ์๊ฐํ๋ค! ๊ทผ๋ฐ ๋๋ฌด ์๊ฐ์ด ๋ง์ด ๋ค์ง ์๋ ์ถ๊ธฐ๋ํ๊ณ ..
๊ฐ์ข ํ์ ์์คํ ์ ๋ง๋ค์ด๋ ๊ฒ๋ ์ข์๋ณด์๋ค. 5 whys ๋ผ๋๊ฐ
์ด๋ฒ ๋ฏธ์ ์์ ๋ด๊ฐ ์๋ก์ด ๊ธฐ์ ์ ๋์ ํ๊ธฐ๋ณด๋ค, ํ์์ด ๊ฐ์ ธ์จ ๊ธฐ์ ์ ํ์ตํด์ ์ฐธ๊ณ ํ๋ฉฐ ์ฌ์ฉํ๋ ์ ์ฅ์ด๋ค.
ํ์์ ๋ด ์ญํ ์ด ๋ฌด์์ผ๊น ์กฐ๊ธ ๊ณ ๋ฏผ๋๊ธฐ๋ ํ๋ค..
๋จ์ ์ผ์ฃผ์ผ ํ์ดํ !
์ญ๋์ญ๋ ํ์ดํ !