프로덕션 준비 상태 (MVP → 프로덕션)은(는) 무엇을 하나요?
목표: 제품 소유자에게 증거와 함께 제품이 실제 사용자에게 준비되었는지, 출시를 막는 요인이 무엇인지, 격차를 해소하기 위한 최소한의 작업이 무엇인지 알려줍니다. 제품에 맞게 조정되며, 일반적인 200개 항목의 위시리스트가 아닙니다.
엄격한 규칙
- 증거 또는 알 수 없음. 모든 항목은 PASS / GAP / N/A / UNKNOWN이며, PASS에는 증거(파일 경로, 설정, CI 실행, 대시보드, 문서 링크)가 필요합니다. README의 주장만으로 PASS로 표시하지 마십시오.
- 등급에 맞게 조정. 50명 사용자 베타에 다중 리전 재해 복구를 요구하지 마십시오. 각 격차에는 필요한 등급을 태그하십시오.
- 플랫폼 규칙을 실시간으로 확인. 앱 스토어, OAuth, 결제, 이메일 발신자 규칙은 매년 변경됩니다. 매장/공급업체 요구 사항을 인용하기 전에 공급업체의 공식 문서(웹 검색)를 확인하고 링크와 확인 날짜를 인용하십시오.
- 재사용, 중복 금지.
pm-ai-shipping:ship-check,security-audit-static,performance-audit-static또는derive-tests를 사용할 수 있으면 이를 실행하여 코드 수준 증거를 확보하고 결과를 통합하십시오. 이 스킬은 코드 주변의 모든 것을 담당합니다. - 평이한 출력. 소유자는 한 페이지 분량의 스코어카드를 읽습니다. 세부 사항은 부록과 백로그에 넣습니다.
- 워크플로우 내 거버넌스, 마지막이 아닌. 출시 전에 고정된 검토 회의보다는 작업이 발생하는 곳(CI, PR 템플릿, pre-commit, 제품 내 가드레일)에서 실행되는 검사를 선호하십시오. 마지막에만 실행되는 게이트는 병목 현상이 됩니다.
- 출시 ≠ 채택. 대부분의 제품은 출시 후 코드 문제가 아니라 사람과 프로세스가 변하지 않았기 때문에 정체됩니다. 준비 상태에는 채택 계획(영역 13)이 포함되며, 시스템만이 아닙니다.
준비 상태 등급
| 등급 | 의미 | 일반적인 기준 |
|---|---|---|
| T1 공개 베타 | 실제 사용자, 낮은 규모, 약간의 다운타임 허용 가능 | 비밀 누출 없음, 인증 견고, 백업 복원 가능, 오류 추적, 법적 페이지, 롤백 작동 |
| T2 GA | 유료 사용자, SLA 기대 | + SLO/알림/온콜, 부하 테스트, 런북, 지원 경로, 통합 폴백 |
| T3 엔터프라이즈 / 규제 대상 | B2B 계약, PHI/PCI/어린이, 감사 | + SSO/SCIM, 감사 로그, DPA/BAA, 침투 테스트, SOC 2 / HIPAA 통제, DR 훈련 |
워크플로우
단계 0 — 제품 프로필 작성 (한 번 질문하고, 질문을 일괄 처리)
캡처: 목표 등급 및 출시 날짜; 단일 성공 지표와 목표(이 출시를 성공으로 만드는 것, 측정 방법, 시기); 명명된 소유자 및 승인 이해관계자(제품, 엔지니어링, 보안, 법률/개인정보, 지원, 마케팅 — 개인 데이터, AI 출력 또는 규제 대상 사용자가 관련된 경우 첫날 법률/개인정보 플래그 지정); 표면(웹, iOS, Android, 데스크톱, 공개 API, CLI, 브라우저 확장 프로그램, 개발자 도구/플러그인/라이브러리(다른 개발자에게 배포)); 호스팅/스택; 데이터 유형(PII, PHI, 결제, 미성년자 데이터); 사용자(B2C/B2B), 지역(미국/EU/기타); AI/LLM 기능; 결제; 모든 외부 통합(사용하는 API, 수신하는 웹훅, 게시하는 마켓플레이스/앱 스토어, SSO/IdP). 먼저 저장소(패키지 매니페스트, 환경 템플릿, SDK 가져오기)를 스캔하여 통합 목록을 미리 채운 다음 소유자에게 확인/격차 채우기만 요청하십시오.
프로필은 적용되는 모듈을 선택합니다. 보고서 상단에 기록하십시오.
단계 1 — 증거 수집
저장소(코드, CI 설정, IaC, 환경 템플릿, 마이그레이션), 호스팅 대시보드/커넥터(사용 가능한 경우: Vercel, Railway, Supabase, Render 등), 이슈 트래커, 기존 문서. 사용 가능한 감사 스킬을 실행합니다. 검사할 수 없는 항목을 기록 → UNKNOWN.
단계 2 — 핵심 영역(항상) + 해당 모듈 평가
각 항목을 점수화합니다. 심각도: BLOCKER(대상 등급에서 출시 불가) / HIGH(처음 2주 이내 수정) / LATER.
단계 3 — 전달
- 스코어카드 (1페이지): Go / Go-with-conditions / No-go; 차단기 개수; 영역별 RAG 테이블; 일반 용어로 된 상위 5개 위험.
- 격차 백로그: 격차당 하나의 티켓 — 제목, 중요성, 승인 기준, 마감에 필요한 증거, 등급, 심각도, 대략적인 크기(S/M/L). Linear/Jira/GitHub Issues가 연결된 경우 프로젝트/마일스톤으로 생성하도록 제안하고, 그렇지 않으면 테이블.
- 강화 키트(요청 시): 저장소별 CI 품질 게이트, 에이전트 규칙 파일(CLAUDE.md/.cursorrules),
.env.example, 런북 스텁 생성 — 템플릿 덤프가 아닌 저장소가 실제로 사용하는 것에서 빌드. - 재실행 모드: 이후 실행 시 이전 보고서와 차이점을 비교하고 변경된 사항만 표시.
핵심 영역(항상 평가)
1. 비밀 및 설정 — 코드나 git 히스토리에 비밀 없음(gitleaks/trufflehog 전체 히스토리); .env 무시, .env.example 존재; 프로덕션 비밀은 플랫폼 비밀 저장소에; 개발/스테이징/프로덕션 키 분리; 순환 계획 및 순환 가능한 사람; 유출된 키 대응 단계.
2. ID 및 액세스 — 입증된 인증 제공자 또는 잘 검토된 라이브러리(수제 암호화 금지); 모든 데이터 경로에서 서버 측 권한 부여(IDOR / 누락된 테넌트 필터 / 허용적인 RLS 확인); 세션/토큰 수명 및 해지; 로그인, 가입, 재설정, OTP에 속도 제한; 관리자용 MFA; 최소 권한 서비스 계정; 관리자 작업 기록.
3. 에지 및 앱 보안 — HTTPS + HSTS; 보안 헤더(CSP, frame-ancestors 등); 엄격한 CORS; 경계에서 입력 유효성 검사; 파일 업로드 제한/유형 검사; URL 가져오기의 SSRF 가드; T2+에서 WAF/봇 보호; 종속성 스캔 + lockfile; CI의 SAST; T3에서 SBOM 및 라이선스 검사.
4. 데이터 — 자동화된 백업 및 테스트된 복원(실제 복원 시간 기록); DB가 지원하는 시점 복구; 이전 버전과 호환되는 마이그레이션(확장 → 마이그레이션 → 축소); 스테이징은 원시 프로덕션 PII를 사용하지 않음; 보존 + 삭제 경로(사용자 계정 삭제가 DB, 스토리지, 로그, 공급업체 전체에서 실제로 삭제됨); 미사용/전송 중 암호화 기본값 확인.
5. 안정성 — 모든 아웃바운드 호출에 타임아웃; 멱등 연산에서만 백오프 + 지터가 있는 재시도; 결제/웹훅/작업의 멱등 키; 내구성 있는 큐의 백그라운드 작업; 종속성이 다운될 때 정상적 저하; T2+에서 SLO 정의(가용성, 지연 시간); T2+에서 예상 최대치 ×3의 용량/부하 테스트.
6. 관찰 가능성 — 릴리스 태그가 있는 오류 추적(예: Sentry); 요청/추적 ID가 있는 구조화된 로그 및 PII 편집; 엔드포인트별 주요 메트릭(비율, 오류, 지속 시간); 외부에서의 가동 시간 확인; 실제로 볼 사람에게 라우팅되는 증상 기반 알림; 출시일 대시보드.
7. CI/CD 및 릴리스 — 메인 브랜치의 필수 검사(lint, 타입체크, 테스트, 비밀 스캔, 종속성 감사); 미리보기/스테이징 환경; 원클릭 롤백 한 번 증명; 위험한 기능을 위한 기능 플래그; 마이그레이션이 배포 중 안전하게 실행; 릴리스 노트/체인지로그; 브랜치 보호.
8. 테스트 — 커버리지 %보다 중요한 경로(인증, 결제, 데이터 쓰기, 권한)의 테스트; 실제 DB에 대한 통합 테스트; 배포 후 실행되는 상위 사용자 여정의 E2E 스모크 테스트; 외부 API에 대한 계약 테스트 또는 기록된 픽스처.
9. 성능 및 비용 — Core Web Vitals / 앱 시작 예산; N+1 및 누락된 인덱스 확인; 캐싱/CDN; 공급업체별 지출 알림 및 하드 캡(클라우드, LLM, SMS, 이메일); 활성 사용자당 비용 추정; 청구서를 늘릴 수 있는 남용 시나리오(가입 스팸, LLM 프롬프트 루프, SMS 펌핑).
10. 운영 및 지원 — 한 사람이라도 소유자/온콜 지명; 인시던트 프로세스(심각도, 커뮤니케이션, 포스트모템); 상위 5개 실패 모드에 대한 런북; T2+에서 상태 페이지; 지원 채널 및 SLA; 일반적인 지원 작업을 위한 관리자 도구(원시 SQL이 필요하지 않도록).
11. 법률 및 신뢰 — 약관, 실제 데이터 흐름과 일치하는 개인정보 처리방침; 필요한 경우 쿠키 동의(EU/UK); 개인 데이터를 처리하는 공급업체와의 DPA; T3에서 하위 처리자 목록; 접근성 목표(WCAG 2.2 AA) 및 기본 감사; 오픈소스 라이선스 준수; 제품 이름에 대한 상표/이름 사용 권리.
12. 제품 준비 상태 — 활성화 퍼널에 대한 분석(동의 포함); 온보딩 및 빈 상태; 트랜잭션 이메일 전달(웹 모듈 참조); 도움말 문서/FAQ; 유료인 경우 가격/결제 활성; 피드백 루프; 문제가 있는 기능을 위한 킬 스위치.
13. 채택 및 운영 모델 — 출시 전에 작성된 성공 지표 및 파일럿 종료 기준(파일럿에서 '확장' 또는 '중단'으로 이동시키는 것); 위험 등급별 명명된 승인자가 있는 문서화된 릴리스 워크플로우(저위험 변경 = 한 명의 검토자, 고위험 = 더 많음) 및 승인이 지연되지 않도록 합의된 처리 시간; 출시 커뮤니케이션(변경되는 사항, 변경되지 않는 사항, 알려진 한계); 첫 번째 사용자/챔피언 그룹 및 그들로부터 의견을 들을 수 있는 방법; 제품 내 도움말, 템플릿 또는 예제(사용자가 도구 내에서 학습); 피드백 루프(사용자 피드백 + 사용량 메트릭) 및 검토 주기(예: 30/60/90일, 이후 분기별); 사용량이 증가함에 따라 지속적인 지원을 담당하는 소유자.
조건부 모듈
M1. 사용하는 통합(공급업체당 한 장) — 프로덕션 계정/키(샌드박스 아님) 및 계정 소유자; 예상 최대치 대비 속도 제한 및 할당량; 가격 상한 및 알림; 인증 유형 및 토큰 갱신; 웹훅 서명 확인, 재생 보호, 멱등 처리기, 재시도/백오프 및 데드 레터; API 버전 고정 + 사용 중단 감시(체인지로그 구독); 타임아웃 + 회로 차단기 + 사용자에게 표시되는 폴백; 공급업체 상태 페이지 구독; 이용 약관이 귀하의 사용(재판매, AI 교육, 스크래핑)을 허용함; 종료 계획 — 귀하의 데이터/프롬프트/설정을 소유하고 내보낼 수 있으며, 계약에 해지 조항 없이 다년 잠금이 없음; 데이터 상주/DPA; OAuth 앱 확인/검토 요구 사항(예: Google 민감/제한된 범위, Microsoft 게시자 확인, Slack/Zoom 앱 검토) — 현재 규칙을 실시간으로 확인.
M2. 노출하는 공개 API — OpenAPI/사양 게시; 버전 관리 및 사용 중단 정책; 범위가 있는 API 키/OAuth, 순환, 해지; 키당 속도 제한 및 할당량; 페이지 매김, POST의 멱등 키; 일관된 오류 형식; 샌드박스 환경; 보내는 웹훅이 서명, 재시도 및 재생 가능; 개발자 문서 + 체인지로그; 청구되는 경우 사용량 측정.
M3. 모바일 및 앱 스토어 — 인용 전 각각의 현재 공식 문서 확인:
- Apple: 앱 리뷰 가이드라인; 개인정보 라벨이 실제 수집과 일치; 타사 SDK를 포함한 개인정보 매니페스트; 계정을 만들 수 있는 경우 인앱 계정 삭제; 타사 로그인을 제공하는 경우 Apple로 로그인 규칙; 디지털 상품에 대한 IAP 규칙; TestFlight 외부 테스트; 수출 규정 준수.
- Google Play: 현재 목표 API 수준 마감일; 데이터 안전 양식; 새 개인 개발자 계정에 대한 클로즈드 테스트 요구 사항; Play 앱 서명 및 업로드 키 관리; 계정 삭제 웹 링크.
- 공통: 충돌 보고; 주요 API 변경 사항에 대한 강제/소프트 업데이트 메커니즘; 딥/유니버설 링크; 회사 계정이 소유한 푸시 자격 증명; 스토어 목록 자산, 연령 등급, 지원 URL, 개인정보 URL; 출시 계획의 리뷰 거부 버퍼(시간이 아닌 일 단위 계획).
M4. 웹 및 이메일 — 커스텀 도메인, 회사 계정이 소유한 DNS, 등록기관 잠금 + 자동 갱신; 검색 가능성이 중요한 경우 SEO 기본 사항(제목, 사이트맵, 로봇, OG 태그); 404/500 페이지; 이메일 발신자 인증 SPF, DKIM, DMARC 및 대량 메일의 원클릭 구독 취소(현재 Gmail/Yahoo 발신자 규칙 확인); 반송/불만 처리; 트랜잭션 및 마케팅 스트림 분리.
M5. AI / LLM 기능 — 폴백 모델이 있는 제공자 추상화 또는 게이트웨이; 429/5xx에 대한 타임아웃 및 재시도; 스키마(Zod/Pydantic)로 검증된 구조화된 출력; 프롬프트/모델 변경 전 CI에서 실행되는 실제 사례의 평가 세트; 모델이 신뢰할 수 없는 콘텐츠를 읽거나 도구를 호출할 수 있는 경우 프롬프트 인젝션 방어(최소 권한 도구, 파괴적 작업에 대한 사람 확인); 사용자별 및 글로벌 비용 상한; PII 처리 및 제공자 데이터 보존 설정; 모델 사용 중단 날짜 추적; 필요한 경우 사용자에게 AI 공개; 생성된 출력에 대한 브랜드/품질 가드레일(금지된 용어, 어조 확인, 위험에 따라 계층화된 사람 검토); UI가 사용자에게 한계를 알림('사실 확인', 주장에 대한 출처 표시); 프롬프트/모델 변경 사항을 먼저 샌드박스에서 기록 또는 샘플 데이터로 테스트한 다음 전체 트래픽에 출시하기 전에 작은 트래픽 비율로 롤아웃; 예정된(예: 반기) 모델/공급업체 검토.
M6. 결제 — PCI 범위를 최소화하기 위한 호스티드 체크아웃; 웹훅 기반 상태(클라이언트 리디렉션 절대 신뢰 안 함); 멱등 이행; 환불, 분쟁, 당닝; 지역별 세금 징수; 테스트 시계/샌드박스 커버; 수익 조정.
M7. 규제 데이터 — PHI → HIPAA: PHI를 다루는 모든 공급업체와의 BAA, 액세스 로깅, 최소 필요. 호스티드 체크아웃을 넘어선 PCI → SAQ 범위. 어린이 → COPPA/연령 게이트. EU/UK 사용자 → GDPR 법적 근거, DSAR 프로세스, 전송. 캘리포니아 → CCPA/CPRA. 법률 검토를 위해 플래그 지정; 법적 결론을 내리지 마십시오.
M8. B2B / 엔터프라이즈 — 테넌트 격리 테스트(교차 테넌트 액세스 테스트); T3에서 SSO(SAML/OIDC) 및 SCIM; 감사 로그 내보내기; 역할/권한 모델; 데이터 내보내기; 보안 설문지 패키지(아키텍처, 하위 처리자, 침투 테스트, 정책); 가동 시간 SLA 및 크레딧.
M9. 게시하는 마켓플레이스 — Chrome 웹 스토어, Slack/Teams/Zoom 앱 디렉토리, Shopify, MCP/플러그인 레지스트리 등: 목록 요구 사항, 검토 기간, 권한 근거, 개인정보 공개 — 실시간 확인.
M10. 개발자 도구, 라이브러리, 플러그인 및 오픈 소스 — 의도적으로 선택한 라이선스(AGPL과 같은 카피레프트는 회사 채택을 차단할 수 있음, MIT/Apache와 같은 허용적 라이선스는 더 빠르게 확산됨) 및 NOTICE/타사 라이선스 정확; 비공개 공개 채널이 있는 SECURITY.md; 의미론적 버전 관리, CHANGELOG, 모든 저장된 데이터 또는 설정 형식에 대한 테스트된 업그레이드/마이그레이션 경로; CI에서 실제로 테스트된 지원 플랫폼 매트릭스(OS × 런타임 버전 × 지원하는 각 클라이언트/IDE); 문서화된 모든 경로에 대해 깨끗한 머신에서 설치 확인됨; 각 레지스트리(PyPI, npm, 플러그인 마켓플레이스)에 예약된 패키지 이름; 서명된 릴리스 / 빌드 출처; 텔레메트리 끄기 또는 옵트인 및 문서화; CONTRIBUTING, 행동 강령, 이슈/PR 템플릿; 사용자가 오용하지 않도록 '이것이 아닌 것' 섹션.
스코어카드 템플릿
제품: <이름> 목표: T1/T2/T3 출시일: <날짜> 판정: GO | GO-WITH-CONDITIONS | NO-GO
차단기: N 높음: N 알 수 없음: N
[스코어카드 본문]
[견고함 점수]
[부록]
[격차 백로그]
[채택 계획 노트]