콘텐츠로 이동

MVP Scope

Umbra MVP 는 "유료 전환 가능한 최소 제품" 을 목표로 한다. 세 기둥(Protect / Preserve / Restore) 을 제한된 형태로 모두 포함하며, Pro 플랜의 결제-권한-복구 흐름이 end-to-end 로 동작해야 한다.

Phase

MVP (첫 프로덕션 릴리즈)

Why this phase

Umbra 의 가치 제안은 단순 백업이 아니라 "Protect / Preserve / Restore" 세 기둥의 조합이다. MVP 에서 한 기둥이라도 빠지면 제품 정체성이 불완전해진다.

  • Preserve 만 있으면 → 기존 백업 봇과 차별화 실패
  • Restore 만 있으면 → "사고 난 뒤에나 쓸모 있음" 으로 구독 동기 약화
  • Protect (Anti-Nuke) 가 빠지면 → Pro 플랜의 가치 부족

따라서 MVP 는 세 기둥을 제한된 범위로 모두 포함 하는 방향을 택한다. 각 기둥의 고급 기능은 Phase 2 로 연기.

동시에 "유료 전환 가능" 이 목표이므로 결제 파이프라인(Toss Billing + 빌링키 + 재시도 + 자동 해지)은 완성도 있게 구현한다. 제품 사용 경험의 모든 접점이 작동해야 유료 전환이 발생한다.

Goals

Business goals

  • Free → Pro 전환 플로우 end-to-end 작동
  • 첫 10명의 Pro 고객 유치
  • 첫 3건 실제 복구 사례 확보 (마케팅 증거)
  • 월 ₩50,000 이상 MRR (상징적 수준)

Technical goals

  • 결제 파이프라인 production-ready (실패 재시도, 자동 해지, 빌링키 암호화)
  • Recovery 워크플로우가 프로세스 장애에도 완주
  • Anti-Nuke 감지 + 알림 동작 (자동 대응은 Enterprise 한정)
  • 세 프로세스 구조(bot/api/worker) Fly.io 배포
  • 전체 관측성 세팅 (Grafana Cloud, OpenTelemetry)

In scope

Identity & Auth

  • Discord OAuth2 로그인
  • 세션 관리 (Redis)
  • 로그인 / 로그아웃 / 세션 만료

Guild

  • 봇 설치 시 Guild 등록
  • 봇 강퇴 감지 및 처리
  • Owner 변경 추적

Member

  • 웹 조인 플로우 (join.umbra.ink/{slug})
  • OAuth2 콜백 → 멤버 DB 저장
  • 자동 역할 부여
  • guilds.join API 로 Discord 가입 처리

Licensing

  • Free Plan 자동 생성 (봇 설치 시)
  • Pro / Enterprise Plan 정의
  • Feature gating 중앙 권한 체크
  • Plan upgrade / downgrade 즉시 반영 또는 period_end 적용

Billing

  • Toss 빌링키 발급 (위젯 → 서버)
  • 빌링키 AES-256-GCM 암호화 저장
  • 첫 결제 흐름 (Pro 구독 시작)
  • 정기 결제 cron + ±15분 jitter
  • 실패 재시도 (24h/48h/72h → 자동 해지)
  • Toss 웹훅 수신 + idempotency
  • 사용자 해지 요청 (period_end 까지 유지)

Recovery: Preserve

  • Live Sync 배치 처리 (Discord 이벤트 → DB)
  • 수동 스냅샷 생성 (슬래시 커맨드 + 대시보드)
  • 자동 스냅샷 (일별 cron)
  • 스냅샷 retention 정책 (Plan 별)

Recovery: Restore

  • 복구 실행 (Temporal workflow)
  • Sync mode (Git reset 스타일)
  • 카테고리별 선택 (Roles / Channels / Permission Overrides / Guild Settings)
  • diff 미리보기 UI
  • Pre-restore 스냅샷 자동 생성 (옵션)
  • 복구 진행 상황 실시간 조회

Recovery: Protect (Anti-Nuke)

  • 4가지 감지 패턴 (mass role/channel delete, mass kick, permission escalation)
  • 감지 시 자동 스냅샷
  • Owner 에게 Discord DM 알림
  • 감사 채널 알림
  • Enterprise: 가해자 권한 자동 박탈 (opt-in)

Notification

  • Discord DM 발송
  • 감사 채널 알림
  • 결제 관련 알림 (성공, 실패, 해지)

Audit

  • 도메인 이벤트 전체 기록
  • Umbra 대시보드에서 감사 로그 조회

Dashboard (apps/web)

  • 홈 (구독 현황, Guild 목록)
  • Subscription 관리 (시작, 변경, 해지)
  • Snapshot 목록 및 상세
  • Restore 실행 플로우
  • Audit log 조회
  • 결제 내역

Infrastructure

  • Fly.io nrt 에 3 프로세스 배포
  • Vercel 에 web 배포
  • Cloudflare DNS (umbra.ink 서브도메인)
  • Neon PostgreSQL (schema per domain)
  • Upstash Redis
  • Self-hosted Temporal (Neon 공유)
  • Grafana Cloud 관측성 (OTel)
  • GitHub Actions CI/CD

Documentation

  • docs/ 전체 (overview, architecture, domain, data, flows, guides, adr, roadmap)
  • 사용자 가이드 (umbra.ink/docs)
  • 개인정보 처리방침 및 이용약관

Out of scope

Phase 2 이상으로 연기하는 항목:

  • 메시지 본문 백업/복구 — ADR-0027 에 의해 영구 제외 원칙
  • Member 자동 복원 — 수동 단위 복원만 MVP, 자동은 Phase 2
  • Merge mode 복구 — Sync 만 MVP
  • 다국어 UI — 한국어만 MVP (영어는 Phase 2)
  • Discord 외 플랫폼 — Slack, Matrix 등 미지원
  • Open API (외부 개발자용) — Phase 2+ 검토
  • 고급 Anti-Nuke 감지 패턴 — 4개 패턴 외 추가는 Phase 2
  • 길드 샤딩 — 2,500 길드 이하 단일 Bot 운영
  • 멀티 리전 — asia-northeast1 전용
  • 모바일 앱 — 반응형 웹만

Dependencies

MVP 출시 전 선행 필요:

  • Luxtra 사업자등록 완료 (대표 이진욱 명의)
  • 사업용 통장 개설
  • Toss Payments 가맹 승인
  • umbra.ink 도메인 DNS 설정 (app, join, api)
  • Google Workspace 활성화 (admin@luxtra.dev)
  • Discord Developer Portal 에 Umbra Bot 등록
  • 개인정보 처리방침 및 이용약관 법률 검토

Success criteria

MVP 완료를 판단하는 기준:

  • 기능 완결성 — 위 In scope 체크리스트 100% 달성
  • End-to-end 테스트 — 가입 → 결제 → 스냅샷 → 복구 → 해지 전체 흐름이 production 에서 작동
  • 결제 신뢰성 — 첫 10건 결제 무사고 처리 (재시도 시나리오 포함)
  • Recovery 신뢰성 — 첫 3건 실제 복구 성공 (데이터 손실 0)
  • 관측성 — 주요 지표(결제 성공률, 복구 완주율, 이벤트 lag)가 대시보드에 노출
  • Anti-Nuke 검증 — 테스트 길드에서 4가지 패턴 모두 감지 확인

Risks

Toss 가맹 지연

  • Likelihood — Medium
  • Impact — High (결제 없이는 Pro 불가)
  • Mitigation — 가맹 절차를 MVP 개발 초기에 병행 시작

Neon / Fly.io 한국 latency

  • Likelihood — Low
  • Impact — Medium
  • Mitigation — MVP 전 benchmark 수행, 30ms 이내 유지 확인

Recovery 중 Discord API rate limit

  • Likelihood — High
  • Impact — Medium (복구 지연 발생)
  • Mitigation — Temporal Activity 의 retry + backoff, 대형 길드 복구 시간 예고

Anti-Nuke 오탐

  • Likelihood — Medium
  • Impact — High (잘못된 자동 박탈)
  • Mitigation — Pro 는 알림만, Enterprise 자동 대응은 opt-in. 감지 로그 수집 후 임계값 튜닝

진욱 Go 학습 곡선

  • Likelihood — Low (Go 는 luxtra-bot 의 Rust 대비 낮음)
  • Impact — Medium
  • Mitigation — Pablo 가 Core 도메인 선구현, 진욱은 Supporting 부터 점진 확장

MVP 출시 전 경쟁 출현

  • Likelihood — Low
  • Impact — Medium
  • Mitigation — MVP 출시 속도 우선, Anti-Nuke 차별화 강조

Timeline

대략적 기간. 정확한 날짜보다 마일스톤 순서와 의존성에 집중.

gantt
    title Umbra MVP Timeline
    dateFormat YYYY-MM-DD
    section Foundation
    Repo structure & tooling :2026-04-01, 14d
    docs/ 완성 :2026-04-08, 14d
    section Backend Core
    Identity / Guild / Member :2026-04-15, 21d
    Licensing + Billing (Toss) :2026-05-01, 28d
    Recovery: Live Sync :2026-05-15, 14d
    Recovery: Snapshot :2026-05-22, 14d
    Recovery: Restore (Temporal) :2026-06-01, 28d
    Recovery: AntiNuke :2026-06-15, 21d
    section Frontend
    Dashboard shell :2026-05-01, 14d
    Subscription flows :2026-05-15, 21d
    Snapshot / Restore UI :2026-06-01, 21d
    section Operations
    CI/CD, Observability :2026-04-22, 21d
    Security review :2026-06-22, 14d
    Beta testing :2026-07-01, 21d
    section Launch
    Soft launch :2026-07-22, 7d
    Public launch :2026-08-01, 1d

Next phase

MVP 완료 후 다음 단계는 Phase 2 — 기능 확장 및 안정화.

  • Nextroadmap/phase-2.md — 메시지 없는 백업의 차별화를 유지하면서 복구 유연성, 다국어, 외부 API 등 확장

See also

  • overview/what-is-umbra.md — 제품 정체성
  • overview/value-proposition.md — 세 기둥 가치 제안
  • roadmap/phase-2.md — 다음 단계 계획
  • roadmap/rust-rewrite.md — 장기 언어 재작성
  • adr/ — MVP 관련 설계 결정 전체