인프라 및 배포

구성이 단순해졌습니다

계정 시스템이 없고 클라이언트가 웹 하나이므로, 이전 계획(Docker Compose + Nginx 자체 호스팅 + 앱 배포)은 과잉입니다. 웹은 Vercel, API는 컨테이너 1대로 충분합니다.

                     인터넷 (공개 오픈 트래픽)
                            │
        ┌───────────────────┴───────────────────┐
        │                                       │
   Vercel (웹)                            api.… (FastAPI)
   프론트 5장                              │
   프리뷰 배포 자동                    ┌────┴────┐
                                  PostgreSQL   LLM Provider
                                  (+ 벡터)     (비용 상한 필수)

  GitHub Pages ──── 개발 문서 사이트   ← 이 사이트
                    (가비아 도메인 연결 완료)
대상 어디에 상태
개발 문서 (이 사이트) GitHub Pages + 가비아 도메인 ✅ 완료
게임 웹 Vercel 계정 등록 완료, 프로젝트 연결 대기
API 컨테이너 1대 Day 2 (9/04)
DB PostgreSQL + 벡터 인덱스 Day 2 (9/04)

환경

환경 용도 배포
local 개인 개발 웹 3300 → API 8300 프록시
staging 통합 검증 · 시연 main 머지 시 자동
production 공개 운영 태그 + 수동 승인

Day 5(9/07)부터 목데이터 금지 1차 통합 이후 웹은 반드시 스테이징 실 API를 바라봅니다. 특히 이 제품은 NPC 응답이 LLM에서 나오므로 목데이터로 만든 대화창은 실제와 완전히 다릅니다.

첫 방문 30초 대응이 인프라 요구사항이다

12.4가 곧 비기능 요구사항입니다.

기획서 요구 인프라가 해야 할 일
30초 안에 판단 첫 화면 TTFB 최소화. Vercel 엣지 캐싱
로그인·설치 없이 즉시 진입 세션 발급이 첫 요청 안에서 끝나야 함
첫 루프를 짧게 아침 화면은 LLM 호출 없이 즉시 렌더
트래픽 급증 가능 LLM 비용 상한이 곧 가용성 한계

공개 오픈에서 가장 먼저 터지는 건 서버가 아니라 LLM 비용입니다 익명 진입이므로 봇·크롤러·반복 접속에 그대로 노출됩니다. 세션당·IP당 루프 수 제한과 일일 비용 상한을 공개 전에 걸어둡니다. (09-16 반영: 구글 로그인 필수 · 사용자당·전역 판 수 제한 — 아래 「LLM 비용」의 방어선) 상한 도달 시 게임이 멈추므로, 상한을 얼마로 잡을지가 곧 서비스 판단입니다.

LLM 비용 — 확정 모델 기준 (2026-09-17)

원본과 전제 com.remakeday docs/apiscenario.md 맨 위 「최종 선정 — 2026-09-17 확정」. 모델은 Core Sonnet 5 + NPC Haiku 4.5, 단가 Sonnet 5 $2/$10 · Haiku 4.5 $1/$5 (100만 토큰당 입력/출력), 1자 = 0.7~1.0 토큰, 1,400원/$. 호출 수와 입출력 문자는 실제 판의 하네스 기록을 그대로 셌습니다.

판당

기준 판 Core (Sonnet 5) NPC (Haiku 4.5) 판당 합계 원화
사람이 5회차까지 플레이한 판 (Core 109회 · NPC 27회 호출) $0.59~0.84 $0.09~0.13 $0.68~0.97 950~1,360원
self-play 5회차 (공개 운영 조합) $0.51~0.74 $0.03~0.04 $0.54~0.78 760~1,090원
  • 비용의 87~94%가 Core이고, 그중 관리자 검사가 Core 입력의 56~68%입니다
  • 참가자는 평균 1~2회차까지 진행하므로 1명당 $0.3~0.5로 봅니다
  • 빠진 것: Sonnet 5의 thinking 토큰(effort low, 로그에 남지 않음), 하네스 재생성, 임베딩. 어댑터가 response.usage를 기록하지 않아 아직 실측 정산이 아닙니다

운영 규모별

완주 판 수 모델 변동비
100 $68~97
300 $204~291
500 $340~485

방어선

층 무엇
사용자당 하루 판 수 제한 (403) — API 계약
전역 하루 정원 (503)
입력 발화·질문 길이 상한 (422)
계정 Anthropic 콘솔 지출 한도 — 운영 투입 때 확인

전역 정원은 곧 하루 최대 비용의 상한입니다. 정확한 값은 운영 환경에서 관리합니다. 캐싱·채점 묶기·관리자 검사 빈도 조정(절감 셋)을 적용하면 판당 $0.3 안팎까지 내려가지만, v1 공개 전 적용 여부는 미정입니다.

시크릿

키 저장 위치
DATABASE_URL GitHub Secrets + 서버 .env + Vercel 환경변수
ANTHROPIC_API_KEY (09-17 확정 모델) 서버 .env만. 운영 투입(09-20) 전까지는 빼 둔다 — 과금 방지
지출 한도 환경변수가 아니라 Anthropic 콘솔 지출 한도 + 판 수 허들로 대체
SESSION_SIGNING_KEY 동일

레포에는 .env.example만 올립니다. Day 11(9/13)에 시크릿 스캔.

파이프라인

파이프라인 트리거 하는 일
백엔드 CI PR lint + pytest + import-linter (아키텍처 테스트)
백엔드 CD main 머지 스테이징 반영
웹 push Vercel 자동 배포 + PR 프리뷰
개발 문서 push Jekyll → Pages (동작 중)
프로덕션 태그 + 수동 승인 마이그레이션 → 배포 → 헬스체크

아키텍처 테스트를 머지 게이트로 건다 도메인 계층이 LLM 어댑터를 참조하면 CI가 실패해 머지가 막힙니다 (9.2). AI가 생성한 코드의 드리프트를 사람 눈이 아니라 기계로 막는 장치이고, 배지를 README에 노출해 품질 근거로 씁니다.

관측

항목 알림
서비스 생존 (/health) 실패 시 알림
5xx 급증 급증 시
LLM 비용 · 토큰 상한 80% 도달 시
스키마 통과율 / 재시도율 (역할별) 급락 시 — 9.4 지표이자 장애 신호
세션 수 · 완주율 일일 (11.2)

롤백

Day 13(9/15)에 실제로 해봅니다. 배포 1회 · 롤백 1회.

1. 판단
2. 웹        Vercel 이전 배포로 즉시 롤백    목표 1분
3. API       직전 이미지                     목표 3분
4. DB        alembic downgrade               ← 가장 위험
5. 공지

오픈 직전 마이그레이션은 추가만 합니다.

v1 공개 당일 (9/16)

시각 할 일
배포 −30분 수동 백업 1회
배포 마이그레이션 → API → 웹
+5분 헬스체크 + 1루프 완주 시연
+30분 에러율 · 지연 · LLM 비용
+2시간 온콜 해제 판단

결정 로그

날짜 결정 이유
2026-09-03 웹 배포를 Vercel로 계정 등록 완료. 프리뷰 배포가 Day 7 알파 확인에 유용하고 자체 호스팅 대비 운영 부담이 줄어듦
2026-09-03 앱 배포 파이프라인 삭제 모바일 앱이 범위 밖
2026-09-03 LLM 비용 상한을 공개 전 필수 항목으로 익명 진입 = 봇 노출. 비용이 가용성 한계
2026-09-03 import-linter를 머지 게이트로 승격 9.2. 품질 근거로 README에 노출하는 배지
2026-09-16 과잉 사용 방지 허들(사용자당 판 수 · 전역 정원)과 콘솔 지출 한도를 비용 방어선으로 판당 $0.68~0.97. 전역 정원이 곧 하루 최대 비용의 상한
2026-09-17 외부 API 확정 — Core Sonnet 5 · NPC Haiku 4.5 GPU 1장 동시 접속 1명 · 홈서버 가용성 제약. 비용 근거 apiscenario.md