LogoSkills

debrief

Post-incident blameless analysis โ€” root cause, blast radius, gate gap analysis, action items

ํ•ญ๋ชฉ๋‚ด์šฉ
Invoke/debrief
Categorydev-cycle
Complexitymoderate

/debrief โ€” ์‚ฌ๊ณ  ๋ณต๊ธฐ ๋ฆฌํฌํŠธ#

ํ•œ๋งˆ๋””๋กœ#

์„œ๋น„์Šค์— ๋ฌธ์ œ(์žฅ์• ยท์‹ฌ๊ฐํ•œ ๋ฒ„๊ทธ)๊ฐ€ ํ„ฐ์ง„ ๋’ค, "๋ˆ„๊ตฌ ํƒ“"์ด ์•„๋‹ˆ๋ผ "์™œ ์ผ์–ด๋‚ฌ๊ณ  ์–ด๋–ป๊ฒŒ ๋‹ค์‹œ ์•ˆ ์ƒ๊ธฐ๊ฒŒ ํ• ์ง€"๋ฅผ ์ฐจ๋ถ„ํžˆ ์ •๋ฆฌํ•ด ์ฃผ๋Š” ์‚ฌํ›„ ๋ถ„์„ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋น„ํ–‰๊ธฐ ์‚ฌ๊ณ  ์กฐ์‚ฌ๊ด€์ด ๋ธ”๋ž™๋ฐ•์Šค๋ฅผ ์—ด์–ด ์›์ธ์„ ์ฐพ๊ณ  ์žฌ๋ฐœ ๋ฐฉ์ง€์ฑ…์„ ์ ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์š”.

๋ˆ„๊ฐ€ยท์–ธ์ œ ์“ฐ๋‚˜์š”#

  • ์šด์˜ ์„œ๋น„์Šค์— ์žฅ์• ๊ฐ€ ํ„ฐ์ง„ ์งํ›„ โ€” ๊ณ ๊ฐ์—๊ฒŒ ์˜ํ–ฅ์ด ๊ฐ„ ์‹ค์ œ ์‚ฌ๊ณ ๊ฐ€ ๋‚ฌ์„ ๋•Œ
  • ์‹ฌ๊ฐํ•œ ๋ฒ„๊ทธ๊ฐ€ ๊ฒ€์ˆ˜ ๋‹จ๊ณ„๋ฅผ ๊ทธ๋ƒฅ ํ†ต๊ณผํ•ด ๋ฐฐํฌ๋œ ๊ฒฝ์šฐ โ€” "์™œ ์šฐ๋ฆฌ๊ฐ€ ๋ชป ๊ฑธ๋ €์ง€?"๋ฅผ ๋”ฐ์ ธ๋ด์•ผ ํ•  ๋•Œ
  • ํŒ€ ํšŒ๊ณ (post-mortem)๊ฐ€ ํ•„์š”ํ•  ๋•Œ โ€” ์‚ฌ๊ณ ๋ฅผ ๊ตํ›ˆ์œผ๋กœ ๋‚จ๊ธฐ๊ณ  ์‹ถ์„ ๋•Œ

๊ถŒ์žฅ: ์‚ฌ๊ณ  ํ›„ 48์‹œ๊ฐ„ ์ด๋‚ด์— ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค (๊ธฐ์–ต์ด ์ƒ์ƒํ•  ๋•Œ).

๋ฌด์—‡์„ ํ•ด์ฃผ๋‚˜์š”#

์‚ฌ๊ณ  ํ•œ ๊ฑด์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ถ„์„ํ•ด docs/debriefs/YYYY-MM-DD-{์ฃผ์ œ}-debrief.md ๋ผ๋Š” ๋ฆฌํฌํŠธ ํŒŒ์ผ ํ•œ ๊ฐœ๋กœ ์ •๋ฆฌํ•ด ์ค๋‹ˆ๋‹ค. ๋ฆฌํฌํŠธ ์•ˆ์—๋Š”:

  • ์š”์•ฝ๊ณผ ํƒ€์ž„๋ผ์ธ โ€” ์–ธ์ œ ํ„ฐ์กŒ๊ณ , ์–ธ์ œ ๋ฐœ๊ฒฌํ–ˆ๊ณ , ์–ธ์ œ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ (์ด ๋ณต๊ตฌ ์‹œ๊ฐ„ ํฌํ•จ)
  • ๊ทผ๋ณธ ์›์ธ โ€” "์™œ?"๋ฅผ ๋‹ค์„ฏ ๋ฒˆ ํŒŒ๊ณ ๋“ค์–ด(5 Whys) ์ง„์งœ ์›์ธ๊นŒ์ง€ ์ถ”์ 
  • ์˜ํ–ฅ ๋ฒ”์œ„ โ€” ์–ด๋–ค ์‚ฌ์šฉ์žยท์„œ๋น„์Šคยท๋ฐ์ดํ„ฐ๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์•˜๋Š”์ง€
  • ๊ฒ€์ˆ˜ ๊ตฌ๋ฉ ๋ถ„์„ โ€” ์šฐ๋ฆฌ ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ(์ŠคํŽ™ยท๋ถ„์„ยท๊ตฌํ˜„ยท์ฝ”๋“œ ๋ฆฌ๋ทฐ) ์ค‘ ์–ด๋””์„œ ์ด๊ฑธ ๋†“์ณค๋Š”์ง€
  • ๊ฐœ์„  ์•ก์…˜ โ€” ์žฌ๋ฐœ ๋ฐฉ์ง€ยท์กฐ๊ธฐ ํƒ์ง€ยท๋Œ€์‘ ๊ฐœ์„  ํ•ญ๋ชฉ (๋‹ด๋‹น์žยท๊ธฐํ•œ๊นŒ์ง€)

์ถ”๊ฐ€๋กœ, ๊ฒŒ์ดํŠธ ๊ฐœ์„ ์•ˆ์ด ๋‚˜์˜ค๋ฉด ๊ด€๋ จ ํŒŒ์ผ์— ๋ฉ”๋ชจ(TODO)๋ฅผ ๋‚จ๊ธฐ๊ณ  ํ•™์Šต ์ •๋ฆฌ(/session:wrap)์™€๋„ ์—ฐ๋™๋ฉ๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ์“ฐ๋‚˜์š”#

# ์ธ์‹œ๋˜ํŠธ ์„ค๋ช…์œผ๋กœ ์‹œ์ž‘
/debrief  " ๋กœ๊ทธ์ธ ์„œ๋น„์Šค ์žฅ์•  โ€” ์†Œ์…œ ๋กœ๊ทธ์ธ ํ† ํฐ ๋งŒ๋ฃŒ ๋ฏธ์ฒ˜๋ฆฌ " 

 # ์ด์Šˆ ๋ฒˆํ˜ธ ๊ธฐ๋ฐ˜
/debrief --issue 456

# ํŠน์ • ์ปค๋ฐ‹/PR ๊ธฐ๋ฐ˜
/debrief --pr 789

์œ„ ์…‹ ์ค‘ ์ตœ์†Œ ํ•˜๋‚˜๋Š” ๋ฐ˜๋“œ์‹œ ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ๊ณ  ์„ค๋ช…, ์ด์Šˆ ๋ฒˆํ˜ธ, PR ๋ฒˆํ˜ธ). ๋ถ„์„ ๊นŠ์ด๋ฅผ ์กฐ์ ˆํ•˜๋ ค๋ฉด --depth quick(๋น ๋ฅด๊ฒŒ) / standard(๊ธฐ๋ณธ) / deep(๊นŠ๊ฒŒ)์„, ์ €์žฅ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด --output ๊ฒฝ๋กœ๋ฅผ ๋ง๋ถ™์ด์„ธ์š”.

์•ˆ์—์„œ ๋ฌด์Šจ ์ผ์ด ๋ฒŒ์–ด์ง€๋‚˜์š”#

ํฌ๊ฒŒ ๋‹ค์„ฏ ๋‹จ๊ณ„๋กœ ์‚ฌ๊ณ ๋ฅผ ํŒŒํ—ค์น˜๊ณ  ๋งˆ์ง€๋ง‰์— ๋ฆฌํฌํŠธ๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค.

  1. ์ •๋ณด ์ˆ˜์ง‘ โ€” ์ด์ŠˆยทPRยท์ฝ”๋“œ ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ๋ชจ์•„ ์‚ฌ๊ณ ์˜ ํƒ€์ž„๋ผ์ธ(๋ฐœ์ƒโ†’๊ฐ์ง€โ†’๋Œ€์‘โ†’ํ•ด๊ฒฐ)๊ณผ ์ด ๋ณต๊ตฌ ์‹œ๊ฐ„์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ทผ๋ณธ ์›์ธ ๋ถ„์„ โ€” "์™œ?"๋ฅผ ๋ฐ˜๋ณตํ•ด ์ง„์งœ ์›์ธ๊นŒ์ง€ ํŒŒ๊ณ ๋“ค๊ณ , ์˜ํ–ฅ๋ฐ›์€ ์‚ฌ์šฉ์žยท์ฝ”๋“œยท๋ฐ์ดํ„ฐ ๋ฒ”์œ„๋ฅผ ์งš์Šต๋‹ˆ๋‹ค.
  3. ๊ฒ€์ˆ˜ ๊ตฌ๋ฉ ๋ถ„์„ โ€” ์ŠคํŽ™ยท๋ถ„์„ยท๊ตฌํ˜„ยท์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ฐ ๋‹จ๊ณ„์—์„œ "์—ฌ๊ธฐ์„œ ๋ง‰์•˜์–ด์•ผ ํ–ˆ๋Š”๋ฐ ์™œ ๋ชป ๋ง‰์•˜๋‚˜"๋ฅผ ๋”ฐ์ง‘๋‹ˆ๋‹ค.
  4. ๊ฐœ์„  ์•ก์…˜ ๋„์ถœ โ€” ์žฌ๋ฐœ ๋ฐฉ์ง€, ์กฐ๊ธฐ ํƒ์ง€, ๋Œ€์‘ ๊ฐœ์„ ์œผ๋กœ ๋‚˜๋ˆ  ๊ตฌ์ฒด์ ์ธ ํ•  ์ผ์„ ์šฐ์„ ์ˆœ์œ„์™€ ํ•จ๊ป˜ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  5. ๋ฌธ์„œํ™”ยทํ•™์Šต โ€” ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํฌํŠธ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ณ , ํŒ€ ํ•™์Šต ์ •๋ฆฌ์™€ ๊ฒŒ์ดํŠธ ๊ฐœ์„ ์œผ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

โš™๏ธ ์ƒ์„ธ ์˜ต์…˜ยท์‹คํ–‰ ๋ช…์„ธ (๊ฐœ๋ฐœ์ž / AI ์—์ด์ „ํŠธ์šฉ)

Triggers#

  • Production ์ธ์‹œ๋˜ํŠธ ๋ฐœ์ƒ ํ›„
  • ์‹ฌ๊ฐํ•œ ๋ฒ„๊ทธ๊ฐ€ ๊ฒŒ์ดํŠธ๋ฅผ ํ†ต๊ณผํ•˜์—ฌ ๋ฐฐํฌ๋œ ๊ฒฝ์šฐ
  • ํŒ€ ํšŒ๊ณ  ๋˜๋Š” post-mortem์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

Usage#

# ์ธ์‹œ๋˜ํŠธ ์„ค๋ช…์œผ๋กœ ์‹œ์ž‘
/debrief  " ๋กœ๊ทธ์ธ ์„œ๋น„์Šค ์žฅ์•  โ€” ์†Œ์…œ ๋กœ๊ทธ์ธ ํ† ํฐ ๋งŒ๋ฃŒ ๋ฏธ์ฒ˜๋ฆฌ " 

 # ์ด์Šˆ ๋ฒˆํ˜ธ ๊ธฐ๋ฐ˜
/debrief --issue 456

# ํŠน์ • ์ปค๋ฐ‹/PR ๊ธฐ๋ฐ˜
/debrief --pr 789

Parameters#

ParameterRequiredDescription
descriptionโœ…*์ธ์‹œ๋˜ํŠธ ์„ค๋ช…
--issueโœ…*๊ด€๋ จ ZenHub ์ด์Šˆ ๋ฒˆํ˜ธ
--prโœ…*๊ด€๋ จ PR ๋ฒˆํ˜ธ

*ํ•˜๋‚˜ ์ด์ƒ ํ•„์ˆ˜

Options#

OptionDefaultDescription
--depthstandard๋ถ„์„ ๊นŠ์ด (quick, standard, deep)
--outputdocs/debriefs/์‚ฐ์ถœ๋ฌผ ์ €์žฅ ๊ฒฝ๋กœ

Execution Flow#

Phase 1: Information Gathering#

  1. ์ธ์‹œ๋˜ํŠธ ์ปจํ…์ŠคํŠธ ์ˆ˜์ง‘

    • ์ด์Šˆ/PR์—์„œ ์ •๋ณด ์ถ”์ถœ (ZenHub MCP ํ™œ์šฉ)
    • ๊ด€๋ จ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์ด๋ ฅ ์กฐํšŒ (git log, git diff)
    • ์˜ํ–ฅ๋ฐ›์€ ํŒŒ์ผ/๋ชจ๋“ˆ ์‹๋ณ„
  2. ํƒ€์ž„๋ผ์ธ ๊ตฌ์„ฑ

    • ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ์ 
    • ๊ฐ์ง€ ์‹œ์  ๋ฐ ๋ฐฉ๋ฒ•
    • ๋Œ€์‘ ์‹œ์ž‘ ์‹œ์ 
    • ํ•ด๊ฒฐ ์‹œ์ 
    • ์ „์ฒด MTTR (Mean Time To Resolve) ์‚ฐ์ •

Phase 2: Root Cause Analysis#

  1. 5 Whys ๋ถ„์„

    • Why 1: ์ง์ ‘์  ์›์ธ
    • Why 2: ์™œ ๊ทธ ์›์ธ์ด ๋ฐœ์ƒํ–ˆ๋Š”๊ฐ€
    • Why 3-5: ๊ทผ๋ณธ ์›์ธ๊นŒ์ง€ ์žฌ๊ท€์  ์ถ”์ 
    • ๊ฐ ๋‹จ๊ณ„์—์„œ ์ฆ๊ฑฐ(์ฝ”๋“œ, ์ปค๋ฐ‹, ์„ค์ •) ์ฒจ๋ถ€
  2. Blast Radius ๋ถ„์„

    • ์˜ํ–ฅ๋ฐ›์€ ์‚ฌ์šฉ์ž/์„œ๋น„์Šค ๋ฒ”์œ„
    • ์˜ํ–ฅ๋ฐ›์€ ์ฝ”๋“œ ๋ชจ๋“ˆ (Grep ๊ธฐ๋ฐ˜ ์˜์กด์„ฑ ์ถ”์ )
    • ๋ฐ์ดํ„ฐ ์˜ํ–ฅ (์†์‹ค, ๋ถˆ์ผ์น˜ ์—ฌ๋ถ€)

Phase 3: Gate Gap Analysis#

  1. ๊ฒŒ์ดํŠธ์—์„œ ๋†“์นœ ๊ฒƒ ๋ถ„์„

    • Specification Gate: ์ด ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์ŠคํŽ™์— ํฌํ•จ๋˜์–ด ์žˆ์—ˆ๋Š”๊ฐ€?
    • Analysis Gate: Acceptance Criteria์— ์ด ์ผ€์ด์Šค๊ฐ€ ์žˆ์—ˆ๋Š”๊ฐ€?
    • Implementation Gate: ํ…Œ์ŠคํŠธ๊ฐ€ ์ด ์ผ€์ด์Šค๋ฅผ ์ปค๋ฒ„ํ–ˆ๋Š”๊ฐ€?
    • Code Review: ๋ฆฌ๋ทฐ์–ด๊ฐ€ ์ด ํŒจํ„ด์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๊ฐ€?
  2. ๊ธฐ์—ฌ ์š”์ธ ์‹๋ณ„

    • ์‹œ์Šคํ…œ์  ์š”์ธ (์•„ํ‚คํ…์ฒ˜, ์ธํ”„๋ผ)
    • ํ”„๋กœ์„ธ์Šค์  ์š”์ธ (๋ฆฌ๋ทฐ, ํ…Œ์ŠคํŠธ)
    • ๋„๊ตฌ์  ์š”์ธ (๋ชจ๋‹ˆํ„ฐ๋ง, ์•Œ๋ฆผ)

Phase 4: Action Items#

  1. ๊ฐœ์„  ์กฐ์น˜ ๋„์ถœ (๊ฐ ํ•ญ๋ชฉ์— ์šฐ์„ ์ˆœ์œ„ ๋ถ€์—ฌ)

    Prevent (์žฌ๋ฐœ ๋ฐฉ์ง€):

    • ์ฝ”๋“œ ๋ณ€๊ฒฝ ์ œ์•ˆ (๊ตฌ์ฒด์  ํŒŒ์ผ/๋ผ์ธ)
    • ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ ์ œ์•ˆ (๊ตฌ์ฒด์  ์‹œ๋‚˜๋ฆฌ์˜ค)
    • ๊ฒŒ์ดํŠธ ๊ธฐ์ค€ ๊ฐ•ํ™” ์ œ์•ˆ

    Detect (์กฐ๊ธฐ ํƒ์ง€):

    • ๋ชจ๋‹ˆํ„ฐ๋ง/์•Œ๋ฆผ ์ถ”๊ฐ€
    • ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ํ™•๋Œ€
    • ๋ฆฐํŠธ ๊ทœ์น™ ์ถ”๊ฐ€

    Respond (๋Œ€์‘ ๊ฐœ์„ ):

    • ๋Ÿฐ๋ถ ์—…๋ฐ์ดํŠธ
    • ์—์Šค์ปฌ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ ๊ฐœ์„ 
    • ๋กค๋ฐฑ ์ ˆ์ฐจ ํ™•์ธ

Phase 5: Document & Learn#

  1. Debrief ๋ฌธ์„œ ์ž‘์„ฑ

    • docs/debriefs/YYYY-MM-DD-{topic}-debrief.md ์ €์žฅ
  2. ํ•™์Šต ์—ฐ๋™

    • /session:wrap ํ˜ธ์ถœํ•˜์—ฌ ํ•™์Šต ์‚ฌํ•ญ ์ž๋™ ์ถ”์ถœ
    • ๊ฒŒ์ดํŠธ ๊ฐœ์„ ์•ˆ์ด ์žˆ์œผ๋ฉด ๊ด€๋ จ ๊ฒŒ์ดํŠธ ํŒŒ์ผ์— TODO ์ฝ”๋ฉ˜ํŠธ ์ถ”๊ฐ€

Artifact Structure#

# Debrief: {incident_title}

**Date**: YYYY-MM-DD
**Severity**: Critical | Major | Minor
**MTTR**: Xh Ym

## Summary
{1-2 paragraph incident summary}

## Timeline
| Time | Event |
|------|-------|
| HH:MM | {event} |

## Impact
- **Users affected**: {scope}
- **Services affected**: {list}
- **Data impact**: {description}

## Root Cause (5 Whys)
1. **Why**: {direct cause}
2. **Why**: {underlying cause}
3. **Why**: {systemic cause}
...

## Gate Gap Analysis
| Gate | Should Have Caught? | Why Missed |
|------|---------------------|------------|
| Specification | Yes/No | {reason} |
| Analysis | Yes/No | {reason} |
| Implementation | Yes/No | {reason} |
| Code Review | Yes/No | {reason} |

## Contributing Factors
- {factor 1}
- {factor 2}

## Action Items

### Prevent (์žฌ๋ฐœ ๋ฐฉ์ง€)
- [ ] {action} โ€” Owner: {who} โ€” Due: {when}

### Detect (์กฐ๊ธฐ ํƒ์ง€)
- [ ] {action} โ€” Owner: {who} โ€” Due: {when}

### Respond (๋Œ€์‘ ๊ฐœ์„ )
- [ ] {action} โ€” Owner: {who} โ€” Due: {when}

## Lessons Learned
{blameless insights}

## References
- Issue: #{number}
- PR: #{number}
- Related commits: {hashes}

Key Rules#

  1. Blameless: ๊ฐœ์ธ์ด ์•„๋‹Œ ์‹œ์Šคํ…œ/ํ”„๋กœ์„ธ์Šค์— ์ดˆ์ . "๋ˆ„๊ฐ€"๊ฐ€ ์•„๋‹ˆ๋ผ "์™œ"๋ฅผ ์ถ”์ 
  2. Evidence-based: ๋ชจ๋“  ๋ถ„์„์— ์ฝ”๋“œ/์ปค๋ฐ‹/๋กœ๊ทธ ์ฆ๊ฑฐ ์ฒจ๋ถ€
  3. Actionable: Action Items๋Š” ๊ตฌ์ฒด์ ์ด๊ณ  ๋‹ด๋‹น์ž/๊ธฐํ•œ์ด ๋ช…ํ™•ํ•ด์•ผ ํ•จ
  4. Gate-aware: ํŒŒ์ดํ”„๋ผ์ธ ๊ฒŒ์ดํŠธ ๊ด€์ ์—์„œ ๋ถ„์„ํ•˜์—ฌ ์‹œ์Šคํ…œ ๊ฐœ์„ ์œผ๋กœ ์—ฐ๊ฒฐ
  5. Time-sensitive: ์ธ์‹œ๋˜ํŠธ ํ›„ 48์‹œ๊ฐ„ ์ด๋‚ด ์ˆ˜ํ–‰ ๊ถŒ์žฅ (BMAD ์ •์ฑ…)

  • /dev:bugfix โ€” ๋ฒ„๊ทธ ์ˆ˜์ • ์‚ฌ์ดํด
  • /session:wrap โ€” ์„ธ์…˜ ํ•™์Šต ์ถ”์ถœ
  • /project โ€” ํŒŒ์ดํ”„๋ผ์ธ ๊ฒŒ์ดํŠธ ์ฐธ์กฐ