C.W.K.
Stream
Lesson 04 of 04 · published

조용한 fallback 없음

~10 min · no-silent-fallback, honesty, degradation, api-design

Level 0불 꺼진 심지
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"평범한 결과처럼 보이는 더 나쁜 결과가 에러보다 위험해, 네가 그걸 믿을 테니까."

조용한 거짓말

신뢰를 가장 빨리 좀먹는 실패 모드가 여기 있어. 최고의 검색 — 키워드와 벡터 융합, rerank — 을 요청해. 벡터 서버가 꺼졌어. 게으른 엔진은 에러를 잡아, 조용히 키워드-only 결과를 돌려주고, 완전한 결과랑 똑같이 포맷해. 뭐가 빠졌는지 넌 전혀 몰라. 통짜라 믿은 반쪽 검색을 근거로 결정을 내려. 엔진은 크래시 안 했어. 누락으로 거짓말한 거고, 그게 더 나빠, 크래시는 알아챘을 테니까.

정직한 신호 둘

Lantern 은 조용한 거짓말을 명시적 신호 둘로 거부해:

  • 안 배선됐거나 미지원 모드는 에러를 돌려줘 — 가짜 결과 대신 명확한 not implemented. 엔진이 못 하는 걸 요청하면, 소리 내어 그렇다고 말해.
  • 부분 결과는 자기 틈을 선언해 — 하이브리드 검색이 키워드 절반만 돌릴 수 있으면, 그 결과를 돌려주되 더하기 정확히 뭐가 건너뛰어졌는지 이름 붙이는 degraded 필드. 결과가 자기 불완전함에 정직해.

어느 쪽이든 호출자는 받은 것의 진짜 모양을 항상 알아.

침묵이 실패보다 나쁜 이유

보이는 실패는 결정 지점이야: 재시도하거나, 기다리거나, 사용자에게 경고하거나, 눈 뜨고 일부러 fallback 할 수 있어. 조용한 degradation 은 그 결정을 훔쳐. 완전한 것의 의상을 입은 강등된 답을 건네고 그 위에 짓게 둬. 그게 일으키는 버그는 멀리서, 훨씬 나중에 떠오르고, 되짚기가 거의 불가능해 — 거짓말의 순간엔 전부 멀쩡해 보였으니까.

소리 내어 degrade 하거나 아예 하지 마. 덜한 결과로 fallback 하는 게 옳은 수일 수 있어 — 근데 호출자한테 말할 때만. degradation 을 응답 자체에 구워 넣어: '이건 부분적이고, 여기 빠진 게 있어' 라 말하는 필드. 조용한 fallback 은 보이고 다룰 수 있는 실패를 안 보이고 못 추적하는 것과 맞바꿔. 절대 그 거래를 하지 마.

envelope 가 진실을 나른다

메커니즘은 단순해: 모든 응답이 맨 목록이 아니라 envelope 야. 결과와, 그게 어떻게 만들어졌는지의 작은 기록 — 실제로 어느 모드가 돌았는지, 뭐가 건너뛰어졌는지, 뭔가 degrade 했는지 — 을 쥐어. 대부분은 그 기록이 비어 있고 아무도 안 봐. 벡터 서버가 꺼진 날, 그 기록이 반쪽-답을 조용히 믿는 호출자와 '주의, 이 검색은 키워드-only 였어' 라 말할 줄 아는 호출자의 차이야.

Code

envelope 가 실제로 뭐가 돌았는지 진실을 말해·json
// A healthy hybrid search — nothing degraded.
{
  "mode": "hybrid",
  "results": [ /* fused keyword + vector hits, reranked */ ],
  "degraded": []
}

// The SAME endpoint, vector server down. Note it does not pretend.
{
  "mode": "hybrid",
  "results": [ /* keyword-only hits */ ],
  "degraded": ["vectors_unavailable"]   // <-- the caller knows it's partial
}

// An unsupported mode does not fake it — it errors, loudly:
// HTTP 501  { "error": "mode 'semantic-graph' is not implemented" }

External links

Exercise

어떤 실패에서 조용히 더 나쁜 결과를 줄지 모르는, 네가 쓰는 도구나 API 를 찾아 — fallback 하는 검색, 부분 완료되는 동기화, 조용히 낡은 데이터를 쓰는 자동완성. 그게 일어난 걸 대체 어떻게 알아? degradation 을 보이게 만들 필드 하나를 설계하고, 호출자가 그 필드를 볼 수 있으면 어떻게 다르게 반응할지 설명해.
Hint
조용한 fallback 을 드러내는 질문은 항상 '내가 어떻게 알지?' 야. 답이 '모를 거야' 면, 시스템이 침묵 속에 degrade 하는 거고 — 고침은 뭐가 빠졌는지 이름 붙이는 응답 속 정직한 필드 하나야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.