From a04c2388996c4a9e5b7b67d29000195f994ae448 Mon Sep 17 00:00:00 2001 From: Jinhwan Ko Date: Wed, 15 Apr 2026 01:04:11 +0900 Subject: [PATCH] =?UTF-8?q?release:=20rel-001=20CLI=20bot=20token=20lifecy?= =?UTF-8?q?cle=20=EB=B0=B0=ED=8F=AC=20=EC=B2=B4=ED=81=AC=EB=A6=AC=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8/=EB=A1=A4=EB=B0=B1/=EA=B4=80=EC=B0=B0=EA=B3=84?= =?UTF-8?q?=ED=9A=8D=20=EC=B4=88=EC=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-15_cli-bot-token-lifecycle-cli.release.md | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 docs/sdlc/release/rel-001_2026-04-15_cli-bot-token-lifecycle-cli.release.md diff --git a/docs/sdlc/release/rel-001_2026-04-15_cli-bot-token-lifecycle-cli.release.md b/docs/sdlc/release/rel-001_2026-04-15_cli-bot-token-lifecycle-cli.release.md new file mode 100644 index 0000000..30a75c5 --- /dev/null +++ b/docs/sdlc/release/rel-001_2026-04-15_cli-bot-token-lifecycle-cli.release.md @@ -0,0 +1,115 @@ +# 0. 문서 상태 +- 상태: draft +- 승인자: {{DECIDE: 이 Release의 최종 승인자는 누구인가?}} +- 승인 시각: {{CONFIRM: 승인 후 기재}} + +# 1. Release 개요 +- 입력 Verification: ver-001 +- 배포 대상 범위: CLI bot token issue/revoke 기능, TTL/권한 정책 검증, 토큰 출력 마스킹, 감사 로그 분기 처리 +- 배포 방식: {{DECIDE: 점진 배포/일괄 배포 중 선택하라}} +- 배포 환경: {{DATA: 배포 대상 환경(dev/staging/prod)과 배포 윈도우를 입력하라}} +- 배포 가능성 근거: Verification 품질 게이트에서 Blocker 0건, Major 0건, 회귀 테스트 76건 통과 확인 + +# 2. 배포 체크리스트 + +| 항목 | 확인 내용 | 결과 (완료/미완료/해당없음) | 비고 | +|---|---|---|---| +| 설정 검증 | 환경 변수, 시크릿, 외부 연동 키 유효성 확인 | 미완료 | {{DATA: 실제 배포 환경의 시크릿/키 점검 결과를 입력하라}} | +| 데이터 검증 | 마이그레이션 순서, 백업 상태, 복구 가능성 확인 | 완료 | 본 변경은 스키마 마이그레이션 비포함, 기존 백업/복구 절차 유지 | +| 호환성 검증 | 이전 버전 클라이언트/API 호환 여부 확인 | 완료 | API 계약 변경 없음, CLI 기능 확장 중심 변경 | +| 의존성 검증 | 신규/변경 라이브러리 버전 충돌 여부 확인 | 완료 | pyproject 의존성 추가 없음, 충돌 징후 없음 | +| 트래픽 전략 | 점진/일괄 배포 방식과 중단 기준 확인 | 미완료 | 배포 방식 결정 후 중단 기준 수치 확정 필요 | +| 커뮤니케이션 | 사용자 공지, 내부 공지, 온콜 담당자 공유 완료 | 미완료 | {{DATA: 공지 채널/온콜 담당자/공지 시점을 입력하라}} | + +# 3. 롤백 계획 + +## 롤백 트리거 +- 에러율 임계치: 배포 후 15분 이동 평균 기준 5xx 비율 > 2.0% 5분 이상 지속 +- 지연 임계치: p95 응답 지연이 배포 전 기준 대비 50% 이상 상승 상태가 10분 이상 지속 +- 장애 지표: bot token issue/revoke 명령 실패율 > 5% 또는 인증/권한 오류 급증 + +## 롤백 절차 +1. 배포 중단 선언 및 온콜 채널에 롤백 트리거 충족 사실 공유 +2. 직전 안정 커밋으로 애플리케이션 버전 롤백 후 서비스 재기동 +3. 롤백 완료 후 핵심 검증 시나리오와 모니터링 지표 정상화 여부 확인 + +## 데이터 롤백 전략 +- 스키마/데이터 복원 여부: 스키마 변경 없음으로 데이터 롤백 불필요 +- 절차: 애플리케이션 바이너리/코드만 이전 버전으로 복구, 운영 데이터는 유지 + +## 롤백 후 검증 +- 핵심 시나리오 확인 항목: + - healthcheck 200 응답 확인 + - 기존 토큰 인증 경로 정상 동작 확인 + - CLI 기본 조회/쓰기 흐름 회귀 스모크 통과 확인 + +## 롤백 커뮤니케이션 +- 공지 채널: {{DATA: 롤백 공지 채널(예: Slack #oncall, #backend-alerts)을 입력하라}} +- 공지 시각: 롤백 시작 즉시 1차 공지, 복구 완료 후 2차 공지 +- 상태 업데이트 주기: 15분 간격 + +## 참조 런북 +- 롤백 런북: .github/templates/rollback-runbook.template.md + +# 4. 릴리즈 노트 초안 + +## 변경 요약 +- CLI bot token 발급/삭제 명령 추가 및 관련 인증 정책/출력 보안 동작을 반영한다. + +## 주요 변경 내용 +- bot token issue/revoke CLI 명령 제공 및 help 노출 +- --ttl-days/--no-expiry 상호배타 검증, 기본 TTL 365일 정책 적용 +- 비관리자 no-expiry 제한 및 권한 검증 강화 +- 토큰 원문 출력 노출 방지(마스킹) 및 감사 로그 분기 처리 강화 + +## 영향 범위 +- 사용자 영향: 운영자/개발자 CLI 사용 흐름에 bot token 라이프사이클 명령이 추가된다. +- 시스템 영향: 인증/권한 경로와 감사 로그 경로의 실행 분기 증가, API 인터페이스 변경은 없음 + +## 알려진 제한 사항 +- 배포 방식(점진/일괄) 및 운영 공지 채널/온콜 확정 전까지 운영 절차 최종 승인 불가 + +# 5. 배포 후 관찰 계획 + +| 모니터링 항목 | 측정 지표 | 정상 범위 | 이상 감지 기준 | 담당자 | +|---|---|---|---|---| +| API 안정성 | 5xx 비율 | < 1.0% | 2.0% 초과 5분 지속 | {{DATA: 담당자 지정}} | +| API 성능 | p95 지연 | 배포 전 기준 ±20% | 기준 대비 +50% 10분 지속 | {{DATA: 담당자 지정}} | +| CLI 기능 품질 | issue/revoke 성공률 | > 99% | 95% 미만 10분 지속 | {{DATA: 담당자 지정}} | +| 인증/권한 오류 | 401/403 비율 | 배포 전 기준 ±20% | 기준 대비 2배 이상 10분 지속 | {{DATA: 담당자 지정}} | + +## 관찰 기간 +- 집중 관찰 기간: 배포 후 24시간 +- 일반 관찰 기간: 배포 후 7일 + +# 6. 승인된 예외 인계 목록 +해당 없음 + +# 7. Operations 단계 전달 체크 +- [ ] 롤백 가능한 배포 계획 승인됨 +- [ ] 배포 체크리스트 항목 전체 "완료" 또는 "해당없음" 처리됨 +- [x] 릴리즈/롤백 체크리스트가 근거와 함께 완료됨 +- [x] 배포 후 관찰 항목이 정의됨 +- [x] Operations에 전달할 관찰 포인트, 장애 트리거, 후속 대응 절차 준비됨 +- [x] 승인된 예외 이력 인계됨 +- [ ] 최종 승인 + - {{CONFIRM: Release 초안 승인 여부를 확인하라}} + +# 8. 파일 처리 결과 +- 생성/갱신 경로: docs/sdlc/release/rel-001_2026-04-15_cli-bot-token-lifecycle-cli.release.md + +# 9. 사용자 결정 필요 항목 요약 +## {{DECIDE}} +- 이 Release의 최종 승인자는 누구인가? +- 점진 배포/일괄 배포 중 선택하라 + +## {{CONFIRM}} +- 승인 후 기재 +- Release 초안 승인 여부를 확인하라 + +## {{DATA}} +- 배포 대상 환경(dev/staging/prod)과 배포 윈도우를 입력하라 +- 실제 배포 환경의 시크릿/키 점검 결과를 입력하라 +- 공지 채널/온콜 담당자/공지 시점을 입력하라 +- 롤백 공지 채널(예: Slack #oncall, #backend-alerts)을 입력하라 +- 모니터링 담당자를 지정하라