당시 비용 점검에서 가장 큰 항목은 D1, 즉 홈페이지가 사용하는 데이터베이스의 읽기였다. 화면이 몇 번 열렸는지보다 서버가 그 뒤에서 얼마나 많은 데이터를 읽는지가 중요했다. Container, AI 호출, 저장소도 별도의 항목이었다.
처음에는 유료 서비스 종료 예약을 포함한 무료 전환 판단이 기록됐다. 그러나 후속 문의메일 복구 보고서에서는 Workers Paid를 유지하고 기존 판단보다 그 상태를 우선한다고 명시했다. 나는 이 순서를 공개 기록에서도 그대로 남기기로 했다.
내가 고객에게 설명할 비용
나는 적은 요금이라는 결론과 함께 그 비용으로 무엇을 계속할 수 있는지 설명하고 싶다. 새 콘텐츠가 자동으로 들어오지 않거나 검색 범위가 달라진다면 그것도 중요한 결과다. 유지할 기능과 멈출 기능을 같은 문서에 적는다.
요금을 이름 대신 작업으로 읽는다
사용량을 데이터베이스 조회, 반복 수집, AI 생성, 저장과 전송, 상태 확인으로 나눈다. 각각 누가 시작하고 얼마나 반복되는지 적는다. 켜놓은 예약이 수동 작업보다 더 자주 실행되는 경우도 있다.
D1은 조회 결과 개수와 읽은 행 수를 구별해서 관찰할 수 있다. Worker의 CPU 시간 역시 사용자가 기다린 전체 시간과 같은 값이 아니다. 두 지표를 혼동하면 엉뚱한 부분을 줄이게 된다.
측정을 설계하는 내 순서
- 서비스별 청구 항목과 운영 기능을 대응시킨다. 특정 계정의 과거 요금을 보편적인 가격으로 쓰지 않는다.
- 자연 트래픽 관찰 구간과 검수용 요청 구간을 분리한다.
- 현재 데이터 규모, 캐시 상태, 호출 수, 조회한 행 수를 함께 적는다.
- 자동 실행을 업무상 필수, 필요할 때 실행, 중지 가능으로 나눈다.
- 제한을 맞추며 줄인 검색 범위·결과 수·자동 기능을 사용자에게 설명한다.
샘플 관찰의 한계
2026년 9월 기록은 관찰 창을 고정하고 별도의 전체 감사 요청을 섞지 않았다고 명시했다. 그것은 좋은 측정 조건이지 앞으로의 모든 날이 무료 한도 안이라는 보장은 아니다.
반복 실행 규모가 바뀌면 다시 계산해야 한다. 간단한 추정은 ‘자연 요청 수 × 요청당 작업량 + 예약 실행 수 × 예약당 작업량’으로 시작하지만, 혼잡 시간과 캐시 미적중도 별도로 확인한다.
독립적인 운영을 위한 결론
비용을 줄이면서 무엇을 남겼고 무엇을 멈췄는지 기록한다. 서비스 계약, 도메인 갱신, 데이터 보존은 각기 다른 결정이다. 오래된 해지 예약 문서를 현재 계정 상태라고 읽지 않는다.
싸게 운영하는 방법을 공개하려면 싼 가격이라는 결론보다 그 가격을 가능하게 한 기능 범위와 관찰 조건을 설명해야 한다.