이 글의 핵심 개념을 보여주는 대표 이미지. AI가 제안한 원인 후보 중 무엇을 먼저 버릴지 정하는 법

AI가 제안한 원인 후보 중 무엇을 먼저 버릴지 정하는 법


첫 확인은 보통 탐색 범위를 줄여야 한다. 그런데 실제 incident에서는 첫 확인을 하고도 여전히 시야가 복잡한 경우가 많다. AI는 여러 원인 후보를 그대로 살려두고, 새로 얻은 증거도 모두와 어중간하게 맞는 것처럼 보여서 다음 단계가 더 좁은 판단이 아니라 또 한 번의 가지 검토로 변한다.

이 글은 AI가 제안한 검증 순서 중 무엇을 먼저 확인할지 고르는 법 다음 단계다. 첫 컷은 이미 했다. 이제 해야 할 일은 그 결과를 이용해 약한 가설을 빨리 버리고, 실제로 조사 범위를 좁히는 것이다.

핵심 명제: 좋은 첫 확인은 정보 하나를 더 주는 데서 끝나지 않는다. 지금 버려도 되는 설명을 버릴 근거를 만들어준다.

1. 후보를 실제로 지우지 않으면 필드는 줄어들지 않는다

많은 개발자는 첫 확인을 단지 신호 하나 더 수집하는 과정처럼 다룬다. 그러면 후보 목록이 너무 오래 그대로 남는다. 어떤 가지가 첫 확인 결과와 충돌하거나, 설명력이 약해지거나, 다음 확인을 더 시끄럽게 만든다면 그 가지는 더 이상 같은 무게로 남아 있으면 안 된다.

실제 문제는 AI가 가설을 너무 많이 주는 데 있지 않다. 문제는 팀이 그 가설을 지우는 데 주저한다는 데 있다. 이미 같은 수준의 관심을 받을 자격이 없는 후보도 테이블 위에 남겨두는 순간 계속 주의를 소비한다.

2. 충돌, 유지 비용, 잡음으로 버릴 가설을 정한다

첫 확인 뒤에는 “아직 가능하냐”만 물으면 안 된다. “이 후보가 아직 active set에 남아 있을 자격이 있느냐”를 물어야 한다. 기준은 세 가지면 충분하다.

확인 결과와 직접 충돌하는가

그 가지가 전제로 삼았던 신호가 첫 확인에서 보이지 않았다면, 우선순위는 크게 떨어져야 한다. 완전히 불가능해질 때까지 기다릴 필요는 없다.

살려둘 비용이 큰가

어떤 가설은 살려두기만 해도 비싸다. 대시보드를 더 열게 하고, 같은 timestamp를 반복 비교하게 하고, 탐색 트리를 넓게 유지하게 만든다. 이미 근거가 약한데 그 비용까지 크다면 낭비다.

다음 확인을 더 흐리게 만드는가

약한 가지 하나가 다음 확인의 해석을 흐리게 만들 때가 많다. 한 가설을 살려두는 것만으로 다음 판단이 더 모호해진다면 더 일찍 잘라내는 편이 낫다.

주의: “아직 가능하다”와 “아직 유용하다”는 다르다. 디버깅은 이론적으로 가능한 경우의 수를 보존할 때가 아니라, 다음 판단에 가치 없는 가능성을 미리 걷어낼 때 가벼워진다.

3. 남은 후보는 네 칸으로 다시 정리한다

첫 확인 결과가 나오면, 남은 후보를 네 칸으로 다시 적어보면 된다.

  • 이미 반증된 후보: 첫 결과가 이 가지의 전제를 직접 깨뜨린 경우
  • 설명력은 있지만 증거가 약한 후보: 이론상 맞을 수는 있지만 지금 단계에서 active attention을 줄 근거가 약한 경우
  • 나중에 보류하면 되는 후보: 죽지는 않았지만 더 좁은 다음 확인 뒤에 다시 보면 되는 경우
  • 잡음 후보: 지금 살려두면 다음 확인을 느리게 하거나 흐리게 만드는 경우

이 분류의 장점은 살아남은 가설을 전부 동등한 생존자로 다루지 않게 만든다는 데 있다. 대부분의 후보는 “계속 같은 비중으로 본다”가 아니라 “한 단계 내린다”가 맞다.

빠른 규칙: 설명력은 약해졌는데 다음 확인 비용만 올리는 가설이라면, 이론적으로 가능해도 active set에서는 빼는 편이 맞다.

4. 약한 가설 제거와 강한 가설 제거는 결과가 다르다

예를 들어 AI가 5xx 증가 원인을 네 가지로 제안했다고 하자. upstream latency, retry burst, timeout config regression, 그리고 로컬 worker queue 가지다. 첫 확인은 deploy 시점과 auth failure, retry fan-out의 시간 관계를 비교하는 것이다.

약한 정리는 “네 가지 다 아직 가능하니 일단 다 살려두자”로 끝난다. 안전해 보일 수 있지만, 실제로는 조사 범위가 하나도 줄지 않았다.

더 강한 정리는 “queue 가지는 이번 시간 관계를 설명하지 못하고 다음 확인에 로컬 잡음만 추가하니 active set에서 뺀다. retry 가지는 보류. timeout regression과 upstream latency만 active로 남긴다”라고 말한다. 첫 확인이 더 좁은 조사로 이어지려면 이렇게 돼야 한다.

약한 가설 제거 강한 가설 제거
죽지 않은 후보를 전부 같은 무게로 살려둔다 약한 가지를 active set 밖으로 밀어낸다
가능성만 있으면 계속 본다 다음 확인에 가치가 있는지만 본다
다음 확인이 계속 시끄럽다 다음 확인이 더 좁고 읽기 쉬워진다

5. 가설 제거용 프롬프트 하나를 계속 쓴다

첫 확인 뒤에는 아래 프롬프트 하나만 반복해도 된다.

첫 번째 검증 확인을 실행했고 이런 결과가 나왔다. 지금 active set에서 빠져야 할 가설이 무엇인지 골라줘. 확인 결과와의 직접 충돌, 계속 들고 갈 비용, 다음 확인을 얼마나 흐리게 만드는지를 기준으로 설명하고, active로 남길 것과 보류할 것, 지금 버릴 것을 나눠줘.

답이 계속 흐리면 한 줄을 더 붙이면 된다.

이론적으로 아직 가능하다는 이유만으로 active 상태를 유지하지 말고, 다음 검증 선택에 실제 도움이 되는 경우만 active로 남겨줘.

지금 당장 할 일

지금 디버깅 중인 incident 하나를 골라 첫 확인 결과를 한 문장으로 적어라. 그다음 남은 가설을 네 칸 중 하나로 강제로 넣어라. 두 가지가 여전히 비슷해 보인다면, 어느 쪽이 다음 확인을 더 시끄럽게 만드는지 먼저 보라. 보통 그 가지가 먼저 내려가야 할 후보다.