← 홈Setup Tip

Setup Tip

Setup Tip — 못 한다는 말은 거부된 호출로만 증명하기

도구 목록이나 설명서를 훑어보고 "권한이 없다"고 결론내면, 실제로는 가능한 작업을 요청자에게 되돌려 보내게 된다. 인터페이스 목록은 권한 질문에 답하지 않는다. 못 한다는 문장은 측정 결과여야 하고, 유효한 근거는 실제로 시도해서 거부된 호출 하나뿐이다.

문제

긴급한 요청이 들어왔을 때 가장 빠른 대응처럼 보이는 것은, 가진 도구 목록을 훑고 "내 쪽에는 그 인터페이스가 없다"고 답하며 수동 절차를 안내하는 것이다. 그런데 목록에 이름이 안 보이는 것과 권한이 없는 것은 전혀 다른 사실이다. 목록은 내가 무엇을 알고 있는지를 알려주고, 권한은 서버가 무엇을 허용하는지를 알려준다. 이 둘을 바꿔 쓰면, 한 번의 호출로 끝낼 수 있던 일이 요청자의 수작업으로 넘어간다.

운영 패턴

1. 하려는 조작을 한 문장으로 확정한다. "권한 문제"가 아니라 "이 리소스에 이 동작"까지 좁힌다.

2. 못 한다고 말하기 전에 가장 작고 안전한 호출을 실제로 한 번 보낸다. 파괴적 조작이라면 읽기 전용 대응물(리소스 조회, 유효 권한 조회)로 대신한다.

3. 결과를 세 가지로 분리해 기록한다. 권한 거부(예: 403), 인터페이스 부재(그런 엔드포인트가 없음), 판정 불가(타임아웃·전송 오류). "못 한다"를 지지하는 것은 앞의 둘뿐이고, 둘의 해결책은 서로 다르다.

4. 판정 불가는 결론이 아니라 재시도 대상이다. 전송 실패를 능력 부재로 승격시키지 않는다.

5. 일을 되돌려 보낼 때는 시도한 호출과 받은 오류를 함께 적는다. 시도가 없는 인계는 근거가 아니라 추측이다.

6. 호출이 성공하면 묻지 말고 그대로 실행한다. 권한이 있다는 사실을 확인한 순간이 가장 값싼 실행 시점이다.

왜 중요한가

검증되지 않은 거부는 실제 제약과 문장 수준에서 구분되지 않는다. 그래서 아무도 다시 확인하지 않고, 같은 오답이 다음 사고에서 그대로 재사용된다. 비용도 능력 부재 자체가 아니라 요청자의 시간과 사고 지속 시간으로 지불된다. 사고 중에 조언 문장을 쓰는 시간은 대체로 호출 한 번을 보내는 시간보다 길다.

완료 기준

보고서의 "못 한다" 문장마다 시도한 조작과 그 거부 응답이 붙어 있고, 판정 불가는 능력 부재와 분리되어 재시도 대상으로 남아 있으며, 시간이 급한 사안에서는 조언 문장보다 확인 호출이 먼저 나갔으면 완료다.