본문으로 건너뛰기
고급약 35분

주간 배포 게이트 운영 — AI가 남긴 판정 근거로 Go/No-Go를 내리고 결정을 기록으로 남기기

판정 레코드가 쌓여도 누군가 배포를 결정해야 한다. 주간 배포 게이트를 자동 판정·사람 검토·결정 기록의 세 단계로 운영하는 법, 차단 규칙과 예외 승인의 설계, AI 판정 근거를 게이트 요약으로 묶는 형식, 조건부 Go와 No-Go의 기록, 결함 관리와의 연결, 그리고 게이트 자체가 형식이 되지 않게 감시하는 법을 다룬다.

  • #배포게이트
  • #GoNoGo
  • #판정근거
  • #예외승인
  • #결함관리
  • #감사추적

개념

모듈 4의 Go/No-Go 회의가 매주 돌아가면

모듈 4 레슨 5에서 릴리스 Go/No-Go 의사결정을 배웠다. 실행 현황은 "무엇을 안 했는가"로, 미해결 결함은 "왜 안 고쳤는가"까지, 잔존 리스크는 가장 쓰기 어렵고 가장 중요한 칸이었다. 그리고 QA는 결정하지 않지만 침묵하지도 않는다.

그 회의가 분기마다 한 번이면 사람이 한 장짜리 요약을 손으로 만들 수 있다. 매주 돌아가면 불가능하다. 매주 사람이 반나절씩 결과를 모으면 게이트는 곧 "지난주와 비슷하네요, Go" 로 형식화된다. 주간 게이트가 살아 있으려면 요약은 기계가 만들고, 사람은 판단이 필요한 곳에만 시간을 쓰는 구조가 필요하다.

이 레슨의 게이트는 세 단계다.

[1] 자동 판정     판정 레코드(레슨 4)를 조회해 차단 규칙을 적용하고 게이트 요약을 만든다
      ↓
[2] 사람 검토     QA가 요약의 경고·예외 요청·판정 불가·표본 검토 결과를 확인한다
      ↓
[3] 결정과 기록   책임자가 Go / 조건부 Go / No-Go 를 결정하고, 결정과 근거를 기록한다

1단계 — 차단 규칙은 코드로, 문장이 아니라 조건으로

차단 규칙이 문서에 문장으로만 있으면 매주 해석이 달라진다. 규칙을 조건으로 쓰고, 버전을 붙여 저장소에 둔다.

# gate-policy.yaml — version 2026.09.1  (owner: qa-platform)
block:
  - id: B1
    when: "verdict == 'fail' and criterion.severity in ['critical', 'high'] and layer in ['regression', 'pre-release']"
    reason: "치명·높음 기준 실패"
  - id: B2
    when: "criterion.category == 'upgrade' and verdict != 'pass'"
    reason: "업그레이드 경로 미통과 — 기존 고객 리소스 위험"
  - id: B3
    when: "judge.type == 'llm' and calibration.status != 'approved'"
    reason: "보정 승인되지 않은 판정자의 판정은 근거로 쓰지 않는다"
  - id: B4
    when: "required_criteria_not_executed > 0"
    reason: "실행되지 않은 필수 기준 — 통과가 아니라 미확인"
warn:
  - id: W1
    when: "attempt_verdicts contains both 'pass' and 'fail'"
    reason: "재시도 통과 — 플래키 여부 확인 필요"
  - id: W2
    when: "verdict == 'abstain'"
    reason: "판정자 판정 불가 — 사람 판정 필요"
  - id: W3
    when: "human_sample.pass_disagreements >= 2"
    reason: "해석 판정 PASS 표본에서 사람 불일치 — 판정자 신뢰 하락"

규칙 B4를 보자. 실행되지 않은 기준은 통과가 아니다. 환경 문제로 테스트가 안 돌았는데 "실패 0건"으로 요약되는 것이 자동 게이트의 가장 흔한 거짓 Go다. 모듈 4 레슨 5의 "실행 현황은 무엇을 안 했는가"가 코드로 옮겨진 것이다.

규칙 B3은 레슨 3과 게이트를 잇는다. 보정 기록이 없거나 만료된 판정자의 PASS는 근거 목록에서 빠진다. 그 기준은 미확인으로 계산되어 B4에 걸린다.

게이트 요약 — 한 장, 기계가 만든다

자동 판정이 만드는 요약의 형식을 정한다. 모듈 4 레슨 5의 한 장 양식에 AI 판정 근거 칸이 더해진다.

[주간 배포 게이트 요약 — 2026-W38 후보 release-2026.38.0]
생성: 2026-09-17 09:00 (gate-policy 2026.09.1, criteria compute 2026.09.2 / train 2026.09.1 / infer 2026.08.4)
 
자동 판정 결과: 차단 1건, 경고 4건 → 사람 검토 필요
 
■ 차단
  B1  D-COMP-042 쿼터 거부 후 포트 잔존 (회귀 3/3 실패, 릴리스 전 2/2 실패)
      결함 PLAT-2231 (높음), 담당 compute팀, 수정 PR #4412 리뷰 중
      근거: 레코드 rgr-2026-09-16-0200, pre-2026-09-17-0600 / 증거 경로
 
■ 경고
  W1  D-TRAIN-031 체크포인트 재개 후 스텝 번호 연속성 — 회귀 5회 중 1회 실패
  W2  I-INFER-ERRMSG-03 판정 불가 2건
  W3  (해당 없음)
  기타 판정자 보정 cal-logsum 만료 D-7
 
■ 실행 현황
  필수 기준 412 / 실행 412 / 통과 409 / 실패 1 / 경고 대상 2
  미실행 0
  이번 주 새로 추가된 기준 6 (전부 실행)
  릴리스 전 전용: 업그레이드 경로 18/18 통과, 롤백 리허설 통과, 성능 기준 11/11 통과
 
■ 해석 판정 근거
  보정 승인 판정자 3 (errmsg κ0.78 / logsum κ0.74 / ui-warning κ0.81)
  PASS 표본 재검토 30건 중 사람 불일치 1건 (경보선 2건 미만)
 
■ 지난주 대비
  새 실패 1 / 해결된 실패 3 / 재시도 통과 증가 +2

요약의 모든 줄이 레코드 ID로 추적 된다는 점이 핵심이다. 회의에서 "그 실패 진짜예요?"라는 질문이 나오면 레코드와 증거 경로를 바로 연다. 요약을 사람이 쓰면 이 연결이 끊긴다.

요약에 AI가 쓴 자연어 설명을 곁들일 수도 있다. 그 경우에도 숫자와 차단 판정은 규칙 엔진이 만들고, 자연어는 설명만 한다. 설명이 요약의 숫자와 어긋나지 않는지 결정적으로 대조하는 검사를 붙인다. LLM이 "특이 사항 없음"이라고 요약했는데 차단이 1건이면 요약 생성 자체가 실패다.

2단계 — 사람 검토는 어디에 시간을 쓰는가

QA가 게이트 검토에 쓰는 시간은 네 곳으로 정해 둔다.

검토 대상확인할 것
차단 항목결함이 맞는가(환경·데이터 문제 아닌가), 심각도가 맞는가, 수정 일정
경고 항목재시도 통과는 플래키인가 간헐 결함인가, 판정 불가 건의 사람 판정
예외 요청차단 항목을 안고 배포하자는 요청의 근거
기준 변경이번 주 완화·삭제된 기준이 있는가, 승인 기록이 있는가

마지막 줄은 자주 빠진다. 게이트를 통과시키는 가장 조용한 방법은 기준을 지우는 것 이다. 게이트 요약에 "이번 주 기준 변경" 절을 넣고, 완화 변경은 요약 맨 위로 올린다.

재시도 통과(W1)를 판단할 때는 모듈 13 레슨 6의 네 관점(테스트 코드·앱·환경·인프라)으로 좁힌다. 체크포인트 재개처럼 간헐성이 제품의 실제 결함일 수 있는 영역 에서 "플래키니까 무시"는 위험하다. 학습 작업이 다섯 번에 한 번 스텝 번호를 잃는다면, 고객의 12시간 학습이 다섯 번에 한 번 틀린 지점에서 재개된다는 뜻일 수 있다.

예외 승인 — 막을 권한과 풀 권한을 나눈다

차단을 안고 배포해야 하는 상황은 반드시 온다. 보안 패치가 급하거나, 차단 결함의 영향이 매우 좁을 때다. 예외 자체는 나쁘지 않다. 기록 없는 예외 가 나쁘다.

[게이트 예외 기록 — EX-2026-038]
대상 차단:      B1 / D-COMP-042 쿼터 거부 후 포트 잔존
요청자:         compute팀 리드
요청 사유:      이번 후보에 CVE 대응 패치 포함, 다음 주 배포로 미룰 수 없음
영향 분석:      쿼터 초과 시에만 발생, 잔존 포트는 과금 대상 아님, 포트 쿼터를 1개씩 소모
               지난 30일 운영 쿼터 초과 요청 212건 → 최대 212개 포트 누수 추정
완화 조치:      운영 정리 배치로 1시간마다 고아 포트 삭제 (배포와 함께 활성화, 검증 완료 레코드 첨부)
만료:           다음 주 게이트 (W39) 까지. W39 에서 D-COMP-042 미통과 시 예외 연장 불가, 차단
QA 의견:        완화 조치 검증 후 조건부 동의. 정리 배치 자체 실패 시 알림 설정 확인 필요
승인:           플랫폼 엔지니어링 책임자 (2026-09-17 11:20)

설계 원칙은 셋이다. 막는 사람(QA 게이트)과 푸는 사람(책임자)을 나눈다. 예외에는 만료 를 붙인다. 완화 조치도 검증된 레코드 로 첨부한다. 만료 없는 예외는 영구 면제가 되고, 몇 달 뒤 게이트에는 예외만 남는다.

3단계 — 결정은 셋 중 하나, 기록은 항상

모듈 4 레슨 5의 조건부 Go가 주간 게이트에서 가장 자주 쓰인다. 결정 기록 양식을 고정한다.

[게이트 결정 — 2026-W38]
결정:          조건부 Go
조건:          (1) EX-2026-038 완화 배치 활성화 확인 후 배포
               (2) 배포 후 24시간 고아 포트 수 모니터링, 50개 초과 시 롤백 검토
               (3) D-TRAIN-031 은 격리하지 않고 결함 PLAT-2240 으로 등록, W39 회귀에서 20회 반복 실행
근거:          게이트 요약 gate-2026-W38 (레코드 412건), 예외 EX-2026-038, 판정자 보정 3건
반대·유보 의견:  QA — D-TRAIN-031 이 제품 결함일 가능성 배제 못함, 학습 작업 재개 기능 공지 검토 요청
결정자:        플랫폼 엔지니어링 책임자
참석:          QA 리드, compute·train·infer 리드, SRE 당번
후속 확인:      2026-09-18 10:00 SRE 당번이 조건 (2) 결과를 이 기록에 추가

"반대·유보 의견" 칸이 QA가 침묵하지 않는 자리 다. 결정이 QA 의견과 달라도 괜찮다. 의견이 기록되어 있으면 나중에 그 판단이 옳았는지 배울 수 있다. 기록이 없으면 사고 후 "QA는 뭐 했냐"만 남는다.

기록은 게이트 요약·레코드·예외·결정이 서로 링크 로 이어져야 한다. 채용 공고의 "판정은 근거와 함께 기록으로 남습니다"가 요구하는 것이 이 연결이다. 인증 심사나 고객 납품 검증(모듈 39 레슨 8)에서 "이 버전을 왜 배포했는가"를 물을 때 이 사슬이 그대로 답이 된다.

결함 관리와 잇기

게이트의 차단·경고는 결함 관리 흐름(모듈 6)에 들어가야 추적된다. 자동화할 연결은 이렇다.

이벤트자동 동작
기준이 회귀에서 처음 실패결함 초안 생성: 기준 ID, 재현 조건(레코드의 환경·커밋·입력), 증거 링크. 사람이 확인 후 등록
같은 기준이 연속 실패새 결함을 만들지 않고 기존 결함에 발생 기록 추가
결함이 해결됨으로 바뀜해당 기준을 다음 회귀에서 반복 실행하도록 표시
기준이 통과로 돌아옴결함에 확인 레코드 링크, 사람이 종료

결함 초안은 AI가 쓰기 좋은 영역이다. 레코드에 재현 조건이 구조화되어 있으므로 모듈 6 레슨 2의 "좋은 결함 리포트" 형식으로 옮기는 일은 해석이 적다. 다만 등록 버튼은 사람이 누른다. 자동 등록은 중복·오분류 결함을 쌓고, 결함 추세 지표(레슨 6)를 오염시킨다. 모듈 18a 레슨 2의 AI 결함 분류·중복 탐지를 초안 단계에 붙이면 사람의 확인 시간이 줄어든다.

게이트가 형식이 되는 신호

게이트는 운영할수록 무뎌진다. 다음 신호를 분기마다 확인한다.

신호의미
예외 승인율이 계속 오른다차단 규칙이 현실과 안 맞거나, 예외가 기본 경로가 됐다
차단이 몇 달째 0건인데 운영 결함은 나온다기준이 운영 결함을 못 본다. 탈출 결함을 기준으로 역추적
결정 기록의 반대 의견 칸이 늘 비어 있다QA가 말하지 않거나, 말할 자리가 형식적이다
게이트 요약을 아무도 열지 않고 결정한다요약이 판단에 필요한 정보를 주지 못한다
조건부 Go의 조건 확인 기록이 비어 있다조건이 장식이다

두 번째 신호가 가장 중요하다. 운영에서 나온 결함마다 "어느 기준이 잡았어야 했나"를 묻고 기준을 추가한다. 이 역추적이 게이트를 시간이 갈수록 강하게 만드는 유일한 경로다.

실무에서 왜 필요한가

"주간 배포 게이트를 운영하기 시작한 단계"인 조직에서 QA가 처음 맡는 일은 대개 게이트가 매주 같은 방식으로 돌아가게 만드는 것이다. 규칙이 문장이면 담당자에 따라 결정이 달라지고, 요약을 손으로 만들면 담당자가 휴가일 때 게이트가 멈춘다. 규칙을 코드로, 요약을 레코드 조회로, 결정을 고정 양식으로 만드는 순간 게이트가 사람이 아니라 체계 가 된다.

AI 판정이 들어간 게이트에서는 한 가지가 더 필요하다. 판정자를 믿는 근거(보정 기록)가 게이트 요약에 보여야 한다. 그래야 책임자가 "AI가 통과라고 했으니"가 아니라 "이 범위에서 믿을 수 있는 판정자가 통과라고 했으니"로 결정하고, QA가 최종 판단을 책임질 수 있다.

실습 과제

과제 1 — 차단 규칙 작성 (20분)

본문의 gate-policy.yaml 을 참고해, 본인 조직(또는 가상의 GPU 클라우드)의 차단 규칙 4개와 경고 규칙 3개를 조건으로 쓴다. "실행되지 않은 필수 기준"과 "보정되지 않은 판정자" 규칙은 반드시 포함한다.

과제 2 — 게이트 요약 읽기 (15분)

본문의 게이트 요약을 읽고, 책임자가 조건부 Go를 결정하기 전에 QA가 확인해야 할 질문 다섯 개를 적는다. 각 질문을 어떤 레코드로 확인할지도 적는다.

과제 3 — 예외 기록 (20분)

"릴리스 전 층의 롤백 리허설이 DB 마이그레이션 비호환으로 실패했지만, 이번 후보에는 고객이 기다리는 기능이 들어 있다"는 상황의 예외 요청 기록을 쓴다. 영향 분석, 완화 조치, 만료, QA 의견을 포함하고, 이 예외를 승인하지 말아야 할 조건도 적는다.

과제 4 (선택) — 탈출 결함 역추적 (15분)

"배포 후 고객이 MIG 분할 GPU에서 추론 엔드포인트를 만들면 메모리 한도가 전체 GPU 기준으로 표시된다"는 운영 결함에 대해, 어느 층의 어느 기준이 잡았어야 했는지, 기준이 없었다면 다섯 칸으로 새 기준을 쓴다.

자가 체크리스트

  • 주간 게이트를 자동 판정·사람 검토·결정 기록의 세 단계로 나누는 이유를 설명할 수 있다
  • 차단 규칙을 문장이 아니라 조건으로 쓰고 버전 관리할 수 있다
  • 실행되지 않은 기준을 통과로 세면 안 되는 이유를 안다
  • 게이트 요약의 모든 줄을 판정 레코드로 추적되게 설계할 수 있다
  • 자연어 요약과 규칙 엔진의 숫자를 대조해야 하는 이유를 안다
  • 사람 검토 시간을 차단·경고·예외·기준 변경 네 곳에 배분할 수 있다
  • 예외 승인의 세 원칙(권한 분리·만료·검증된 완화)을 말할 수 있다
  • 결정 기록에 반대·유보 의견 칸을 두는 이유를 안다
  • 게이트 결과를 결함 관리와 자동으로 잇되 등록은 사람이 하는 이유를 안다
  • 게이트가 형식이 되는 신호를 알아보고, 탈출 결함으로 기준을 역추적할 수 있다

흔한 실수

"실패 0건"을 통과로 읽는다. 미실행 기준이 있으면 통과가 아니라 미확인이다.

요약을 사람이 손으로 만든다. 매주 반복되면 형식이 되고, 레코드와의 연결이 끊긴다.

LLM이 쓴 요약 문장을 판정 근거로 쓴다. 숫자와 차단은 규칙 엔진이, 문장은 설명만.

만료 없는 예외를 승인한다. 몇 달 뒤 게이트는 예외 목록이 된다.

기준 완화를 게이트에서 보지 않는다. 게이트를 통과시키는 가장 조용한 방법이다.

결함을 자동 등록한다. 중복과 오분류가 결함 추세 지표를 오염시킨다.

참고 자료

낯선 말 풀이

이 레슨에 나온 약어입니다. 본문에서도 처음 나올 때 점선으로 표시해 두었습니다 (제목과 링크 글자는 그대로 둡니다).

Go/No-Go — 내보낼지 말지 판정
미리 정해 둔 조건을 놓고 "이대로 내보낸다 / 내보내지 않는다" 를 한자리에서 정하는 일.
QA — 품질보증
만든 것이 쓸 만한지 확인하고, 애초에 덜 망가지게 만드는 방법을 정하는 일. "테스트"는 그 일의 일부다.
AI — 인공지능
사람이 규칙을 일일이 적지 않아도 데이터에서 규칙을 찾아 판단하는 소프트웨어.
ID — 식별자
무엇 하나를 다른 것과 구별하기 위해 붙인 이름이나 번호.
LLM — 대규모 언어 모델
엄청난 양의 글을 학습해 말을 이어 쓰는 모델. 대화형 인공지능의 바탕이다.
GPU — 그래픽처리장치
비슷한 계산을 한꺼번에 많이 하는 데 특화된 부품. 그림과 기계학습에 쓰인다.
DB — 데이터베이스
데이터를 넣어 두고 꺼내 쓰는 저장소. 보통 표 여러 개가 서로 연결된 형태다.
DORA — 도라 지표
개발·배포를 얼마나 잘하는지 네 가지 숫자로 재는 방식.

용어집 전체 보기