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에 표시될 아이콘.