요약

  • Workers Cache가 활성화된 Worker의 요청에는 표준 요청 요금이 적용된다. 캐시 적중은 코드 실행과 CPU 요금을 없애지만, 일반적으로 무료인 정적 파일 요청도 이때는 과금 대상이 된다.
  • 계산량이 많은 공식 예시는 캐시로 11.20달러를 아낀다. 정적 요청이 많은 다른 공식 예시에 같은 규칙을 적용하면, 월 포함량을 모두 쓸 수 있다는 조건에서 1.50달러가 더 든다.

컴퓨터에게 일을 덜 시켰는데 청구서에는 일이 더 생긴다.

Cloudflare의 Workers Cache에는 그럴 만한 구조가 있다. 요청이 들어오면 코드를 실행하기 전에 저장된 응답부터 찾는다. 캐시에 있으면 Worker는 실행하지 않는다. CPU 사용료를 줄이는 동시에 응답을 내보낸다. 그런데 이 기능을 켠 Worker로 오는 모든 요청은 표준 요청 요금의 계산에 들어간다. 평소 무료였던 정적 파일 요청도 포함된다.

문서는 이 기능에 별도 가격이 없다고 설명하고, 바로 그 과금 범위도 명시한다. 새 가격표가 없다는 말과 청구 대상이 늘어난다는 말은 함께 성립한다. 구매자가 봐야 할 것은 가격표의 행 수보다 그 행으로 들어오는 요청 수다.

5달러에서 6.50달러로 가는 길

Workers Paid Standard는 계정당 월 최소 5달러다. 월 1,000만 요청과 CPU 3,000만 밀리초가 포함된다. 초과 요청은 100만 건당 0.30달러, CPU는 100만 밀리초당 0.02달러다. 포함량은 계정 기준이다. Worker를 하나 추가한다고 한 묶음 더 생기지 않는다.

공식 가격 문서의 예시 2는 월 1,500만 요청을 다룬다. 1,200만 건은 정적 파일이고 300만 건은 동적 요청이다. 동적 요청 한 건이 평균 CPU 7밀리초를 쓰므로 총 2,100만 밀리초다. 정적 파일은 무료이며, 나머지 요청 수와 CPU는 포함량 안에 있다. 합계는 5달러다.

이 트래픽을 그대로 두고 해당 Worker 전체에 Workers Cache를 켠다고 계산해 보자. 유료 Standard 계정 하나에 월 포함량이 전부 남아 있고, 다른 사용량이나 제품, 세금·할인 조정은 없다고 가정한다. 이제 1,500만 요청 모두가 과금 계산에 들어온다. 포함량을 넘는 500만 건이 1.50달러다.

동적 응답이 캐시에 한 번도 적중하지 않아도 CPU는 여전히 2,100만 밀리초다. 포함량보다 적어서 초과 요금은 0달러다. 캐시가 CPU를 더 줄이더라도 이미 0인 요금을 그 아래로 내릴 수는 없다. 따라서 총액은 6.50달러다.

이는 공식 예시의 트래픽에 공식 캐시 규칙을 적용한 자체 조건부 계산이다. 실제 고객 청구서를 관측한 수치가 아니다. 그 계산이 드러내는 핵심은 분명하다. 이미 포함량 안에서 처리하던 연산을 줄이는 동안, 무료였던 요청이 새로 돈을 내기 시작할 수 있다.

CPU가 청구되던 서비스라면 결과가 달라진다

공식 문서에는 캐시의 절감 효과가 뚜렷한 사례도 있다. 월 1억 요청이 각각 평균 CPU 7밀리초를 쓰면 기본 5달러, 요청 초과분 27달러, CPU 초과분 13.40달러로 총 45.40달러다.

이때 캐시 적중률이 80%라면 2,000만 요청만 코드를 실행한다. CPU는 1억4,000만 밀리초, CPU 초과 요금은 2.20달러로 줄어든다. 요청 요금은 27달러 그대로다. 합계는 34.20달러, 절감액은 11.20달러다.

80% 적중률이 전체 요금 80% 절감을 만들지는 않는다. 이 공식 사례에서는 총액의 약 4분의 1을 아낀다. 코드를 돌리지 않은 응답에도 요청 요금이 붙고, CPU 포함량은 사용량 감소와 금액 감소의 비율을 달라지게 한다.

연산이 많은 동적 서비스는 원래 내던 CPU 초과 요금을 줄일 여지가 크다. 정적 파일 비중이 높고 동적 연산이 포함량 안에 있던 서비스는 새 요청 요금을 먼저 마주할 수 있다. 구매 판단을 가르는 것은 멋진 적중률 하나가 아니라, 기존 청구서에서 무엇에 돈을 냈느냐다.

캐시라는 단어보다 좁은 범위

여기서 다루는 기능은 코드 실행 전의 Workers Cache다. 코드 안에서 호출하는 기존 Cache API나 일반적인 영역 단위 CDN 캐시와 작동 범위가 다르다. 문서에 따르면 영역의 Cache Rules와 Page Rules로 설정하는 기능도 아니다.

과금 범위에는 Worker 간 호출도 들어간다. 일반 Standard 서비스 바인딩 호출에는 추가 요청 요금이 없지만, 캐시가 활성화된 Worker에 대한 호출에는 문서의 예외 규칙이 적용된다. 여러 Worker를 연결한 서비스라면 어느 지점에 기능을 켰는지가 비용 결정에 참여한다. 실제 경로와 설정 없이 연결 수만 세어 총액을 만들 수는 없다.

계층형 캐시와 동시 요청 병합은 코드 실행을 더 줄일 수 있다. 전달된 요청 수는 별도로 남는다. 플랫폼이 파는 서비스에는 연산뿐 아니라 응답 전달도 들어간다.

실제 청구액을 알려면 요청별 구성, CPU 사용량, 다른 작업이 소비한 계정 포함량, 계약 조건이 필요하다. 이 수치가 채워지면 어느 효과가 우세한지 계산할 수 있다.

기술팀은 같은 일을 두 번 하지 않는 방법을 찾는다. 구매팀은 같은 응답이 어떤 이름으로 청구되는지 찾아야 한다. 캐시가 프로세서를 쉬게 하는 데 성공했을 때, 예산 담당자까지 함께 쉬면 곤란하다.

출처