Skip to main content

๐Ÿค Vivid-AI ํ˜‘์—… ๋ฐ ์˜จ๋ณด๋”ฉ ๊ฐ€์ด๋“œ

Vivid-AI ํ”„๋กœ์ ํŠธ์— ํ•ฉ๋ฅ˜ํ•˜์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ๐ŸŽ‰ ์ด ๋ฌธ์„œ๋Š” ์ƒˆ๋กœ์šด ํŒ€์›์ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•˜๊ณ , ๊ธฐ์กด ํŒ€์›๋“ค๊ณผ ํšจ์œจ์ ์œผ๋กœ ํ˜‘์—…ํ•˜๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


1. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋ฐ ๊ฐœ์š”โ€‹

vivid-ai๋Š” ์ „์ฒด ํ”„๋กœ์ ํŠธ๋ฅผ ์•„์šฐ๋ฅด๋Š” ์ƒ์œ„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ(Parent Repository)์ด๋ฉฐ, ๊ฐ ์„œ๋น„์Šค๋Š” Git Submodule ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“ˆ๋ช…์—ญํ•  ๋ฐ ์„ค๋ช…์‹คํ–‰ ํ•„์š”
backend-vivid-aiNest.js ๊ธฐ๋ฐ˜ API ์„œ๋ฒ„. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ์ธ์ฆ, DB/Redis ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.โœ…
frontend-vivid-aiNext.js ๊ธฐ๋ฐ˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜. ์‚ฌ์šฉ์ž UI/UX๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.โœ…
post-processing-workerPython ๊ธฐ๋ฐ˜ ํ›„์ฒ˜๋ฆฌ ์›Œ์ปค. S3 raw/ ๊ฒฐ๊ณผ๋ฌผ์˜ ์ธ๋„ค์ผ/preview๋ฅผ ๋งŒ๋“ค๊ณ  creations/์— ์ตœ์ข… ๊ฒฐ๊ณผ ์„ธํŠธ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.โœ…
ai-serverComfyUI์™€ ai-node-agent๋กœ ๊ตฌ์„ฑ๋œ ์ƒ์„ฑ ์‹คํ–‰๋ถ€. local์—์„œ๋Š” Docker Compose๋กœ ์‹คํ–‰ํ•˜๋ฉฐ, API ๋…ธ๋“œ ๊ธฐ๋ฐ˜ workflow๋ฅผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.โœ…
docs-vivid-aiDocusaurus ๊ธฐ๋ฐ˜ ๋ฌธ์„œ ์ €์žฅ์†Œ. ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ๊ธฐ์ˆ  ๋ฌธ์„œ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.โŒ

2. ํ•„์ˆ˜ ์ค€๋น„ ์‚ฌํ•ญ (Prerequisites)โ€‹

์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ๋„๊ตฌ๋“ค์„ ์„ค์น˜ํ•˜๊ณ  ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ›  ์„ค์น˜ ๋„๊ตฌโ€‹

  1. Node.js: v22.20.0 ๋ฒ„์ „์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. (nvm ์‚ฌ์šฉ ๊ถŒ์žฅ)
  2. Docker Desktop: ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(PostgreSQL) ๋ฐ ๊ฐ์ข… ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์„ ์œ„ํ•ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.
  3. Git: ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ.
  4. PgAdmin4 (์„ ํƒ): ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ GUI ๋„๊ตฌ.

๐Ÿ”‘ ๋ณด์•ˆ ๋ฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์š”์ฒญโ€‹

๋ณด์•ˆ์ƒ Git์— ํฌํ•จ๋˜์ง€ ์•Š๋Š” ๋ฏผ๊ฐํ•œ ์ •๋ณด๋“ค์€ ๊ธฐ์กด ํŒ€์›(๊ด€๋ฆฌ์ž)์—๊ฒŒ ์ง์ ‘ ์š”์ฒญํ•˜์—ฌ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. .env ํŒŒ์ผ๋“ค:
    • backend-vivid-ai/.env (DB ์ ‘์† ์ •๋ณด, AWS ํ‚ค ๋“ฑ)
    • frontend-vivid-ai/.env.local (API URL, ์ธ์ฆ/๊ฒฐ์ œ ๊ด€๋ จ ๊ณต๊ฐœ ์„ค์ • ๋“ฑ)
    • ai-server/.env
    • post-processing-worker/.env
  2. AWS local ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ ๊ถŒํ•œ:
    • local ๊ฐœ๋ฐœ๋„ ์‹ค์ œ AWS SQS/S3๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • vivid-ai-computation-queue-local, vivid-ai-post-processing-worker-queue-local, local media bucket์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ credential์„ ์š”์ฒญํ•˜์„ธ์š”.
    • local media bucket์€ ์„œ์šธ ๋ฆฌ์ „(ap-northeast-2)์— ์ƒ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, raw/, creations/, generation/source/, generation/work-input/, temp/ ๋“ฑ prefix๋กœ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์„ธ๋ถ€ ๊ธฐ์ค€์€ S3 media bucket ์„ค์ •์„ ํ™•์ธํ•˜์„ธ์š”.
    • local credential์€ prod queue/bucket์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œํ•œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ • ๋ฐ ์‹คํ–‰ (Step-by-Step)โ€‹

Step 1. ์ €์žฅ์†Œ ํด๋ก  ๋ฐ ์„œ๋ธŒ๋ชจ๋“ˆ ์ดˆ๊ธฐํ™”โ€‹

# 1. ๋ฉ”์ธ ์ €์žฅ์†Œ ํด๋ก  (Organization ์ฃผ์†Œ ํ™•์ธ)
git clone https://github.com/vivid-ai-org/vivid-ai.git

# 2. ํ”„๋กœ์ ํŠธ ํด๋” ์ด๋™
cd vivid-ai

# 3. ์„œ๋ธŒ๋ชจ๋“ˆ ์ดˆ๊ธฐํ™” ๋ฐ ์—…๋ฐ์ดํŠธ (ํ•„์ˆ˜)
git submodule update --init --recursive

Step 2. Local infrastructure ์‹คํ–‰โ€‹

๋กœ์ปฌ ๊ฐœ๋ฐœ์€ Docker Compose๋กœ Postgres, Redis, ComfyUI, ai-node-agent, post-processing-worker๋ฅผ ์‹คํ–‰ํ•˜๊ณ , SQS/S3๋งŒ AWS cloud resource๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ๊ธฐ์ค€์€ ํ˜„์žฌ ๊ถŒ์žฅ ์ธํ”„๋ผ ํ”Œ๋žœ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Step 3. ๋ชจ๋“ˆ๋ณ„ ์‹คํ–‰โ€‹

๐Ÿ–ฅ๏ธ Backend (Nest.js)โ€‹

cd backend-vivid-ai

# 1. ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(PostgreSQL) ์‹คํ–‰
docker-compose up -d

# 2. ์˜์กด์„ฑ ์„ค์น˜
npm install

# 3. ์„œ๋ฒ„ ์‹คํ–‰
npm run start
  • ์„œ๋ฒ„ ์ฃผ์†Œ: http://localhost:3000
  • API ๋ฌธ์„œ: http://localhost:3000/api-docs

๐ŸŽจ Frontend (Next.js)โ€‹

cd frontend-vivid-ai

# 1. ์˜์กด์„ฑ ์„ค์น˜
npm install

# 2. ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰
npm run start
  • ์›น ์ฃผ์†Œ: http://localhost:4000

โš™๏ธ Post-Processing Worker (Python)โ€‹

cd post-processing-worker

# Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰
docker-compose up -d

๐Ÿง  AI Server (ComfyUI + ai-node-agent)โ€‹

cd ai-server

# ComfyUI์™€ ai-node-agent ์‹คํ–‰
docker compose up -d --build

4. Git ๋ธŒ๋žœ์น˜ ์ „๋žต ๋ฐ ํ˜‘์—… ํ”Œ๋กœ์šฐโ€‹

์•ˆ์ •์ ์ธ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์—„๊ฒฉํ•œ ๋ธŒ๋žœ์น˜ ์ „๋žต์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

๐ŸŒณ ๋ธŒ๋žœ์น˜ ์ข…๋ฅ˜โ€‹

  • prod: ์šด์˜(Production) ๋ฐฐํฌ์šฉ ๋ธŒ๋žœ์น˜. ๊ฐ€์žฅ ์•ˆ์ •์ ์ธ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
  • dev: ๊ฐœ๋ฐœ(Development) ํ†ตํ•ฉ ๋ฐ ํ…Œ์ŠคํŠธ์šฉ ๋ธŒ๋žœ์น˜.
  • feature/*: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์šฉ (์˜ˆ: feature/login-ui).
  • fix/*: ๋ฒ„๊ทธ ์ˆ˜์ •์šฉ.

๐Ÿ”„ ์ž‘์—… ์ˆœ์„œ (Workflow) ์ƒ์„ธโ€‹

1. ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ (Start) ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ(Feature)์ด๋‚˜ ๋ฒ„๊ทธ ์ˆ˜์ •(Fix)์„ ์‹œ์ž‘ํ•  ๋•Œ๋Š” ๋ฌด์กฐ๊ฑด ์ตœ์‹  prod์—์„œ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

# 1. prod ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ ๋ฐ ์ตœ์‹ ํ™”
git checkout prod
git pull origin prod

# 2. ์ž‘์—… ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ (๋ช…๋ช…๊ทœ์น™: feature/๊ธฐ๋Šฅ๋ช…, fix/๋ฒ„๊ทธ๋ช…)
git checkout -b feature/new-dashboard-ui

2. ์ž‘์—… ๋ฐ ์ปค๋ฐ‹ (Work) ๋กœ์ปฌ์—์„œ ์ž‘์—…์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋Š” Conventional Commits ๊ทœ์น™์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ˆ: feat: ์ƒˆ๋กœ์šด ๋Œ€์‹œ๋ณด๋“œ ๋ ˆ์ด์•„์›ƒ ์ ์šฉ, fix: ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํด๋ฆญ ๋ถˆ๊ฐ€ ๋ฌธ์ œ ์ˆ˜์ •

3. ๊ฐœ๋ฐœ ์„œ๋ฒ„ ๋ฐฐํฌ ๋ฐ ํ…Œ์ŠคํŠธ (Test on Dev) ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ๊ฐœ๋ฐœ ์„œ๋ฒ„(Dev)์— ๋ฐ˜์˜ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

# 1. dev ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ ๋ฐ ์ตœ์‹ ํ™”
git checkout dev
git pull origin dev

# 2. ์ž‘์—… ๋ธŒ๋žœ์น˜๋ฅผ dev์— ๋ณ‘ํ•ฉ (๋ฐ˜๋“œ์‹œ --no-ff ์‚ฌ์šฉ)
git merge --no-ff feature/new-dashboard-ui
# (์ถฉ๋Œ ๋ฐœ์ƒ ์‹œ ํ•ด๊ฒฐ ํ›„ commit)

# 3. dev ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ํ‘ธ์‹œ (CI/CD ์ž๋™ ๋ฐฐํฌ ํŠธ๋ฆฌ๊ฑฐ)
git push origin dev

๐Ÿšจ ์ฃผ์˜: ์ด๋•Œ feature/new-dashboard-ui ๋ธŒ๋žœ์น˜๋Š” ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Prod ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

4. ์šด์˜ ์„œ๋ฒ„ ๋ฐฐํฌ (Release to Prod) Dev ํ™˜๊ฒฝ์—์„œ ๊ฒ€์ฆ์ด ์™„๋ฃŒ๋œ ๋ธŒ๋žœ์น˜๋งŒ Prod์— ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

# 1. prod ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ ๋ฐ ์ตœ์‹ ํ™”
git checkout prod
git pull origin prod

# 2. ๊ฒ€์ฆ๋œ ์ž‘์—… ๋ธŒ๋žœ์น˜๋ฅผ prod์— ๋ณ‘ํ•ฉ
git merge --no-ff feature/new-dashboard-ui

# 3. prod ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ํ‘ธ์‹œ
git push origin prod

# 4. (์„ ํƒ) ์ž‘์—… ๋ธŒ๋žœ์น˜ ์‚ญ์ œ
git branch -d feature/new-dashboard-ui

5. ํ”„๋กœ์ ํŠธ ์ปจ๋ฒค์…˜ (Conventions)โ€‹

๐Ÿ“š ์ฝ”๋“œ ์Šคํƒ€์ผ ๋ฐ ํฌ๋งทํŒ…โ€‹

  • ์Šคํƒ€์ผ๋ง: **MUI (Material UI)**์™€ sx props๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํƒ€์ผ๋งํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฆฐํŒ… ๋ฐ ํฌ๋งทํŒ…: ESLint์™€ Prettier ์„ค์ •์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • VS Code ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ: ์ผ๊ด€๋œ ์ฝ”๋“œ ์Šคํƒ€์ผ ์œ ์ง€๋ฅผ ์œ„ํ•ด ๋‹ค์Œ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜๋ฅผ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
      • ESLint: ์ฝ”๋“œ์—์„œ ๋ฐœ๊ฒฌ๋œ ๋ฌธ์ œ(๋ฒ„๊ทธ, ์Šคํƒ€์ผ ๋ฌธ์ œ ๋“ฑ)๋ฅผ ์ฆ‰์‹œ ์‹œ๊ฐ์ ์œผ๋กœ ํ”ผ๋“œ๋ฐฑํ•ด ์ค๋‹ˆ๋‹ค.
      • Prettier - Code formatter: ํŒŒ์ผ์„ ์ €์žฅํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ฝ”๋“œ ํฌ๋งทํŒ…์„ ํ•ด์ค๋‹ˆ๋‹ค.
    • settings.json์— editor.formatOnSave: true ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๋ฉด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ํด๋” ๊ตฌ์กฐโ€‹

  • src/features ํด๋” ํ•˜์œ„์— ๊ธฐ๋Šฅ๋ณ„๋กœ(์˜ˆ: auth, gallery, generation) ์ฝ”๋“œ๋ฅผ ๋ชจ์•„๋‘๋Š” Feature-based ๊ตฌ์กฐ๋ฅผ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค.

6. ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ ๋ฐฑ์—”๋“œ ์—ฐ๋™ ๊ฐ€์ด๋“œ (Core Features)โ€‹

UI/UX ๊ตฌํ˜„์€ ์ž์œ ๋กญ๊ฒŒ ์ง„ํ–‰ํ•˜์‹œ๋˜, ๋ฐฑ์—”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ํ•ต์‹ฌ ๋กœ์ง์€ ์•„๋ž˜ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๊ธฐ์กด ์•„ํ‚คํ…์ฒ˜์™€ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•ด ์ฃผ์„ธ์š”.

๐Ÿ— 1. ๋™์  ํผ(Dynamic Form) ์ƒ์„ฑ ๋ฐ ์ œ์ถœโ€‹

์šฐ๋ฆฌ ์„œ๋น„์Šค๋Š” ๊ณ ์ •๋œ ์ž…๋ ฅ ํผ์ด ์•„๋‹Œ, ComfyUI ์›Œํฌํ”Œ๋กœ์šฐ ํ…œํ”Œ๋ฆฟ์— ๋”ฐ๋ผ ์ž…๋ ฅ ํ•„๋“œ๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

  1. ํ…œํ”Œ๋ฆฟ ์กฐํšŒ: GET /api/v1/workflows/:id API๋ฅผ ํ†ตํ•ด ํ…œํ”Œ๋ฆฟ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  2. ์Šคํ‚ค๋งˆ ํŒŒ์‹ฑ: ์‘๋‹ต ๋ฐ์ดํ„ฐ ์ค‘ userInputs ํ•„๋“œ(JSON Schema)๋ฅผ ๋ถ„์„ํ•˜์—ฌ UI๋ฅผ ๋ Œ๋”๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • widget: text (Input), number (Slider/Input), combo (Select) ๋“ฑ
    • min, max: ์ˆซ์ž ์ž…๋ ฅ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฒ”์œ„
  3. ์ƒ์„ฑ ์š”์ฒญ: ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’๋“ค์„ ๋ชจ์•„ modifications ๊ฐ์ฒด๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
    • API: POST /api/v1/generation/from-template
    • Body ์˜ˆ์‹œ:
      {
      "workflowId": "...",
      "modifications": {
      "seed": 12345,
      "prompt": "A futuristic city",
      "cfg": 7.5
      }
      }

๐Ÿ–ผ๏ธ 2. AI ์นœํ™”์  ํ•ด์ƒ๋„ ๊ทœ์น™ (Image Size)โ€‹

AI ๋ชจ๋ธ์€ 8์˜ ๋ฐฐ์ˆ˜(๊ถŒ์žฅ 64์˜ ๋ฐฐ์ˆ˜) ํ”ฝ์…€์—์„œ ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋ƒ…๋‹ˆ๋‹ค. UI์˜ SD/HD/FHD ๋ฒ„ํŠผ์€ ์•„๋ž˜ ํ…Œ์ด๋ธ”์— ๋งž์ถฐ ๋ณ€ํ™˜๋˜์–ด ์ „์†ก๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • SD (Standard): ๊ธฐ๋ณธ ์ƒ์„ฑ/์ €๋น„์šฉ ์˜ต์…˜
  • HD (High): ์ผ๋ฐ˜ ๊ณ ํ™”์งˆ ์˜ต์…˜
  • FHD (Full High): HD๋ณด๋‹ค ๋†’์€ ๊ณ ํ•ด์ƒ๋„ ์˜ต์…˜
๋น„์œจ (W:H)SDHDFHD๋น„๊ณ 
1:2512 x 1024704 x 1408960 x 1920
9:16512 x 912768 x 13441080 x 1920๐Ÿ“ฑ Shorts/Reels ์ตœ์ ํ™”
2:3512 x 768832 x 12161280 x 1920
3:4512 x 680896 x 11521248 x 1664
1:1512 x 5121024 x 10241440 x 1440๐ŸŸง ์ธ์Šคํƒ€๊ทธ๋žจ
4:3680 x 5121152 x 8961664 x 1248
3:2768 x 5121216 x 8321920 x 1280
16:9912 x 5121344 x 7681920 x 1080๐Ÿ“บ ์œ ํŠœ๋ธŒ/์ธ๋„ค์ผ ์ตœ์ ํ™”
2:11024 x 5121408 x 7041920 x 960

7. ๋ฐฐํฌ (Deployment)โ€‹

  • Dev ๋ฐฐํฌ: dev ๋ธŒ๋žœ์น˜์— ์ฝ”๋“œ๊ฐ€ ํ‘ธ์‹œ๋˜๋ฉด ์ž๋™์œผ๋กœ ๊ฐœ๋ฐœ ์„œ๋ฒ„์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.
  • Prod ๋ฐฐํฌ: prod ๋ธŒ๋žœ์น˜์— ์ฝ”๋“œ๊ฐ€ ๋ณ‘ํ•ฉ๋˜๊ณ  ๋ฆด๋ฆฌ์Šค ํƒœ๊ทธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์šด์˜ ์„œ๋ฒ„์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.
  • Docs ๋ฐฐํฌ: ๋ฌธ์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ Vercel์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ๋ฌธ์ œ ํ•ด๊ฒฐ (Troubleshooting)โ€‹

  • Q: ๋กœ์ปฌ ๋ฐฑ์—”๋“œ๊ฐ€ ์ผœ์ง€์ง€ ์•Š๊ณ  Redis ์—๋Ÿฌ๊ฐ€ ๋‚˜์š”.
    • A: SSH ํ„ฐ๋„๋ง์ด ์ผœ์ ธ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. Bastion Host IP ๋“ฑ๋ก ์—ฌ๋ถ€๋„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Q: DB ์ ‘์†์ด ์•ˆ ๋ผ์š”.
    • A: ๋กœ์ปฌ DB๋ผ๋ฉด docker ps๋กœ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. Dev/Prod DB๋ผ๋ฉด PgAdmin์—์„œ SSH ํ„ฐ๋„๋ง ์„ค์ •์„ ํ™•์ธํ•˜์„ธ์š”.

์ถ”๊ฐ€์ ์ธ ์งˆ๋ฌธ์ด๋‚˜ ๋ฌธ์ œ๋Š” ํŒ€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ฑ„๋„์„ ํ†ตํ•ด ์–ธ์ œ๋“  ๋ฌธ์˜ํ•ด ์ฃผ์„ธ์š”! ๐Ÿš€