[๋ฐ๋ธ์ฝ์ค] 8์ฃผ์ฐจ ํ๊ณ
ํ๊ณ : โญโญโญโญโญ
๊พธ์คํ ์ฑ์คํ์ง ์์์ง๋ง ํ์คํ๊ฒ ๋ถํ์ฐ๊ณ ํ ๊ฑด ๋คํด๋ธ ํ ์ฃผ
๐Liked
ํฌ๋๋ฆฌ์คํธ ๊ฐ๋ฐ์ ์๋ฃํ๋ค. ์ค๊ณ + ํด๋ ๊ตฌ์กฐ ๊ณ ๋ฏผ, ํ๋ฆฌ์ฆ๋ง ์์๋ณด๊ธฐ ๋ฑ์ ์๊ฐ์ ๋๋ฌด ๋ง์ด ์์์(์ฌ์ค ๋ฏธ๋ฃฌ๊ฑฐ์) ์ค ๊ฐ๋ฐ ์๊ฐ์ 4์ผ ์ ๋ ๋๋ ๊ฒ ๊ฐ๋ค.
์ด ์์ค์ ํ ์๋ฒ์ง ์ ์ฌ ์ฌ์ ๋ก ๊ธ์์ผ, ์ผ์์ผ ๊ฐ๊ฐ 5์๊ฐ์ฉ ์ด๋ ์๊ฐ์ด ์์ด์ ์๊ฐ ์๋ผ๊ณ ์ ์ดํ ๋ฐค์์ ์ ํํ๊ณ ๋ ํ๋ก ํด์ปคํค์ ํ ์ ์ด ๋๋ค. ๋๋ฌด ํ๋ ๋ฐ ๋ด๊ฐ ๋ฏธ๋ค๊ณ ๊ทธ๋ฅ ๋ฉ๊ฐ์ ๋ณด์ ๋ณด๋น ๋ง์๊ฑฐ๋ผ ํ ๋ง์ด ์๋ค...๋ฏธ๋ฃฌ๊ฑด ์๋ชปํ์ง๋ง ํ๋ฅญํ๊ฒ ํด์น์ ์ผ๋ ์ํ ์ผ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ๋ก ํ์
https://github.com/Monixc/devcoure_todolist
GitHub - Monixc/devcoure_todolist
Contribute to Monixc/devcoure_todolist development by creating an account on GitHub.
github.com
์ด๋ค ์๊ฐ์ผ๋ก ์ฝ๋๋ฅผ ์งฐ๋์ง, ๊ฐ๋ฐ ์ค ์ด๋ค ๊ณ ๋ฏผ์ ํ๋์ง ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค.
ํด๋ ๊ตฌ์กฐ์ ๋ํ ๊ณ ๋ฏผ
๊ณ์ธต ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ์ง, ๊ธฐ๋ฅ ์ค์ฌ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ์ง ํด๋ ๊ตฌ์กฐ์ ๋ํด ๊ต์ฅํ ๋ง์ ๊ณ ๋ฏผ์ ํ๋ค.
๋ฐฑ์๋ ์คํ์ ๋ฐ๋ธ์ฝ์ค ์ปค๋ฆฌํ๋ผ์ ๋ง๊ฒ express๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋๋ฐ, express์ "๊ฐ๋จํจ" ํน์ฑ์ ์ด๋ฆฌ๊ธฐ ์ํด์๋ ๊ณ์ธต ๊ธฐ๋ฐ์ผ๋ก ์ต๋ํ ๊ฐ๋จํ๊ฒ ๊ตฌ์กฐ๋ฅผ ์ง๋๊ฒ ๋ง์ง ์๋ ์ถ๋ค๊ฐ๋, ์ข ๋ ๋ช ํํ๊ฒ ํ์ ๊ฐ๋ฅํ๋๋ก ๊ธฐ๋ฅ ๊ธฐ๋ฐ์ผ๋ก ๋ถ๋ฆฌํ๋๊ฒ ๋ ์ข์ง ์์๊น ์๊ฐ์ด ๋ค์ด ๊ฐํก์งํก ํ๋์ค
๊ด๋ จ๋ ๊ธ๋ค๋ ๊ต์ฅํ ๋ง์ด ์ฝ์ด๋ณด๊ณ , ํ์๋ค๊ณผ ์์๋ฅผ ํด๋ณธ ํ ๋ฉํ ๋๊ป ์ง๋ฌธ๋ ํด๋ณด์๋ค.
๋ด ์๊ฒฌ:
๊ธฐ๋ฅ๋ณ๋ก ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํ๋ฉด ํ๋ก์ ํธ๋ฅผ ํ์ ํ๊ธฐ ๋ ์ฉ์ดํ๊ณ , ๋์ค์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ์ง๋ณด์ํ๋๋ฐ์๋ ์ ๋ฆฌํ์ง ์์๊น. ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง๊ธด ํ๊ฒ ์ง๋ง, ๊ฐ๋ฐ ๋จ๊ณ์์๋ ๊ธฐ๋ฅ๋ณ๋ก ์์ ํ๋๊ฒ ๋ ํธ๋ฆฌํ ๊ฒ ๊ฐ๋ค.
ํ์ ์๊ฒฌ:
๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํด API๋ฅผ ๊ตฌํํ๋ค๋ฉด ์ปจํธ๋กค๋ฌ, ์๋น์ค, ๋ฏธ๋ค์จ์ด ๋ฑ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ๋๊ฒ ์ ์ง๋ณด์์ ์ ๋ฆฌํ ๊ฒ ๊ฐ๋ค. ๊ด์ฌ์ฌ์ ๊ธฐ์ค์ด ์ค์ํ๋ค๊ณ ์๊ฐํจ
๊ณ์ธต ๊ธฐ๋ฐ์ ๊ตฌ์กฐ์ ์ผ๋ก๋ ์ง๊ด์ ์ด์ง๋ง ๊ธฐ๋ฅ์ ๋ํ ๋ถ๋ถ์ด src(root) ๋จ์์์ ํฉ์ด์ ธ์ ์คํ๋ ค ์ ์ง๋ณด์์ฑ์ด ๋จ์ด์ง ์ ์๋ค๊ณ ๋ ๋๋. feature-base๋ ์ข ๋ ํด๋๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง์ง๋ง ๊ธฐ๋ฅ์ ๋ํ ๊ด์ฌ์ฌ๊ฐ ๋ถ๋ฆฌ๋๋ ๋๋์ด๊ธฐ๋ ํจ
๋ฉํ ๋:
์์ ๋จ์์์๋ layered๋ ์ถฉ๋ถํ ์ข๋ค. ๊ทธ๋ฆฌ๊ณ feature-based๋ผ๋ ๋ง๋ณด๋ค๋ domain, model based๋ผ๋๊ฒ ๋ ์ ํฉํ ๊ฒ ๊ฐ๋ค.
๋ชจ๋ธ์ db ํ ๊ฐ์ ํ ์ด๋ธ์ ๋ปํ๊ณ , feature-based(model based ์๋ฌดํผ)์ ์ธ ๋ ํ๋ ํ ์ด๋ธ์ ๋ํ ๋ถ๋ฆฌ๋ณด๋ค๋ ๋ชจ๋ธ์ ๊ตฐ์ง ๊ฐ๋ ์ธ Aggregate(์ด๊ทธ๋ฆฌ๊ฒ์ดํธ) ๋จ์๋ก, ์ฐ๊ด ๊ฐ๋ ์ ํตํฉํ์ฌ ํด๋๋ฅผ ๊ตฌ์ฑํ๋๊ฒ ๋ ํจ์จ์ ์ด๋ค.
์ฌ์ค ์ด๋ค ๊ตฌ์กฐ๋ฅผ ์ฐ๋ ๋ณธ์ง์ ํด๋ ์ ๋ฆฌ์ด๋ค. ์ฌ๋๋ง๋ค ๋ค๋ฅด๊ณ , ๋ ํ์ฌ๋ง๋ค ๋ค๋ฅธ๊ฒ ํด๋ ๊ตฌ์กฐ์ด๋ ์ ๋ต์ ์๋ค. ๊ฐ์์ ๊ท์น์ด ์์ ๋ฟ์ด๊ณ , ๊ทธ๋ฅ ์ ์ด๋ ๊ฒ ๋ถ๋ฆฌํ๋์ง ๋ช ํํ ๊ทผ๊ฑฐ๋ง ์์ผ๋ฉด ๋ ๋ฏ. ๊ทธ๋๋ ๊ตณ์ด ์ ๋ต์ ์ฐพ์๋ฉด ๋๊ธฐ์ ๋ธ๋ก๊ทธ ์ฐธ๊ณ
๊ณ ๋ฏผ์ด ์ปธ๋๋ฐ, ๋ฉํ ๋ ์๊ฒฌ์ ๋ค์ผ๋ ์ด๋ ๊ฒ๊น์ง ํฌ๊ฒ ๊ณ ๋ฏผํ ํ์๋ ์๋ค๋ ์๊ฐ์ด ๋ค์๊ณ , ๊ทธ๋ฅ ๋ด๊ฐ ์ข ๋ ๋ง์์ ๋๋ ๋ฐฉ์์ธ feature-based ๋ฐฉ์์ผ๋ก ํด๋ ๊ตฌ์กฐ๋ฅผ ์ ๋ฆฌํด๋ณด์๋ค. ํ๋ก ํธ๋ฅผ ๋ง๋ค๋๋ ํ์ด์ง ํ์ ์ข ์ ์ปดํฌ๋ํธ, ์ ํธ ๋ฑ์ ๋ฃ๋ ๊ตฌ์กฐ๋ฅผ ์์ฃผ ์ฐ๊ธฐ๋ ํด์ ๋ ์ต์ํ ๋ฐฉ์์ด๊ธฐ๋ ํ๊ณ .
๊ฐ๋ฐ
๋ฐฑ์๋๋ฅผ ๊ฐ๋ฐํ ๋ ๊ฐ์ฅ ๋ง์ด ์ ๊ฒฝ ์ด ๊ฑด ์๋ฌ์ฒ๋ฆฌ ๋ถ๋ถ์ด์๋ ๊ฒ ๊ฐ๋ค. ์ด๋ ๊ฒ ์ ๊ฒฝ์ด ๊ฒ ์น๊ณ ๋ ๊ฒฐ๊ณผ๊ฐ ์ฉ ๋ง์กฑ์ค๋ฝ์ง ๋ชปํ์ง๋ง, ์๋ฌ๋ฉ์์ง ์ธ๋ถํ ๋ฐ ์์ ์ฒ๋ฆฌํ์ฌ ์ต๋ํ ๊น๋ํ๊ฒ ์์ฑํ๋ ค๊ณ ๋ ธ๋ ฅํ์
๐Lacked
ํ๋์ ์ธ ๋ถ๋ถ ๋ง๊ณ ํ๋ก์ ํธ์ ๋ํ ์์ฌ์ด ์ ์ ์ข ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํจ
- ์๋ฌ ๋ฐํ ์ ์ํ์ฝ๋๋ฅผ ํฌํจํ์ง ์๋๋ค. ์๋ฌ๋ฉ์์ง๋ง ๋ฐํํ๋๋ฐ, ์ํ์ฝ๋ + ์๋ฌ๋ฉ์์ง ๋์ ๋ฐํํ๋๋ก ์ฒ๋ฆฌํด์ผ ํ์ง ์์๋ ์์ฌ์์ด ๋จ์
- ESM๊ณผ CommonJS๋ ์์ง๋ ์ดํด๊ฐ ์๋๋ค. ESM์ ์ฌ์ฉํ๋๋ฐ ์ค๋ฅ๊ฐ ๋๋ฌด ๋ง์ด ๋์, CommonJS์์ import/export ํ์ฉํ๋๋ก ์ค์ ์ ์ฉํ์ฌ ๊ฐ๋ฐํ์๋ค. ์ค๋ฅ๋ ํ์ถํ์ง๋ง, ๊ฐ ๋ชจ๋ ์์คํ ์ ๋ํ ์ถฉ๋ถํ ์ดํด ์์ด ํด๊ฒฐ์๋ง ๋๋ฌด ๊ธ๊ธํ๋ ๊ฒ ๊ฐ์์ ์์ฌ์
- any๋ฅผ ์๊ทผ ๋ง์ด ์ฌ์ฉํ๋ค. ํ์ ์คํฌ๋ฆฝํธ ์ฌ์ฉ ๋ฉด์์ ๋ง์ด ๋ถ์กฑํจ์ด ์์์
- ์ค๊ณ์ ๋ฏธํก. api ์ค๊ณ๋ฅผ ์ ํ๋ค๊ณ ์๊ฐํ๋๋ฐ, ๋ง์ ํ๋ก ํธ ์์ ์ ํ๋ค ๋ณด๋ ๋ถ์กฑํ API๊ฐ ๋๋ฌด ๋ง์๋ค. ํ๋ก ํธ ์์ ์ ํ๋ฉด์ ์ค์๊ฐ์ผ๋ก API๋ฅผ ์ถ๊ฐ ๊ฐ๋ฐํ๋๋ฐ, ์ต๋ํ ๋ง์ ์ ์ ํ๋ก์ฐ๋ฅผ ๊ณ ๋ คํด์ api ์ค๊ณ๋ฅผ ํด์ผ๊ฒ ๋ค๊ณ ๋๋
- ์๊ฐ์ด ์ข ๋จ์์ผ๋ฉด ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์์ํ ๋ฐ ํ๋ ์์ฌ์
๐ฅธLearned
- ๋ฐฑ๋ Service๋ฉฐ controller๋ฉฐ ์ฝ์ด๋ด๋ ๊ทธ๋์ ๋ญ ์ฐจ์ด์ง ์๋ฆฌ์กํ ๋๋์ด ์์๋๋ฐ, ์ด๋ฒ ๋ฐฑ์๋ ๊ฐ๋ฐ์์ service, controller๋ฅผ ๋ถ๋ฆฌํด์ ์จ๋ณด๋ฉด์ ํ์คํ ๊ตฌ์กฐ์ ์ฝ๋ ํ๋ฆ์ ํ์ ํ ์ ์๊ฒ ๋ ๊ฒ ๊ฐ๋ค.
- Prisma๋ฅผ ์ฌ์ฉํด๋ณด์๋ค. SQL๋ก๋ง ์ฒ๋ฆฌํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๊ฐํธํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์์.
๐นLonged for
๊ธํ ๋ถ ๋ค ๊ป์ผ๋ ๋ธ๋ก๊ทธ ์ ๋ฆฌํ๊ธฐ