Grok Bot 사용량 새는 곳, 웹훅 하나로 막는 법
자동화가 자주 실행된다고 업무가 그만큼 많이 처리되는 것은 아니다. 새 사건이 있는지 확인하기 위해 Grok Bot을 반복해서 깨운다면, 처리할 일이 없는 시간에도 실행이 발생한다. 웹훅은 이 구조를 바꾼다. 변화가 생겼을 때만 Bot에 알리도록 실행 조건을 옮기는 방식이다.
웹훅의 가치는 불필요한 실행을 줄일 수 있다는 데 있다. 실제 사용량이 얼마나 줄어드는지는 사건 빈도, 작업 내용, 감지 방식과 운영 비용을 함께 측정해야 알 수 있다.
웹훅은 초인종, 폴링은 문을 열어 확인하기
택배를 기다리며 일정 간격으로 현관문을 열어 보는 행동이 폴링이다. 택배가 오지 않아도 확인은 반복된다. 웹훅은 택배 기사가 도착했을 때 누르는 초인종과 비슷하다. 사건을 아는 쪽이 신호를 보내므로, 받는 쪽은 그 신호를 계기로 일을 시작할 수 있다.
다만 초인종이 울렸다고 택배 정리까지 끝난 것은 아니다. 웹훅도 요청 전달과 후속 작업 완료를 구분해야 한다. 또한 사건을 보내 줄 시스템이 있어야 한다. 외부 서비스가 웹훅을 제공하지 않아 로컬 스크립트가 계속 조회한다면, 확인 작업은 그 스크립트에 남는다.
Grok Bot에서는 어떤 요청을 보내나
공식 문서에 따르면 루틴에 웹훅 트리거를 추가한 뒤, 루틴 화면에서 URL과 비밀 키를 확인한다. 해당 URL로 HTTP POST를 보내고, 인증 헤더에 Authorization: Bearer <key>를 넣는다. JSON 본문은 선택 사항이며, 보내면 Bot이 루틴 지시와 함께 받는다. 자세한 형식은 공식 Skills and routines 문서에서 확인할 수 있다.
설계의 관건은 요청을 보내기 전의 필터다. 새 사건인지, 처리 대상인지, 이미 보낸 사건인지를 판단한 다음 필요한 경우에만 호출해야 한다. 의미 없는 사건까지 모두 전달하면 웹훅을 도입해도 실행은 많아질 수 있다.
로컬 모의 호출 12→0, 12→2의 정확한 의미
제공된 로컬 모의시험 기록에서는 사건이 없을 때 호출 횟수가 12회에서 0회로, 사건이 2건일 때 12회에서 2회로 바뀌었다. 이는 정기적으로 호출하는 방식과 사건에 맞춰 호출하는 방식의 차이를 보여 주는 모의 결과다.
| 로컬 모의 조건 | 반복 호출 | 사건 기준 호출 | 해석 |
|---|---|---|---|
| 사건 없음 | 12회 | 0회 | 처리할 사건이 없으면 모의 호출을 보내지 않음 |
| 사건 2건 | 12회 | 2회 | 모의 호출을 사건 수에 맞춤 |
무엇을 더 측정해야 하나
호출 횟수와 사용량은 다른 지표다. 호출을 적게 보내도 한 번의 작업이 길거나 복잡하면 사용량이 커질 수 있다. 반대로 사건을 여러 개 묶어 처리하면 호출 수와 처리 건수의 관계도 달라진다. Cursor의 공식 루틴 안내 역시 실행 빈도가 사용량에 영향을 준다고 설명하지만, 이번 모의시험의 수치를 실제 절감량으로 보증하지는 않는다.
운영 효과를 확인하려면 비교 기간과 처리 업무를 맞추고, 사건 수·웹훅 전송 수·실제 실행 수·성공 및 실패·사용량 변화를 함께 기록해야 한다. 재시도와 중복 실행, 감지 스크립트의 조회 및 서버 비용도 포함해야 한다. 현재 자료에는 이 비교 결과가 없으므로 절감 규모는 미측정 상태다.
적합한 업무와 부적합한 업무
다음 구분은 사건을 명확히 감지할 수 있는지와 정해진 시점의 실행이 필요한지를 기준으로 한 설계 판단이다.
| 구분 | 업무 예시 | 판단 이유 |
|---|---|---|
| 적합 | 새 문의 분류, 이슈 등록 후 분석, 파일 업로드 후 검토 | 새 사건이 작업 시작 조건으로 명확함 |
| 조건부 적합 | 웹훅이 없는 사이트의 변경 감지 | 로컬 조회 후 변경 때만 Bot을 부를 수 있지만 조회 비용은 남음 |
| 단독 대체에 부적합 | 매일 정시 보고, 사건이 없어도 필요한 정기 점검 | 사건 발생보다 시간 자체가 실행 조건임 |
| 별도 제어 없이 부적합 | 빈번한 센서 신호마다 분석, 엄격한 즉시 처리가 필요한 제어 | 호출 폭주를 막을 집계·큐가 필요하며 완료 지연도 별도로 검증해야 함 |
보안: 초인종을 누를 권한도 관리해야 한다
Bearer 키는 호출 권한을 가진 비밀이다. 공개 HTML, 브라우저 코드, 저장소나 화면 캡처에 넣지 말고 서버의 비밀 저장소 또는 환경 변수로 관리하는 편이 적절하다. 전송에는 HTTPS를 사용하고 로그에서 인증 헤더와 민감한 본문을 가려야 한다. 키가 노출되면 교체하고 발신 설정도 갱신해야 한다.
발신 측에서는 허용된 사건과 필수 필드를 검증하고, 사건 식별자로 중복 전송을 걸러내는 것이 좋다. 외부에서 들어온 본문은 신뢰할 수 없는 입력으로 취급해야 한다. 본문 속 문장이 루틴의 권한이나 지시를 바꾸지 않도록 경계를 정하고, 삭제·결제 같은 중요한 작업에는 별도 승인 절차를 두는 것이 적절하다. 이는 공식 요청 형식과 별개인 운영 설계 권고다.
HTTP 200은 접수와 실행 시작이지 완료가 아니다
공식 문서에서 HTTP 200은 호출을 접수하고 실행을 시작했다는 뜻이다. 요청한 분석이나 후속 작업이 끝났다는 뜻은 아니다. 결과는 Bot의 채팅에서 확인해야 한다.
따라서 발신 시스템이 200을 받자마자 업무 상태를 ‘완료’로 바꾸면 실제 처리 상태와 어긋날 수 있다. 접수·실행 중·완료·실패를 구분해야 한다. 응답이 끊겨 접수 여부가 불분명할 때도 무조건 재전송하기보다 실행 기록을 확인하고 중복 처리 방안을 적용해야 한다. 이러한 의미는 공식 웹훅 응답 안내에서도 확인할 수 있다.
웹훅 도입의 첫 대상은 ‘변화가 없는데도 Bot을 반복 실행하는 업무’다. 그 실행을 사건 기준으로 바꾸고, 감지 비용과 실제 처리 결과를 함께 관찰해야 한다. 이번 로컬 기록은 호출 구조를 바꿀 가능성을 보여 준다. 실제 사용량 절감 효과는 운영 환경의 별도 측정으로 확인할 과제다.
댓글
댓글 쓰기