๋ฉ”์ธ ์ฝ˜ํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ
์ด ๊ฐ€์ด๋“œ๋Š” Sonamu ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์น˜ํ•œ ํ›„ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

์ „์ œ ์กฐ๊ฑด

์„ค์น˜ํ•˜๊ธฐ ๊ฐ€์ด๋“œ๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์‹คํ–‰

Sonamu ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:
  • PostgreSQL - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • API ์„œ๋ฒ„ - ๋ฐฑ์—”๋“œ REST API (Sonamu UI ํฌํ•จ)
  • Web ์„œ๋ฒ„ - ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
1

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์ž‘

ํ”„๋กœ์ ํŠธ์˜ api ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ PostgreSQL ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:
cd myapp/packages/api
pnpm docker:up
์ด ๋ช…๋ น์–ด๋Š” Docker Compose๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด docker ps ๋ช…๋ น์–ด๋กœ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
docker ps ๊ฒฐ๊ณผ
2

API ์„œ๋ฒ„ ์‹คํ–‰

๊ฐ™์€ api ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:
pnpm dev
์„œ๋ฒ„๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์‹œ์ž‘๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:
๐ŸŒฒ Server listening on http://localhost:1028
์ด ๋ช…๋ น์–ด ํ•˜๋‚˜๋กœ ๋‹ค์Œ์ด ๋ชจ๋‘ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค:API ์„œ๋ฒ„๋Š” Hot Module Replacement(HMR)์„ ์ง€์›ํ•˜๋ฏ€๋กœ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‹œ ์ž๋™์œผ๋กœ ์žฌ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” API ์„œ๋ฒ„๊ฐ€ Web ์•ฑ๊นŒ์ง€ ํ†ตํ•ฉํ•˜์—ฌ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Web ๋””๋ ‰ํ† ๋ฆฌ์˜ Vite Dev Server๋ฅผ API ์„œ๋ฒ„์— middleware๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•˜๋‚˜์˜ ํฌํŠธ๋กœ ๋ชจ๋“  ๊ฒƒ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ํ„ฐ๋ฏธ๋„ ์ฐฝ์€ ๊ณ„์† ์—ด์–ด๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. API ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
3

Web ์„œ๋ฒ„ ์‹คํ–‰ (์„ ํƒ์‚ฌํ•ญ)

Web ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•˜๊ฑฐ๋‚˜ Vite์˜ ์ „์ฒด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์ƒˆ ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์—ด๊ณ  web ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ณ„๋„๋กœ ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
cd myapp/packages/web
pnpm dev
Vite ๊ฐœ๋ฐœ ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:
  VITE v5.x.x  ready in xxx ms

  โžœ  Local:   http://localhost:3028/
  โžœ  Network: http://192.168.x.x:3028/
Web ์„œ๋ฒ„๋ฅผ ๋ณ„๋„๋กœ ์‹คํ–‰ํ•˜๋ฉด http://localhost:3028 ๋กœ ์ ‘์†ํ•˜์—ฌ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Web ์„œ๋ฒ„๋Š” /api/* ๊ฒฝ๋กœ ์š”์ฒญ์„ ์ž๋™์œผ๋กœ API ์„œ๋ฒ„(localhost:1028)๋กœ ํ”„๋ก์‹œํ•ฉ๋‹ˆ๋‹ค.
๋‘ ๊ฐ€์ง€ ๊ฐœ๋ฐœ ๋ฐฉ์‹
  • ํ†ตํ•ฉ ๋ชจ๋“œ (๊ถŒ์žฅ): API ์„œ๋ฒ„๋งŒ ์‹คํ–‰ โ†’ localhost:1028๋กœ ๋ชจ๋“  ๊ฒƒ์— ์ ‘๊ทผ
  • ๋ถ„๋ฆฌ ๋ชจ๋“œ: API + Web ๋ณ„๋„ ์‹คํ–‰ โ†’ API๋Š” localhost:1028, Web์€ localhost:3028
๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํ†ตํ•ฉ ๋ชจ๋“œ๋กœ ์ถฉ๋ถ„ํ•˜๋ฉฐ, Web ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ๋•Œ๋งŒ ๋ถ„๋ฆฌ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

์ ‘์† ํ™•์ธ

ํ†ตํ•ฉ ๋ชจ๋“œ (API ์„œ๋ฒ„๋งŒ ์‹คํ–‰ํ•œ ๊ฒฝ์šฐ)

๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค์Œ URL๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
์„œ๋น„์ŠคURL์„ค๋ช…
Web ์•ฑhttp://localhost:1028ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
API ์„œ๋ฒ„http://localhost:1028/apiREST API ์—”๋“œํฌ์ธํŠธ
Sonamu UIhttp://localhost:1028/sonamu-ui์—”ํ‹ฐํ‹ฐ ๊ด€๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค

๋ถ„๋ฆฌ ๋ชจ๋“œ (API + Web ์„œ๋ฒ„ ๋ชจ๋‘ ์‹คํ–‰ํ•œ ๊ฒฝ์šฐ)

์„œ๋น„์ŠคURL์„ค๋ช…
Web ์•ฑhttp://localhost:3028ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
API ์„œ๋ฒ„http://localhost:1028/apiREST API ์—”๋“œํฌ์ธํŠธ
Sonamu UIhttp://localhost:1028/sonamu-ui์—”ํ‹ฐํ‹ฐ ๊ด€๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค
Web ์•ฑ์— ์ ‘์†ํ•˜์—ฌ Sonamu ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

Sonamu UI ๊ธฐ๋Šฅ

๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:1028/sonamu-ui ๋กœ ์ ‘์†ํ•˜๋ฉด ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
  • ์—”ํ‹ฐํ‹ฐ ์ƒ์„ฑ ๋ฐ ํŽธ์ง‘
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ
  • API ์—”๋“œํฌ์ธํŠธ ํ™•์ธ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์‹œ๊ฐํ™”
Sonamu UI

์„œ๋ฒ„ ์ค‘์ง€

๊ฐœ๋ฐœ์„ ๋งˆ์น˜๊ณ  ์„œ๋ฒ„๋ฅผ ์ค‘์ง€ํ•˜๋ ค๋ฉด:
  1. API ์„œ๋ฒ„ (๊ทธ๋ฆฌ๊ณ  Web ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ด๋ผ๋ฉด): ๊ฐ ํ„ฐ๋ฏธ๋„์—์„œ Ctrl + C ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: api ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:
pnpm docker:down
docker:down ๋ช…๋ น์–ด๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ค‘์ง€๋งŒ ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋Š” ๋ณด์กด๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์™„์ „ํžˆ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹จ๊ณ„

๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์ด์ œ ๋‹ค์Œ ๊ฐ€์ด๋“œ๋ฅผ ํ†ตํ•ด Sonamu์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ๋ฐฐ์›Œ๋ณด์„ธ์š”: