비용 최적화
개요
CloudFront는 웹 애플리케이션의 성능, 보안 및 가용성에 대한 이점 외에도 웹 애플리케이션 비용을 절감하는 데 사용할 수 있습니다. 첫째, CloudFront의 요금 모델은 오리진 비용을 절감할 수 있습니다. 둘째, CloudFront를 구성하고 애플리케이션을 설계하여 비용을 절감할 수 있습니다. AWS 서비스를 사용한 비용 최적화에 대한 보다 일반적인 지침은 AWS Well-Architected Framework의 비용 최적화 원칙을 참조하세요. 비용을 모니터링하고 이해하려면 AWS Cost Explorer 및 AWS Bduget을 참조하세요.
CloudFront 요금
CloudFront 요금 모델에는 여러 차원이 포함되며, 가장 지배적인 두 가지 요소는 다음과 같습니다.
- 인터넷으로의 Regional Data Transfer Out(DTO): CloudFront가 인터넷 사용자에게 제공하는 GB의 양을 설명합니다. 이 요금은 사용자 리전에 따라 다르며 바이너리 기가바이트(예: 1GB = 1024MB)를 사용하여 측정되며 HTTP 페이로드(예: TLS 핸드셰이크 데이터 전송 제외)만 포함됩니다.
- 요청 수수료: CloudFront에서 제공하는 HTTP(S) 요청 수를 설명합니다. 이 또한 사용자의 리전에 따라 다릅니다.
기본적으로 CloudFront는 최상의 성능을 위해 모든 네트워크를 사용하여 콘텐츠를 제공합니다. 전송 비용을 절충하려는 경우 CloudFront에서 요금 계층 옵션을 구성하는 것을 고려해 보세요.
CloudFront는 상시 운영 프리 티어를 제공하며, 여기에는 매달 1TB의 DTO와 1천만 개의 HTTP(S) 요청이 포함됩니다. AWS WAF를 CloudFront와 함께 사용하는 경우 CloudFront 요금을 최대 30% 절감할 수 있는 CloudFront 보안 절감형 번들에 대한 사전 약정을 고려해 보세요. 더 큰 볼륨(10TB 이상)의 경우 더 높은 재정적 약정에 대한 대가로 추가 할인을 받으려면 문의하여 프라이빗 요금 계약을 체결하세요. 참고로 전체 트래픽이 전송된 HTTP 객체의 평균 크기가 더 클수록 할인 혜택이 더 커집니다. 따라서 프라이빗 요금 계약에서 받을 수 있는 전체 할인율을 높이려면 여러 워크로드(API 전송 및 정적 파일 전송)에 CloudFront를 사용하는 것이 좋습니다.
AWS 기반 오리진과 함께 사용할 경우 CloudFront의 DTO가 오리진의 DTO를 대체한다는 점에 유의해야 합니다. 따라서 오리진의 DTO(Data Transfer Out)에 대한 비용을 지불하지 않습니다.
마지막으로, 콘텐츠 무효화와 같은 추가 비용이 발생할 수 있는 CloudFront의 선택적 기능 사용을 검토하고 최적화하세요.
CloudFront의 무효화 비용 최적화
CloudFront 요금에 따르면 추가 비용 없이 매달 1,000개의 경로를 무효화에 사용할 수 있습니다. 그 이상으로는 무효화를 요청한 경로당 0.005 USD의 비용이 발생합니다. 무효화 요청에 기재된 경로는 CloudFront 캐시에서 무효화하려는 객체의 URL(객체에 와일드카드 문자가 포함되어 있는 경우 URL 여러 개)을 나타냅니다.
CloudFront를 사용하여 무효화 비용을 최적화하려면 다음 팁을 고려하세요.
- 기본적으로 HTTP 캐시 제어 메커니즘(예: Cache-Control 헤더, URL 버전 관리, 조건부 요청)을 사용하고 비상용 시나리오에 대해서는 CDN 기반 무효화를 선호합니다. 자세한 내용은 이 블로그를 읽어보세요.
- 해당하는 경우 무효화에 와일드카드를 사용하면 한 번의 무효화 요청으로 여러 파일을 무효화할 수 있습니다. 예를 들어 월드컵 이벤트와 관련된 문서를 하나씩 무효화하는 대신 /stories/sports/worldcup*을 사용하여 모든 문서를 무효화할 수 있습니다.
AWS Budgets를 사용하여 무효화 사용량을 모니터링하고 경보를 설정할 수 있습니다.
CloudFront를 사용하여 웹 애플리케이션 비용 절감
CloudFront는 오리진을 오프로드하여 기본적으로 웹 애플리케이션 비용을 절감합니다. 첫째, CloudFront는 자체 캐시에서 캐시 가능한 요청을 처리하므로 오리진의 확장 비용이 절감됩니다. 캐시 적중률을 높여(예: Origin Shield 활성화) 오리진을 추가로 오프로드하도록 CloudFront 구성을 최적화할 수 있습니다. 둘째, CloudFront는 동적 요청(예: API 호출)을 위해 오리진에 대한 TCP/TLS 연결을 재사용하므로 오리진에서 처리해야 하는 새 연결 수와 오리진에서 송신되는 TLS 인증서의 양이 줄어듭니다. 이렇게 하면 초당 새로 설정된 연결 수와 처리된 바이트 수가 줄어들어 LCU 소비가 줄어들기 때문에 ALB와 같은 오리진 비용이 절감됩니다.
다양한 방법으로 비용을 추가로 절감하도록 CloudFront를 구성할 수 있습니다. 예를 들어 GZIP 또는 Brotli를 사용하여 텍스트 파일을 압축하여 DTO를 줄일 수 있습니다. 또 다른 예로, 애플리케이션에 엣지 함수가 필요한 경우 Lambda@Edge 보다 CloudFront Functions가 비용이 저렴하기 때문에 해당하는 경우 CloudFront Functions를 사용하는 것이 좋습니다. 엣지 기능을 최적화하여 비용을 절감하기 위한 모범 사례에 대해 읽어보세요.
마지막으로, 일반 작업의 일부로 무효화를 사용하는 대신 표준 Cache-Control 헤더를 사용하여 캐시의 최신성을 제어하는 것이 좋습니다. Cache-Control 메커니즘은 안정성이 더 뛰어나고 브라우저에서 캐싱을 제어할 수 있으며 비용이 들지 않습니다(CloudFront 무효화와 비교하여 월별 1,000건 이상의 무효화 할당 가능). 비상용 시나리오에는 무효화를 사용하세요.
AWS WAF 최적화
AWS WAF 비용의 주요 구성 요소는 일반적으로 요청 수수료입니다. 다음과 같은 여러 가지 방법으로 이 비용을 줄일 수 있습니다.
- 위협 모델링에 따른 보호가 필요한 CloudFront 배포에서만 AWS WAF를 활성화하세요. 예를 들어, S3에 호스팅되는 정적 콘텐츠에 WAF 보호가 필요하지 않은 경우, 이를 별도의 CloudFront 배포에 있는 별도의 도메인 (예: static.example.com)으로 이동하고 HTML 파일을 제공하는 기본 배포(예: www.example.com)에서만 AWS WAF를 활성화하세요.
- Shield Advanced를 구독하면 AWS WAF 요청 수수료가 Shield Advanced 요금에 포함됩니다. Shield Advanced는 월간 구독료와 애플리케이션 Data Transfer Out에 대한 프리미엄 요금을 부과합니다. 애플리케이션이 요청 집약적인 경우(낮은 평균 페이로드(예: API)로 초당 많은 요청) Shield Advanced를 활성화하면 전체 WAF 비용을 줄이는 데 도움이 될 수 있습니다.
- 마지막으로, CATPCHA, AWS Bot Control 또는 AWS Marketplace의 공급업체가 관리하는 규칙과 같은 일부 AWS WAF 규칙에는 추가 비용이 발생합니다. 이러한 규칙의 범위를 특정 조건(예: CAPTCHA 의심스러운 IP만 또는 HTML 요청에만 Bot Control 적용)으로 범위를 좁히고 WebACL 말단에서 사용하여 추가 비용 없이 악의적인 요청을 차단할 수 있는 사전 무료 규칙을 통해 이러한 비용을 최적화하세요. WAF 규칙 비용 최적화에 대한 자세한 설명은 이 블로그를 읽어보세요.
애플리케이션 수준 최적화
CloudFront 전송 비용을 줄이기 위해 구현할 수 있는 애플리케이션 수준 기법이 있습니다. 다음 기법을 고려해 보세요.
- 브라우저 캐싱을 활용하여 CloudFront에서 전송하는 요청의 양을 줄입니다.
- 객체에 ETag를 구현하여 조건부 요청을 활성화합니다. 304 Not Modified 응답을 통한 객체 새로 고침은 전체 가져오기에 비해 전송 비용이 저렴합니다.
- WebP 및 Avif와 같은 최신 형식을 사용하여 이미지를 압축하는 이미지 최적화를 구현합니다. 또한 브라우저에서 렌더링되지 않는 이미지를 다운로드하지 않도록 웹 사이트에 이미지를 지연 로드합니다.
- 비디오 전송을 위한 적응형 비트 전송률 스트리밍을 구현합니다. QVBR 비디오 인코딩을 고려해 보세요. 디바이스 유형에 따라 최적화된 렌디션 래더를 제공하는 것을 고려해 보세요. 이 블로그에서는 이 개념을 설명하지만 CloudFront Functions 출시 전에 Lambda@Edge를 사용하여 작성되었습니다.
- 가능한 경우 API 호출에 대해 동일한 오리진 정책을 사용하면 실행 전 CORS OPTION 요청 비용이 절감됩니다. 자세한 내용은 이 블로그를 읽어보세요.
- 모든 로깅 옵션을 고려하여 가장 비용 효율적인 옵션을 선택하세요. CloudFront의 표준 액세스 로그는 추가 요금 없이 제공되지만 모든 트래픽에 적용됩니다. 반면 CloudFront의 실시간 로그는 CloudFront 캐시 동작에 의해, 증분 요금에 대한 필수 필드별로 세분화되어 구성됩니다. WAF는 여러 로깅 옵션을 제공하며, 가장 비용 효율적인 옵션은 Kinesis Firehose를 기반으로 하는 옵션입니다. 참고로 규칙 작업이나 방출된 레이블과 같은 차원을 기준으로 로깅된 요청을 필터링할 수 있습니다.