요약

  • CloudFront 종량제에서는 계정 전체를 합쳐 매월 처음 1,000개 무효화 경로가 무료이고, 이후 경로당 0.005달러다. 여러 파일을 포함한 와일드카드도 경로 하나로 센다.
  • 넓은 무효화는 다음 요청 때 원본 서버가 다시 해야 할 일을 늘릴 수 있다. AWS 원본에서 CloudFront로 가져오는 정상적인 데이터 전송은 무료지만 원본 서비스 자체의 비용은 남는다.
  • 정액제에는 캐시 무효화가 포함된다. 어느 요금제를 쓰든 무효화 범위와 버전 파일의 참조·보관을 결정할 책임은 고객에게 있다.

배포팀에는 유혹적인 절약법이 있다. 바뀐 파일의 경로를 꼼꼼히 열거하는 대신, 그 파일들을 한꺼번에 덮는 별표를 쓴다. CloudFront의 종량제 무효화 요금만 보면 이 선택은 경제적이다. 열 줄을 한 줄로 줄이면 과금 단위도 줄어든다. 그 한 줄에 바뀌지 않은 파일이 얼마나 딸려 들어가는지는 이 요금의 관심사가 아니다.

AWS는 무효화 과금 문서에서 경로를 단위로 삼는다. 매월 처음 1,000개 경로는 무료이며, 한 계정의 여러 배포를 모두 합산한다. 뒤에 와일드카드가 붙어 수천 개 파일을 포함해도 경로 하나다. 반대로 여러 경로를 API 요청 하나에 넣는다고 한 개로 줄지는 않는다. 봉투를 합치는 것과 주소를 줄이는 것은 다른 일이다.

무료 한도를 이미 썼다고 놓고 계산해 보자. 경로 열 개를 각각 지정하면 이 항목의 요금은 0.05달러다. 같은 열 개를 포함하는 와일드카드 경로 하나는 0.005달러다. 공식 종량제 가격표의 경로당 단가를 적용한 예다. 실제 고객의 청구서나 전체 배포 비용 절감액을 보여 주는 숫자는 아니다.

이 작은 차이가 흥미로운 이유는 돈의 크기보다 선택의 방향에 있다. 정밀하게 고르려면 서비스가 무엇을 어디에 저장했는지 알아야 한다. 넓게 지우려면 별표 하나면 된다. 출시 속도와 눈앞의 비용만 평가하는 조직이라면, 자기 시스템을 덜 이해하는 선택에 보너스를 줄 수도 있다.

지우는 사람과 다시 일하는 사람

캐시에 남은 복사본은 이후의 요청을 대신 처리한다. 그것을 무효화하면 다음 이용자 요청 때 CloudFront가 원본에서 최신 파일을 가져온다. AWS의 동작 설명은 요청 이후의 가져오기를 말한다. 버튼을 누르는 순간 모든 파일을 미리 채워 넣는 절차가 아니다.

따라서 넓은 무효화의 부담은 뒤따르는 트래픽에 달렸다. 아무도 찾지 않는 파일을 지웠다면 당장 다시 가져올 일도 없다. 반면 수정하지 않은 인기 파일까지 함께 지우면, 그대로 두었을 때 피할 수 있던 작업이 원본 쪽으로 돌아갈 수 있다. 캐시 계층과 요청 통합이 작동하므로 방문자 수만큼 원본 요청이 생긴다는 계산도 맞지 않는다.

여기에 없는 비용을 얹을 필요는 없다. AWS 서비스가 원본일 때 CloudFront의 정상적인 원본 가져오기 전송은 무료다. 따져야 할 것은 원본 서비스의 별도 요청·처리 비용과 가져오는 데 걸리는 시간이다. 무료인 전송을 유료인 것처럼 써 놓으면, 정작 봐야 할 실행과 대기 비용이 가려진다.

배포팀은 무효화 경로 수가 줄었다고 보고하고, 플랫폼팀은 원본 요청과 응답 시간을 설명한다. 두 보고서가 각각 정확해도 회사는 같은 작업을 두 번 계산하거나 중요한 부분을 아예 빠뜨릴 수 있다. 지시를 내린 비용과 지시 때문에 생긴 일을 서로 다른 성과표에 넣었기 때문이다.

싸게 지우는 대신 잘 이름 붙이기

CloudFront의 범위 지정에는 규칙이 있다. 와일드카드는 끝에 붙여야 하며 /*는 배포 전체를 대상으로 삼을 수 있다. 쿠키나 헤더에 따라 저장한 변형은 해당 경로를 무효화할 때 함께 지워져, 그중 하나만 선택할 수 없다. 쿼리 문자열별로 저장한 내용은 해당 경로를 적거나 끝의 와일드카드로 묶어야 한다. 객체 지정 문서에 나오는 차이다.

이 규칙을 제대로 쓰려면 파일 이름뿐 아니라 변형이 생기는 방식도 알아야 한다. 넓게 무효화하는 편의에는 이 조사 시간을 생략하는 가치가 있다. 어떤 팀에는 합리적인 거래다. 다만 매번 조사하지 않기로 한 결정이 반복되면, 다음 배포도 똑같이 별표에 의존한다. 간단한 운영과 쌓이는 무지는 가격표에서 구별되지 않는다.

버전별 파일명은 일을 다른 곳으로 옮긴다. 새 파일을 새 이름으로 만들고 참조를 바꾸면, 이전 이름의 복사본을 먼저 지울 필요가 줄어든다. AWS는 자주 바뀌는 파일에 이 방법을 권한다. 무효화 비용이 없고 로그에서 버전을 구분하기 쉬우며, 이전 버전으로 돌아가는 작업에도 도움이 된다. 브라우저나 회사 프록시가 옛 복사본을 갖고 있어도 새 이름을 요청할 수 있다.

대신 참조를 빠짐없이 바꾸고 필요한 이전 파일을 보관해야 한다. 파일명 버전 관리와 단순한 쿼리 문자열 추가도 구분해야 한다. 좋은 이름 체계가 일을 마술처럼 없애지는 않는다. 급한 순간에 지우던 일을, 빌드와 보관 단계에서 미리 정리하게 만든다.

현재 CloudFront 정액제는 모든 등급에 빠른 캐시 무효화를 포함한다. 경로당 0.005달러라는 비교는 종량제에 해당한다. 정액제로 바꾸면 이 항목의 한계비용은 계산에서 빠지지만, 어떤 인기 파일을 다시 가져올지와 어떤 참조를 유지할지는 여전히 운영 결정이다.

특정 배포에서 무엇이 더 싼지 판단하려면 그 배포의 캐시 미스·원본 작업 기록과 원본 서비스 단가가 더 필요하다. 이 숫자에 따라 좁게 지우는 수고의 값이 달라진다. 별표 하나가 싸다는 사실만으로 배포가 싸다고 결론 내리기에는, 장부 밖에서 기다리는 일이 많다.