Vercel Pro
유료 · $20Next.js 호스팅 · Analytics · Speed Insights
production + preview 자동 배포, 무중단 롤백
Stack & 구조
특정 SaaS에 묶이지 않도록 무료/저가 티어와 표준 API 위주로 구성하고, 동일한 추상화를 거쳐 저장소를 교체할 수 있게 만들었습니다.
솔루션
Next.js 호스팅 · Analytics · Speed Insights
production + preview 자동 배포, 무중단 롤백
mvp.plomus.com
Cloudflare DNS → Vercel
Google 로그인 (관리자 전용)
GoogleAuthProvider 단일 채택, 무료 티어
adminUsers 권한 문서
1개 컬렉션, 업무 원장은 보관하지 않음
업무 원장 (문의 · 제휴 · 견적 · 운영로그)
기본 DB provider, CSV/XLSX 즉시 export 가능
공개 폼 ratelimit · Sheets write queue · Discord 헬스
free tier 내 키 3종 사용
신규 접수 알림 (best-effort)
fire-and-forget, 실패해도 폼 응답 영향 없음
선택형 대체 원장
DB_PROVIDER=postgres 전환 가능, 동일 facade 사용
월 고정비 합계는 Vercel Pro + 도메인 기준 약 $21이며, 한도는 config/mvp-cost-guard.json 의 $25입니다. 신규 의존성을 추가하기 전에 npm run guard:cost 가 통과해야 합니다.
시스템 구조
공개 폼 3종 + 관리자 콘솔. 모바일 퍼스트 (Pretendard, Tailwind).
공개 페이지(SSR) + Route Handler API. 모든 라우트 runtime=nodejs. 보안 헤더 + JSON-LD + sitemap.
honeypot + Upstash ratelimit (10분/5건) → 통과 시에만 다음 단계. requireAdmin = ID Token + adminUsers 검증.
createRecord/listRecords/patchRecord 단일 진입점. DB_PROVIDER env 1회 캐싱, google_sheets 또는 postgres 분기.
업무 원장(Sheets/Postgres) + 권한(Firestore adminUsers). 운영자가 시트에서 직접 CSV export 가능.
Redis: ratelimit / Sheets write queue / Discord 헬스 카운터. Discord: 신규 접수 fire-and-forget 알림.
관리자 권한 외에는 클라이언트가 저장소에 직접 접근하지 않습니다. 모든 쓰기·조회는 Route Handler 를 거쳐 동일한 facade 로 모입니다.
워크플로우
검증