์ง๋ ์ธํ ํธ์์ 8๋ฒ์ "promote ํ์ main ๋ธ๋์น๋ production์ ์ํ ๋ธ๋์น๊ฐ ๋๊ณ main ๋ธ๋์น์ ๋ํด ์ง์ ์ ์ธ ์คํค๋ง ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ค. ์ด ๊ธ์ ์์ฑํ๊ธฐ ์ ์ ํ ์คํธ ์ผ์ ๋ง๋ค์ด ๋ณธ DB์์ ์ด ๋ธ๋์น์ ๋ํ ๊ฐ๋ ์ ์ ๋ชจ๋ฅด๊ณ promoteํ ์ํ์์ ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ๋ ค๊ณ ํด์ ์๋ฌ๋ก ๋นํฉํ๋ ์ ์ด ์๋ค. " ๋ผ๊ณ ์์ฑํ์๋ค. ๊ทธ๋ผ ์ด๋ฏธ ๋ธ๋์น๋ฅผ promote๋ฅผ ํ๋๋ฐ ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํด์ผํ๋ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ํด์ผ ํ๋๊ฐ์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ํด๋ณด๋ ค๊ณ ํ๋ค. ๋ฐ๋จ์์๋ ์ด ๊ธ์ ์ ์์ฑํ๊ฒ ๋์๋์ง์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ์ฝ์ง ์์๋ ๋ฌด๋ฐฉํ๋ค.
๋ฐ๋จ
์ง๋ ํธ์๋ ๋จ์ํ ์ธํ ์ ์ํ ๊ธ์ด์๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ ์ํ๋ก User ๋ชจ๋ธ๋ง ์์ฑํ์๋๋ฐ ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ Article์ด๋ผ๋ ๋ชจ๋ธ์ ์์ฑํ์๋ค. ์๋์ ์ผ๋ถ ํ๋์ ๋ํด์ ๋ณด์ฌ์ค๋ค.
title ํ๋๋ฅผ varchar(255)๋ก ์ ํ์ ๋์๋ค. Prisma๊ฐ ์ต์ํ์ง ์์ ๋๋ content์ ์๋ฌด๊ฒ๋ ์ ์ด์ฃผ์ง ์์ผ๋ฉด ์ ํ์ ๋์ง ์๋๋ค๊ณ ์๊ฐํ๋ค...๐ฌ ์ด ์ํ๋ก ์ด๋ฏธ promote๋ฅผ ํด๋ฒ๋ ธ๊ณ ... ํ ์คํธ ํด๋ณด๋ ค๊ณ Postman์ ์ฌ์ฉํ์ฌ POST ์์ฒญ์ ๋ณด๋ด๋ณด๋ content๊ฐ ๋๋ฌด ๊ธธ๋ค๋ ๊ฒ์ด์๋ค. ์์ผ๊น... ๊ตฌ๊ธ๋ง์ ํ๋ค๋ณด๋ ์๋์ ํ์ด์ง๋ฅผ ๋ฐ๊ฒฌํ๋ค. (๋งํฌ)
MySQL์ ๊ฒฝ์ฐ String ํ์ ์์ default๋ varchar(191)์ด์๊ณ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋๋ฌด ๊ธธ๋ค๋ ์๋ฌ๊ฐ ๋ฌ ๊ฒ์ด์๋ค. ๊ทธ๋์ ์๋์ ๊ฐ์ด @db.Text๋ก ์์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ PlanetScale์ main ๋ธ๋์น์์ `npx prisma db push` ๋ฅผ ์คํํ๋ฉด ์ด๋ฐ์ ์ธ๊ธํ๋ ์๋ฌ๊ฐ ์๋์ ๊ฐ์ด ๋ฌ๋ค.
ํด๊ฒฐ
1. ๋ธ๋์น ์์ฑํ๊ธฐ (CLI ํน์ GUI ๋ฐฉ์)
์์ ์๋ฌ ๋ฉ์์ง์์๋ ๋ณผ ์ ์๋ฏ์ด main ๋ธ๋์น๋ฅผ ์ด๋ฏธ promoteํ๋ค๋ฉด main ๋ธ๋์น์์๋ ๋ ์ด์ ์ง์ ์ ์ผ๋ก DDL ์์ ์ด ๋ถ๊ฐ๋ฅํ๋ค. Git์ ์ฌ์ฉํด๋ณด์ ๋ถ๋ค์ด๋ผ๋ฉด ์ข ๋ ์ต์ํ ๋ธ๋์น๊ฐ ์ฌ๊ธฐ์๋ ๋ฑ์ฅํ๋ค. ์คํค๋ง ๋ณ๊ฒฝ ์์ ์ ์ํ ๋ธ๋์น๋ฅผ ์๋ก ํ๋ ์์ฑํด์ฃผ์ด์ผ ํ๋ค. CLI / GUI ๋ฐฉ์ ์ค ํธํ ๋ฐฉ์ ํ ๊ฐ์ง๋ฅผ ์ ํํ์ฌ ์งํํ๋ฉด๋๋ค. ์ฐธ๊ณ ๋ก ๋ธ๋์น๋ฅผ ์์ฑํ๋ฉด main ๋ธ๋์น์ ์๋ ๋ฐ์ดํฐ๋ ๋ณต์ฌ๋์ง ์๊ณ ์คํค๋ง๋ง ๋ณต์ฌ๋๋ค.
CLI๋ก ์์ฑํ๋ ๋ฐฉ์์ ์๋์ ๊ฐ๋ค.
์๋์ ๊ฐ์ด PlanetScale ์น์ฌ์ดํธ์์ ๋ก๊ทธ์ธ ํ ์์ ์ด ์์ฑํ DB๋ฅผ ์ ํํด ํด๋น ๋์๋ณด๋์์๋ New Branch ๋ฒํผ์ ํด๋ฆญํด ์๋์ ๋ด์ฉ์ ์ ๋ ฅํด์ฃผ๊ณ ์์ฑํ ์ ์๋ค.
2. ์๋ก ์์ฑํ ๋ธ๋์น์ ์ฐ๊ฒฐ
--port 3309๋ฅผ ํ๋๊ทธ๋ก ์ง์ ํด์ค ์ด์ ๋ ์ด์ ์ด๊ธฐ ์ธํ ๊ด๋ จ ๊ธ์์๋ 3309์ผ๋ก ์ ํด์ฃผ์๊ณ .env ํ์ผ์๋ 3309์ผ๋ก DATABASE_URL๋ก ์ ์ฅํด์ฃผ์๊ธฐ ๋๋ฌธ์ด๋ค. --port ํ๋๊ทธ๋ฅผ ๋ถ์ด์ง ์์ผ๋ฉด ๋ค๋ฅธ ํฌํธ๋ก ์ฐ๊ฒฐ์ด ์ด๋ฃจ์ด์ง๊ณ .env ํ์ผ์์ ํด๋น ํฌํธ ๋ฒํธ๋ก ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋๋ค. ์ฐ๊ฒฐ์ด ์ ์ด๋ฃจ์ด์ก๋ค๋ฉด ์ฑ๊ณต ๋ฉ์์ง๋ฅผ ์ฝ์์์ ํ์ธํ ์ ์์ ๊ฒ์ด๋ค.
Prisma์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ผ๋ก ์๋ก์ด ๋ธ๋์น์ ๋ฐ์ดํฐ ์ฝ๊ฒ ๋ฃ๋ ๋ฐฉ๋ฒ ํ์ธํ๊ธฐ๐
3. ์๋ก์ด ๋ธ๋์น์ ๋ณ๊ฒฝ๋ schema push ํ๊ณ ํ์ธํ๊ธฐ
main ๋ธ๋์น์ push ํ๋ ๋ช ๋ น์ด์ ๋์ผํ๋ค.
์๋์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ Prisma Studio์์ ํ์ธํ ์ ์๋๋ฐ ์ฝ์์ ๋จ๋ ์ฃผ์์์ ์ ์ํ์ฌ ๊ตฌ์กฐ๊ฐ ๋ณ๊ฒฝ๋์๋์ง ๋ณด๊ณ ์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด๋ณผ ์ ๋ ์๋ค.
4. ์๋ก์ด ๋ธ๋์น์ ๋ณ๊ฒฝ ๋ด์ฉ์ main ๋ธ๋์น์ deployํ๊ธฐ
๋ณ๊ฒฝํ ๋ด์ฉ์ production์๋ ์ ์ฉํ๋ ค๋ฉด ์ด๋ฏธ promote๋ main ๋ธ๋์น์ deployํด์ผํ๋ค. Git์์๋ ๋ด๊ฐ ๋ธ๋์น๋ฅผ ๋ฐ์ ์์ ํ๊ณ mergeํ๊ธฐ ์ํด pull request๋ฅผ ๋ณด๋ด๋ฏ PlanetScale์์๋ deploy request๋ฅผ ํด์ผํ๋ค. (์ด๊ฒ์ ๋ด๊ฐ ์ดํดํ ๋ถ๋ถ์ผ๋ก ํ๋ฆฐ ๋ถ๋ถ์ ๋ํด์๋ ๋๊ธ๋ก ํผ๋๋ฐฑ ๋ถํํ๋ค.) ์ด ๊ณผ์ ์ GUI๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค. (CLI๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ณต์ ๋ฌธ์๋ฅผ ํตํด ํ์ธ ๊ฐ๋ฅํ๋ค. )
PlanetScale์ ๋์๋ณด๋์์ ๋ด๊ฐ ์์ฑํ DB๋ฅผ ํด๋ฆญํ๊ณ ๋ค์ด๊ฐ Branches ํญ์ ๋๋ฅด๋ฉด ์๋์ ๊ฐ์ ํ๋ฉด์ด ๋ณด์ผ ๊ฒ์ด๋ค.
์์ ์ ์ํด ์๋ก ์์ฑํ ๋ธ๋์น๋ฅผ ํด๋ฆญํ๊ณ ๋ค์ด๊ฐ๋ฉด ์๋์ ๊ฐ์ด deploy request๋ฅผ ํ ์ ์๋ ํ๋ฉด์ด ๋์ค๋๋ฐ comments๋ ์ ํ์ฌํญ์ด๋ผ๊ณ ํ๋ ์์์ ์ ๋ ฅํ๊ฑฐ๋ ์๋ตํ๊ณ Create deploy request๋ฅผ ํด๋ฆญํ๋ค.
์๋์ ๊ฐ์ด Deploy changes ๋ฒํผ์ด ํ์ฑํ๋๋ฉด ๋ฌธ์ ์์ด main ๋ธ๋์น๋ก deploy ๋ ์ ์๋ค๋ ๊ฒ์ด๋ค. ALTER TABLE์ ํด๋ฆญํด๋ณด๋ฉด ์ด๋ค SQL์ด ์คํ๋๋์ง๋ ํ์ธํ ์ ์๋ค.
์๋์ ๊ฐ์ด deploy๊ฐ ์๋ฃ๋ ํ์๋ ๋ธ๋์น๋ฅผ ์ญ์ ํ ์ ์๋ค. ์ญ์ ํ์ง ์๊ณ ๊ฐ๋ฐ ๋ธ๋์น๋ก ๊ณ์ ์ฌ์ฉํ ์๋ ์๋ค.
ํผ์ ์งํํ๋ ์ฌ์ด๋ ํ๋ก์ ํธ๋ก ํ ๊ณ์ ์ด ์๋๋ค๋ณด๋ deploy request์์๋ ๋ณ๋์ ์น์ธ ์ ์ฐจ๊ฐ ์์ด ์งํ๋๋ ๊ฒ ๊ฐ์๋ฐ ํ์ผ ๊ฒฝ์ฐ ํ๋ก์ฐ๊ฐ ๋ค๋ฅผ ๊ฒ ๊ฐ๋ค.
ํน์ ๋์ฒ๋ผ ๋ธ๋์น๋ ์์ฑํ๋๋ฐ ๋ธ๋์น๋ฅผ ์ด๋ป๊ฒ ๋ฐ๊พธ๋์ง, ์ด๋ป๊ฒ deployํ๋ ๊ฒ์ธ์ง ๋ชฐ๋๋ ๋ถ/๋ต๋ตํ๋ ๋ถ๋ค์๊ฒ ์กฐ๊ธ์ด๋๋ง ๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋ค.
์ฐธ๊ณ ๋ก ์ด ์ ํ๋ธ ๋์์๋ ์ฐธ ๋์์ด ๋ง์ด ๋์๋ค.
'Side project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ์ ๊ธฐ๋ก] NextAuth๋ก ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ (with Prisma) (0) | 2022.05.15 |
---|---|
[ํ์ ๊ธฐ๋ก] Prisma Seeding ๐ฑ (0) | 2022.05.09 |
[ํ์ ๊ธฐ๋ก] Next.js + Prisma + PlanetScale ์ธํ ํ๊ธฐ (Vercel ๋ฐฐํฌ) (0) | 2022.05.02 |
[ํ์ ๊ณํ] ์๋ก์ด ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์์ํด๋ณด์ (0) | 2022.04.29 |
[ํ์ ๊ธฐ๋ก] ๋ด์ค๋ ํฐ ๋ชจ์ ์ฌ์ดํธ NEWใปLEใปKA (0) | 2021.08.10 |