프로덕션 감사은(는) 무엇을 하나요?
이 스킬은 사용자가 애플리케이션을 출시할 준비가 되었는지, 프로덕션에서 무엇이 깨질 수 있는지, 또는 출시 전에 반드시 수정해야 할 사항이 무엇인지 물을 때 사용하세요. 이는 커뮤니티의 오래된 '프로덕션 감사' 아이디어를 유지보수자 친화적으로 재작성한 것입니다: 유용한 프로덕션 준비 상태 렌즈는 유지하고, 핀 고정되지 않은 외부 실행 및 타사 데이터 공유는 제거했습니다.
사용 시기
- 사용자가 "이거 프로덕션 준비 됐나요?", "프로덕션에서 뭐가 깨질까요?", "무엇을 놓쳤나요?", "이 레포 감사해 주세요", "출시 준비 완료?"라고 물을 때
- 기능이 병합되어 배포 전 또는 병합 후 위험 점검이 필요할 때
- 공개 출시, 데모, 고객 롤아웃, 투자자 워크스루가 임박했을 때
- CI는 통과했지만, 사용자가 테스트 상태뿐만 아니라 프로덕션 위험을 알고 싶어할 때
- 증거 수집을 위해 배포된 URL, 릴리스 브랜치, PR 또는 현재 체크아웃이 가능할 때
사용하지 말아야 할 시기
- 활발한 구현 중이며, 적절한 관점이 라인 수준의 보안 코딩일 때: 먼저
security-review를 사용하세요. - 순수 라이브러리, 템플릿, 문서 전용 레포, 스캐폴드인 경우(단, 사용자가 애플리케이션 준비 상태가 아닌 패키징/릴리스 준비 상태를 원하는 경우는 제외)
- 사용자가 공식 규정 준수 감사를 요청할 때. 이 스킬은 엔지니어링 트리아지이며, 법률, 재무, 의료 또는 규제 인증이 아닙니다.
- 사용 가능한 유일한 증거가 레포, 배포, CI 또는 런타임 표면이 없는 제품 아이디어일 때
작동 방식
로컬 및 사용자 승인 증거를 바탕으로 감사를 구축하세요. 핀 고정되지 않은 원격 코드를 실행하거나, 레포지토리 내용을 타사 서비스에 업로드하거나, 외부 스캐너를 호출하지 마세요(단, 사용자가 해당 특정 도구 및 데이터 흐름을 명시적으로 승인한 경우는 제외).
다음 순서를 따르세요:
- 릴리스 표면을 파악합니다.
- 최근 변경 사항과 현재 브랜치 상태를 읽습니다.
- 레포지토리에 실제로 존재하는 런타임, 인증, 데이터, 결제, 백그라운드 작업, AI, 배포 경계를 검사합니다.
- CI, 테스트, 마이그레이션, 환경 문서 및 롤백 경로를 확인합니다.
- 특정 수정 사항이 포함된 간단한 출시/차단 권장 사항을 생성합니다.
증거 체크리스트
저렴하고 로컬 신호부터 시작하세요:
git status --short --branch
git log --oneline --decorate -20
git diff --stat origin/main...HEAD
그런 다음 프로젝트별 표면을 검사하세요:
- 패키지 스크립트, CI 워크플로우, 릴리스 스크립트, 도커 파일, 배포 매니페스트
- API 라우트, 웹훅, 인증 미들웨어, 백그라운드 워커, 크론 작업, 데이터베이스 마이그레이션
- 환경 변수 문서 및 시작 시 검사
- 관측 가능성 훅, 오류 보고, 로그, 상태 확인, 대시보드
- 롤백, 시드, 마이그레이션, 백필 지침
- 가장 중요한 사용자 경로에 대한 E2E 커버리지
배포된 URL이 범위 내에 있는 경우, 해당 URL에 대해서만 브라우저 또는 HTTP 검사를 사용하고, 사용자가 안전한 테스트 계정을 제공하지 않는 한 인증이 필요한 작업은 피하세요.
위험 관점
보안 및 인증
- 공개 라우트, API 라우트, 관리자 라우트가 명확히 분리되어 있습니까?
- 인증 및 권한 부여가 서버 측에서 시행됩니까?
- 시크릿이 클라이언트 번들, 로그, 예제 출력, 체크인된 파일에서 유출되지 않았습니까?
- 앱에 필요한 속도 제한, CSRF 보호, CORS 정책, 업로드 검증이 존재합니까?
- AI 또는 에이전트 표면이 프롬프트 인젝션, 도구 남용, 권한 있는 작업으로의 신뢰할 수 없는 콘텐츠 유입을 방어합니까?
데이터 무결성
- 마이그레이션이 깔끔하게 정방향으로 실행되고 롤백 또는 복구 계획이 있습니까?
- 파괴적인 마이그레이션, 백필, 데이터 가져오기가 안전하게 단계적으로 수행됩니까?
- 데이터베이스 정책, 권한, 서비스 역할 경계가 앱의 테넌시 모델과 일치합니까?
- 쓰기, 작업, 웹훅 핸들러에 대한 재시도가 멱등적입니까?
결제 및 웹훅
- 신뢰할 수 있는 페이로드 필드를 구문 분석하기 전에 웹훅 서명이 확인됩니까?
- 각 결제, 구독, 이행 웹훅이 멱등적입니까?
- 재전송, 중복 전달, 순서가 잘못된 전달이 처리됩니까?
- 테스트 모드와 라이브 모드 자격 증명이 분리되어 있습니까?
운영
- 문서화된 명령을 사용하여 깨끗한 체크아웃에서 앱을 시작할 수 있습니까?
- 필수 환경 변수의 이름이 지정되고, 유효성이 검사되며, 실패 시 빠르게 실패합니까?
- 종속성에 연결할 수 있음을 증명하는 상태 확인이 있습니까?
- 배포, 롤백, 인시던트 담당자 경로가 문서화되어 있습니까?
- 로그가 시크릿이나 개인 데이터를 유출하지 않고 유용합니까?
사용자 경험
- 출시에 중요한 경로가 데스크톱과 모바일에서 모두 커버됩니까?
- 폼이 모바일에서 입력 줌, 레이아웃 겹침, 제출 차단 상태 없이 사용 가능합니까?
- 로딩, 빈 상태, 오류, 권한 거부 상태가 사용자에게 무슨 일이 일어났는지 알려줍니까?
- 중요한 작업이 실패할 때 지원 또는 복구 경로가 있습니까?
점수 매기기
점수는 수학적 확실성을 암시하는 것이 아니라 우선순위를 강제하는 데 사용하세요.
| 대역 | 점수 | 의미 |
|---|---|---|
| 차단됨 | 0-49 | 최고 위험이 수정될 때까지 출시하지 마십시오 |
| 위험 | 50-69 | 소규모 롤아웃 또는 내부 베타 뒤에서만 출시하십시오 |
| 조건부 출시 가능 | 70-84 | 소유자가 나열된 위험을 수락하면 출시하십시오 |
| 강력함 | 85-100 | 사용 가능한 증거로 명백한 출시 차단 요인 없음 |
다음 중 하나라도 해당되면 점수를 69로 제한하세요:
- 민감한 데이터에 인증 또는 권한 부여가 누락됨
- 결제 또는 이행 웹훅이 멱등적이지 않음
- 필수 마이그레이션을 안전하게 실행할 수 없음
- 시크릿이 클라이언트 번들, 로그, 커밋된 파일에 노출됨
- 영향이 큰 릴리스에 대한 롤백 경로가 없음
CI가 녹색이 아니거나 출시에 중요한 경로가 종단 간 테스트되지 않은 경우 점수를 84로 제한하세요.
출력 형식
한 문장으로 시작하세요:
프로덕션 감사: 76/100, 조건부 출시 가능, 공개 출시 전에 수정해야 할 두 가지 위험은 웹훅 멱등성과 롤백 문서입니다.
그런 다음 다음을 나열하세요:
차단 항목: 배포 전에 반드시 수정해야 할 항목우선 수정 사항: 점수를 높이기 위해 다음으로 수정할 항목(사용자가 원할 경우)확인된 증거: 검사된 파일, 명령, CI, 배포된 URL 또는 PR누락된 증거: 제공된다면 신뢰도를 변경할 수 있는 것다음 조치: 하나의 구체적인 수정 또는 검증 단계
강점은 간략하게 유지하세요. 사용자는 준비 상태를 물었으므로, 유용한 답변은 남은 위험과 다음 조치입니다.
예시
사용자:
출시 준비 됐나요?
응답:
프로덕션 감사: 68/100, 위험, Stripe 웹훅이 확인되지만 멱등적이지 않고 보류 중인 마이그레이션에 대한 롤백 메모가 없기 때문입니다.
차단 항목:
- 주문을 이행하기 전에 `checkout.session.completed`에 대한 멱등성을 추가하세요.
- `20260511_add_billing_state.sql`에 대한 롤백 경로를 작성하고 테스트하세요.
우선 수정 사항:
- 데이터베이스 및 결제 제공자 연결 가능성을 확인하는 상태 확인을 추가하세요.
- 업그레이드, 웹훅 이행, 결제 페이지 새로 고침에 대한 하나의 E2E 경로를 추가하세요.
확인된 증거:
- `api/stripe/webhook.ts`
- `db/migrations/20260511_add_billing_state.sql`
- 릴리스 브랜치에 대한 GitHub Actions 실행
다음 조치: 웹훅 멱등성을 먼저 패치할까요?
안티 패턴
- 기본 감사 경로로
npx <package>@latest또는 원격 스캐너를 실행하는 것 - 명시적 승인 없이 소스, 시크릿, 고객 데이터, 개인 토폴로지를 외부 감사 서비스에 업로드하는 것
- 확인된 증거를 명명하지 않고 점수를 생성하는 것
- 녹색 CI를 프로덕션 준비 상태로 취급하는 것
- 일반적인 "무엇을 하고 싶은지 알려주세요"로 끝내는 것
함께 보기
- 스킬:
security-review - 스킬:
deployment-patterns - 스킬:
e2e-testing - 스킬:
tdd-workflow - 스킬:
verification-loop