짧게 결론부터:
먼저 로컬에서 “크롬 확장 → API 서버 →(옵션) 분석 파이프라인”까지 E2E로 확인하고,
문제 없으면 스테이징 Cloud Run에 올려서 실제 트래픽으로 1~2일 테스트 → 그 다음 프로덕션 전환이 가장 안전합니다.
추천 진행 순서 (베스트 프랙티스)
-
로컬 E2E 점검
-
크롬 확장(CAP 버튼) →
http://localhost:8000/captions/process전송 -
API 서버가 요약을 구글 시트에 Append하는지 확인
-
(옵션) 오케스트레이터
/pipeline/run까지 한 번 호출해 “분석→새 대본”까지 한 바퀴
-
컨테이너라이즈 & 스테이징 배포(Cloud Run)
-
동일 이미지를 Cloud Run에
staging서비스로 배포 -
크롬 확장
API Endpoint를 스테이징 URL로 바꾸고 10~20건 실사용 테스트 -
콜드스타트, CORS, 인증, 시트 쓰기 권한 등 실환경 이슈 체크
-
프로덕션 전환
-
문제가 없으면
prod서비스로 복제 배포 -
확장에서 엔드포인트를
prod로 전환
바로 Cloud Run에 올려도 되긴 하지만, 확장에서 보내는 페이로드/인증/CORS 한 번만 어긋나도 디버깅이 길어져요. 그래서 로컬 → 스테이징 → 프로덕션 권장입니다.
로컬에서 반드시 확인할 체크리스트
-
CORS:
OPTIONS /captions/process프리플라이트 허용(메서드/헤더) -
요약 필드: 시트에는 대본 제외하고
extracted_at, title, url, view_count, like_count, comment_count, category, tags, language, is_auto_generated, channel_name, duration_seconds, extension_version등이 잘 들어가는지 -
YouTube Data API 키(선택): 키 없을 때 DOM 폴백이 문제없이 null 처리되는지
-
에러 핸들링: 자막 없음/비공개/라이브/연령제한 영상에서 실패 토스트가 의미 있게 뜨는지
-
중복 전송 방지: 버튼 연타 시 디바운스 작동
-
용량: 캡션이 긴 영상에서 요청 바디 크기가 과하지 않은지(Cloud Run 기본 32MB)
Cloud Run 배포 요약
1) Dockerfile (예시: FastAPI + Uvicorn)
2) 배포 커맨드
서울 리전:
asia-northeast3
콜드스타트 줄이고 싶으면--min-instances 1(비용 증가). 당장은 0 유지로 시작해도 OK.
3) 환경변수(중요)
-
ORCH_URL: (옵션) 오케스트레이터/pipeline/run주소 -
SHEETS_CREDENTIALS_JSON: 서비스계정 JSON(내용 문자열 or 파일경로) -
SHEET_ID: 대상 스프레드시트 ID -
SHEET_NAME: 탭 이름(예:Logs) -
(필요 시)
AUTH_TOKEN: 확장에서 보낼 Bearer 토큰
Cloud Run에 환경변수 등록:
4) CORS 허용 스니펫(FastAPI)
확장과 “대본수집→분석→새대본” 파이프라인 연결 팁
-
비동기 체인:
/captions/process에서 요약만 시트에 기록하고, 긴 작업(분석/새대본)은 백그라운드 큐(예: Cloud Tasks or 간단한 스레드)로 넘기면 사용자 체감이 빨라요. -
리트라이/아이덴포턴시:
video_id+ 날짜로 중복 검사(같은 날 중복 수집 시 덮어쓰기 or Skip). -
에러 관찰성: Cloud Run 로그 + 시트에 “status/error” 컬럼 하나 더 두면 운영이 쉬워집니다.
지금 당장 무엇을 하면 좋나
-
로컬에서 E2E 한 바퀴: 확장 → API → 시트 Append → (옵션) 오케스트레이터 호출
-
OK면 스테이징 Cloud Run 배포하고, 확장
API Endpoint만 스테이징 URL로 교체 -
10~20건 실데이터로 테스트(서로 다른 영상 유형)
-
문제 없으면 prod로 복제 배포
원하시면 제가 Cloud Run 스테이징 배포용 브랜치/환경변수 템플릿까지 바로 정리해 드릴게요. 어디부터 손댈지 말만 주세요!