Draft โ
๐ก Reference
B2B2C(Business to Business to Consumer) โ
B2B2C๋ ๊ธฐ์ ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ณ , ๊ทธ ๊ธฐ์ ์ ํตํด ์ต์ข ์ฌ์ฉ์๊ฐ ์๋น์ค๋ฅผ ์ด์ฉํ๋ ๊ตฌ์กฐ์ด๋ค.
- ์๋น์ค ์ ๊ณต์ โ ๊ธฐ์ โ ์ต์ข ์ฌ์ฉ์ ํ๋ฆ์ ๊ฐ์ง ๋น์ฆ๋์ค ๋ชจ๋ธ
- ๊ธฐ์ ๋จ์๋ก ์๋น์ค๋ฅผ ์ ๊ณตํ์ง๋ง, ์ค์ ์ฌ์ฉ์๋ ๊ธฐ์ ์์ ์ฌ์ฉ์๋ค์ด๋ค.
- SaaS, ์ฌ๋ด ์๋น์ค, ํ๋ซํผ ์๋น์ค์์ ์์ฃผ ์ฌ์ฉ๋๋ค.
- ex.
- ์๋น์ค ์ด์์ โ ํ์ฌ โ ํ์ฌ ์ง์
- ์๋น์ค ์ด์์ โ ์คํฐ๋ โ ์คํฐ๋ ๋ฉค๋ฒ
- ์๋น์ค ์ด์์ โ ์ปค๋ฎค๋ํฐ โ ์ฌ์ฉ์
๋ฉํฐํ ๋์(Multi-tenancy) โ
๋ฉํฐํ ๋์๋ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ๋ฌ ๊ณ ๊ฐ(ํ ๋ํธ)์ด ๋ ๋ฆฝ๋ ํ๊ฒฝ์ฒ๋ผ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ๊ตฌ์กฐ์ด๋ค.
- ํ๋์ ์๋ฒ / ํ๋์ ์ฝ๋๋ฒ ์ด์ค
- ์ฌ๋ฌ ํ์ฌ / ์กฐ์ง / ๊ทธ๋ฃน์ด ๋์์ ์ฌ์ฉ
- ๋ฐ์ดํฐ๋ ์๋ก ๋ถ๋ฆฌ๋จ
- SaaS์์ ํต์ฌ ๊ตฌ์กฐ
- ex.
- ํ๋์ ์๋น์ค์์ ์ฌ๋ฌ Space ์ด์ ๊ฐ๋ฅ
- ํ์ฌ๋ง๋ค ์ฌ์ฉ์, ๋ชจ์, ๋ฐ์ดํฐ ๋ถ๋ฆฌ
Package Manager โ
ํจํค์ง ๋งค๋์ ๊ฐ ํ๋ ์ผ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํจํค์ง๋ฅผ ์ด๋์ ๊ฐ์ ธ์ค๋์ง (registry)
- ๊ฐ์ ธ์จ ๊ฑธ ์ด๋ป๊ฒ ์ ์ฅํ๋์ง (node_modules ๊ตฌ์กฐ)
์ด ๋ ๊ฐ์ง ๋ฐฉ์์ ์ฐจ์ด๊ฐ ์ฑ๋ฅ๊ณผ ๋ชจ๋ ธ๋ ํฌ ์์ ์ฑ ์ฐจ์ด๋ก ์ด์ด์ง๋ค.
npm vs yarn vs pnpm vs bun โ
์ ๋ถ ์๋ฐ์คํฌ๋ฆฝํธ ํจํค์ง ๋งค๋์ ์ง๋ง, ์ค์น ๋ฐฉ์ยท์๋ยท๋์คํฌ ์ฌ์ฉ๋ยท๋ชจ๋ ธ๋ ํฌ ์นํ์ฑยทํธํ์ฑ์์ ์ฐจ์ด๊ฐ ์๋ค.
| ๋๊ตฌ | ๋๋ | ์ฅ์ | ์์ฌ์ด ์ | ์ถ์ฒ ์ํฉ |
|---|---|---|---|---|
| npm | ๊ธฐ๋ณธ๊ฐ | Node ์ค์นํ๋ฉด ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ, ๊ฐ์ฅ ๋ณดํธ์ | ์๋/๋์คํฌ ํจ์จ์ ์๋์ ์ผ๋ก ํ๋ฒ | ์ ๋ฌธ, ์์ ํ๋ก์ ํธ, ๋ณ ์ค์ ์์ด ์์ |
| yarn | ๊ธฐ๋ฅ ๋ง์ ์์ ํ | ์ํฌ์คํ์ด์ค ๊ฐํจ, PnP/Zero-install ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ | ๊ฐ๋ ์ด ์กฐ๊ธ ๋ง๊ณ ํ ์ ์ ํ์ | ๋ชจ๋ ธ๋ ํฌ, ์๊ฒฉํ ์์กด์ฑ ๊ด๋ฆฌ |
| pnpm | ํจ์จ ํนํ | ๋น ๋ฅด๊ณ ๋์คํฌ ์ ์ฝ ํผ, ๋ชจ๋ ธ๋ ํฌ์ ๊ฐํจ | ์ผ๋ถ ์ค๋๋ ํจํค์ง์ ๊ถํฉ ์ด์ ๊ฐ๋ฅ | ์ค๋ฌด ํ ํ๋ก์ ํธ, ๋ชจ๋ ธ๋ ํฌ |
| bun | ์ด๊ณ ์ ์ ํฅ ๊ฐ์ | ์ค์น/์คํ ๋น ๋ฆ, ๋ฐํ์+๋ฒ๋ค๋ฌ+ํ ์คํธ ํฌํจ | Node ์ํ๊ณ 100% ํธํ์ฑ์ ๊ณ์ ๊ฐ์ ์ค | ๊ฐ์ธ ํ๋ก์ ํธ, ์คํ์ /๋น ๋ฅธ ๊ฐ๋ฐ |
๋ชจ๋ ธ๋ ํฌ โ
๋ชจ๋ ธ๋ ํฌ๋ ์ฌ๋ฌ ํ๋ก์ ํธ(์ด๋๋ฏผ, ์ ์ ํ์ด์ง, ๊ณตํต UI ์ปดํฌ๋ํธ ๋ฑ)๋ฅผ ํ๋์ ์ ์ฅ์์์ ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ค.
๋ชจ๋ ธ๋ ํฌ ํด Turborepo โ
์ Turborepo์ธ๊ฐ?: โ
Next.js๋ฅผ ๋ง๋ Vercel์์ ๊ด๋ฆฌํ๋ ๋๊ตฌ์ด๋ค.
์ค์ ์ด ๋งค์ฐ ์ฝ๊ณ , ์บ์ฑ ๊ธฐ๋ฅ์ด ๊ฐ๋ ฅํด์ ํ ๋ฒ ๋น๋ํ๊ฑฐ๋ ํ
์คํธํ ๋ถ๋ถ์ ๋ค์ ์ ํด๋ ๋๋ค. (์๊ฐ ๋จ์ถ์ ํต์ฌ)
๊ตฌ์กฐ ์์: โ
apps/user: ์ ์ ์ฉ ์๋น์ค (Next.js)apps/admin: ์ด๋๋ฏผ ๊ด๋ฆฌ ํ์ด์ง (Next.js)packages/ui: ๊ณตํต ๋์์ธ ์์คํ (Shadcn ๋ฑ)packages/utils: ๊ณตํต ํจ์ (API ํต์ ๋ก์ง ๋ฑ)
Next.js๋ฅผ ์จ์ผ ํ๋ ์ด์ (Server Side Rendering) โ
- SEO: Next.js์ SSR(์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง)์ ๊ฒ์ ์์ง ์ต์ ํ์ ํ์์ ์ ๋๋ค.
- API ๋ณด์: B2B2C ๊ตฌ์กฐ์์ ํ์ฌ๋ณ ๊ถํ ์ฒดํฌ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์๋ฒ์์ ๋ฏธ๋ฆฌ ์ฒ๋ฆฌํ ๋ค ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ด์ค ์ ์์ด ๋ณด์์ ์ ๋ฆฌํฉ๋๋ค.
- ํ์คํ ๊ฐ๋ฅ์ฑ: ์ถ๊ฐ ๊ธฐ๋ฅ(ํ์ํ์, ์ผ์ ๊ด๋ฆฌ)์ ๊ตฌํํ ๋ API Routes๋ฅผ ํตํด ๊ฐ๋จํ ์๋ฒ ๋ก์ง์ ๋ฐ๋ก ์งค ์ ์์ต๋๋ค.
node_modules ์ ์ฅ ๋ฐฉ์ โ
npm / yarn classic (v1) โ
ํ๋ก์ ํธA/node_modules/react (100MB)
ํ๋ก์ ํธB/node_modules/react (100MB)
ํ๋ก์ ํธC/node_modules/react (100MB)
โ ๋๊ฐ์ ํ์ผ์ด ํ๋ก์ ํธ ์๋งํผ ์ค๋ณต ์ ์ฅpnpm โ
~/.pnpm-store/react@18 (100MB, ๋ฑ 1๋ฒ๋ง)
โ
ํ๋ก์ ํธA/node_modules/react โ ์ฌ๋งํฌ
ํ๋ก์ ํธB/node_modules/react โ ์ฌ๋งํฌ
ํ๋ก์ ํธC/node_modules/react โ ์ฌ๋งํฌ
โ ์ค์ ํ์ผ์ 1๊ฐ, ๋๋จธ์ง๋ ์ฐธ์กฐ๋งyarn berry (v2+, PnP ๋ชจ๋) โ
.yarn/cache/react.zip
(์์ถ ์ํ๋ก ๋ณด๊ด)
โ
node_modules
ํด๋
์์ฒด๊ฐ
์์
โ
๋ฐํ์์
zip์
์ง์
์ฝ์;npm โ
npm์ Node.js์ ๊ธฐ๋ณธ ํฌํจ๋๋ ๊ฐ์ฅ ํ์ค์ ์ธ ํจํค์ง ๋งค๋์ ๋ค. ๊ทธ๋์ ๋ณ๋ ์ค์น ์์ด ๋ฐ๋ก ์ธ ์ ์๊ณ , ์ํ๊ณ ๊ธฐ์ค์ ์ญํ ์ ํ๋ค. npm์ ์บ์๋ฅผ content-addressable cache ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ๋ค.
- Node ๊น๋ฉด ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
- ํธํ์ฑ ๊ฑฑ์ ์ ๊ฐ์ฅ ์ ๊ฒ ํด๋ ๋จ
- pnpm์ด๋ bun๊ณผ ๋น๊ตํ๋ฉด ์ค์น ์ฒด๊ฐ์ด ๋ ๋น ๋ฅผ ์ ์์
- ๋๊ท๋ชจ ๋ชจ๋ ธ๋ ํฌ์์๋ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ๋ ํธํ ๊ฒฝ์ฐ๊ฐ ๋ง์