Skip to main content

Future Architecture & Scalability

Vivid AI는 초기 MVP 단계에서 이미지 생성에 집중하지만, 향후 비디오/오디오 생성 및 다양한 SNS 플랫폼으로의 확장을 염두에 두고 설계됩니다. 이 문서는 이러한 확장을 수용하기 위한 **기술적 청사진(Blueprint)**입니다.

1. Multi-Platform Social Publishing

다양한 SNS(Instagram, TikTok, YouTube Shorts 등)의 상이한 API 규격을 효과적으로 관리하기 위해 **어댑터 패턴(Adapter Pattern)**을 적용합니다.

1.1. Architecture Overview

[Client] -> [Unified Post API] -> [Social Manager Service]
|
+--> [Instagram Adapter] -> (Instagram API)
+--> [TikTok Adapter] -> (TikTok API)
+--> [YouTube Adapter] -> (YouTube Data API)
+--> [Internal Adapter] -> (Vivid Gallery DB)

1.2. Key Components

  • Unified Post DTO: 모든 플랫폼에 공통적으로 필요한 데이터(미디어 URL, 캡션, 태그)를 정의한 표준 객체.
  • ISocialAdapter Interface: 모든 어댑터가 구현해야 할 공통 메서드(validate, publish, refreshAuth).
  • Job Queue (BullMQ): 외부 API 호출의 지연 및 실패를 처리하기 위한 비동기 큐 시스템.

1.3. Platform Specific Strategy

  • Instagram: 비즈니스 계정 필수. 이미지 컨테이너 생성 -> 게시의 2단계 프로세스.
  • TikTok: 비디오 전용. 업로드 프로세스가 복잡하므로 별도의 트랜스코딩(Resizing) 파이프라인 필요.
  • YouTube Shorts: 60초 미만, 9:16 비율 필수.

2. Multimedia Database Design

이미지뿐만 아니라 비디오, 오디오 데이터를 유연하게 저장하기 위한 DB 스키마 전략입니다.

2.1. Polymorphic Media Table

별도의 Videos, Audios 테이블을 만드는 대신, 통합된 Creations 테이블과 메타데이터(jsonb)를 활용합니다.

CREATE TABLE creations (
id UUID PRIMARY KEY,
user_id UUID REFERENCES users(id),
persona_id UUID REFERENCES personas(id),

media_type VARCHAR(20) NOT NULL, -- 'IMAGE', 'VIDEO', 'AUDIO'
media_url VARCHAR(255) NOT NULL,
thumbnail_url VARCHAR(255),

-- 확장 가능한 메타데이터 (영상 길이, 오디오 파형, 프롬프트 등)
meta_data JSONB DEFAULT '{}',

created_at TIMESTAMP DEFAULT NOW()
);

2.2. Storage Strategy

  • Phase 1 (MVP): images/ 경로에 저장.
  • Phase 2 (Video): videos/ 경로에 저장하되, HLS(스트리밍) 변환 고려.

3. Preset System Architecture

"클릭만으로 프롬프트 완성"을 위한 프리셋 데이터 구조입니다.

  • Presets Table:
    • category: 'EMOTION', 'POSE', 'BACKGROUND', 'STYLE'
    • label: 사용자에게 보여질 이름 (예: "활짝 웃는")
    • prompt_text: 실제 AI에게 전달될 프롬프트 (예: "big smile, happy expression")
    • icon_url: UI에 표시될 아이콘.