개요

동적 API나 매우 개인화된 웹 페이지와 같은 워크로드는 캐시할 수 있는 내용이 거의 없습니다. 하지만 CloudFront 및 Global Accelerator와 같은 AWS 엣지 서비스가 제공하는 보안 및 가속화의 이점을 누릴 수 있습니다. AWS 엣지 서비스는 사용자로부터 평균 20~30밀리초 이내에 전 세계적으로 분산된 수백 개의 접속 지점(POP)에서 작동합니다. 오리진으로 향하는 트래픽은 퍼블릭 인터넷을 거치지 않고 AWS 글로벌 네트워크를 통해 다시 전송됩니다. AWS 글로벌 인프라는 목적에 맞게 구축된 가용성이 높고 지연 시간이 짧은 사설 인프라로, 전 세계의 지상 및 대양 횡단 케이블을 통해 연결되는 글로벌 완전 이중화 메트로 광섬유 네트워크를 기반으로 구축되었습니다.

CloudFront를 통한 동적 가속화

CloudFront는 사용자와 더 가까운 곳에서 TCP/TLS 연결을 종료하는 것 외에도 다음과 같은 방법으로 동적 콘텐츠를 가속화합니다.

  • 오리진에서 지원하지 않더라도 QUIC 또는 TLS1.3과 같은 최신 인터넷 프로토콜을 통해 콘텐츠를 제공합니다.
  • 오리진과의 연결을 지속합니다. 콘텐츠가 로컬 캐시에 없거나 API와 같이 완전히 동적인 경우와 같이 요청을 오리진으로 전달해야 하는 경우가 있습니다. POP에서 지속적 연결을 통해 전달되는 요청은 오리진에 대한 새로운 TCP/TLS 연결을 설정할 필요가 없습니다. 이를 통해 여러 번의 왕복 지연 시간이 제거되고 확장된 TCP 윈도우가 유지됩니다. 오리진 및 CloudFront 구성에서 TCP Keep-Alive 제한 시간을 늘리고 가능하면 Origin Shield를 활성화하여 연결 재사용을 강화할 수 있습니다. 또한 오리진에서의 연결 설정 속도가 낮아지면 확장 측면에서 비용이 절감됩니다. 보다 구체적으로 EC2 및 ALB 기반 오리진의 경우 오리진에서 TLS 인증서를 전송하는 데 따른 DTO 오버헤드가 줄어들기 때문에 데이터 송신(DTO) 요금이 낮아집니다. 참고로 CloudFront는 DTO 계산 시 TLS 오버헤드를 측정하지 않습니다. Origin Shield를 활성화하여 CloudFront에서의 연결 재사용을 강화할 수 있습니다.
    아래 동영상 추천사를 통해 Tinder와 Slack은 CloudFront가 API 응답 시간을 크게 단축하는 데 어떻게 도움이 되는지 설명합니다.

아래 동영상 추천사를 통해 Tinder와 Slack은 CloudFront가 API 응답 시간을 크게 단축하는 데 어떻게 도움이 되는지 설명합니다.

안전한 API 가속화를 위해 Amazon CloudFront를 사용하는 Slack
Optimizing for performance in CloudFront: Every millisecond counts!(CloudFront에서의 성능 최적화: 1밀리초도 중요하다!)

CloudFront로 HTTP 동적 트래픽을 최적화하는 방법에 대한 자세한 내용을 보려면 이 블로그를 읽어보세요. 이 블로그에는 Python 스크립트 사용 방법도 설명되어 있으므로 CloudFront로 HTTP 동적 요청의 성능을 개선하는 방법에 대한 이해를 높일 수 있습니다.

CloudFront를 리버스 프록시로 사용하려면 배포의 관련 캐시 동작에서 캐싱 비활성화 관리형 캐싱 정책을 구성해야 합니다. 이렇게 하면 CloudFront가 POP에서 수신한 요청을 오리진으로 직접 전달하도록 지시합니다. 기본적으로 오리진 요청 정책을 명시적으로 구성하지 않으면 CloudFront는 요청을 오리진에 전달하기 전에 쿠키, 쿼리 파라미터 및 대부분의 헤더를 제거합니다. 예외적으로 CloudFront는 오리진의 도메인 이름 값이 포함된 Host 헤더를 전송하고, 요청자의 IP만큼 증가된 X-Forwarded-For 헤더를 추가하고, User-Agent 헤더를 Amazon CloudFront 값으로 재정의합니다. 참고로 CloudFront가 리버스 프록시로 구성된 경우 Gzip 또는 Brotli를 사용하여 응답을 압축하지 않습니다.

CloudFront에 특정 요청 속성을 전달해야 하는 경우 오리진 요청 정책에서 명시적으로 구성해야 합니다. 예를 들어 AllViewer 관리형 오리진 요청 정책을 구성하여 사용자가 받은 모든 요청 속성을 전달할 수 있습니다. 단, 이렇게 하면 CloudFront는 오리진의 도메인 이름 값을 전송하는 것과는 대조적으로 사용자가 수신한 대로 Host 헤더를 전송합니다. API 오리진이 API Gateway와 같이 Host 헤더에 원본 도메인 이름을 요구하는 하는 경우 대신 AllViewerExceptHostHeader 관리형 오리진 요청 정책을 구성하세요.

전달된 요청을 사용자 국가 또는 디바이스 관련 정보와 같은 CloudFront의 메타데이터로 강화하려면 오리진 요청 정책에서 관련 CloudFront 헤더를 구성하세요. True-Client-IP와 같은 사용자 지정 동적 헤더의 경우 최종 사용자 요청 시 CloudFront 함수를 사용하여 업스트림에 추가하세요.

CloudFront를 사용한 동적 콘텐츠의 성능 향상을 테스트하려면 이 워크숍을 참조하세요.

Global Accelerator를 통한 동적 가속화

Global Accelerator는 BGP Anycast를 사용하여 사용자 트래픽을 가장 가까운 PoP로 라우팅합니다. 여기에서 Global Accelerator는 Amazon 백본을 통해 사용자 트래픽을 오리진으로 전송합니다. Global Accelerator는 다음 기술을 사용하여 성능을 더욱 향상시킵니다.

  • 점보 프레임 지원. Global Accelerator는 AWS 엣지 로케이션과 AWS 리전의 애플리케이션 엔드포인트 간에 점보 프레임을 활성화함으로써 각 패킷에서 최대 6배 더 많은 데이터(페이로드)를 보내고 받을 수 있습니다. 점보 프레임 지원을 통해 사용자와 애플리케이션 간 데이터를 전송하는 데 필요한 총 시간을 단축할 수 있습니다.
  • 엣지에서 TCP 종료. Global Accelerator는 클라이언트와 가장 가까운 AWS PoP 간에 TCP 연결을 설정함으로써 초기 TCP 설정 시간을 단축합니다. 거의 동시에 PoP와 AWS 리전의 애플리케이션 엔드포인트 간에 두 번째 TCP 연결이 생성됩니다.
  • 대량의 수신 측 윈도우, TCP 버퍼 및 정체 윈도우. TCP 종료 트래픽의 경우, Global Accelerator는 AWS 엣지 인프라에서 수신 측 윈도우 및 TCP 버퍼 설정을 조정하여 더 짧은 기간에 애플리케이션으로부터 더 많은 양의 데이터를 수신하고 버퍼링할 수 있습니다. 이를 통해 클라이언트가 더 빠르게 다운로드할 수 있으며, 이제 AWS 엣지에서 직접 데이터를 더 짧은 시간에 가져올 수 있습니다. Global Accelerator는 AWS 글로벌 네트워크를 통해 데이터를 전송함으로써 TCP 정체 윈도우를 스케일 업하여 퍼블릭 인터넷을 통해 일반적으로 가능한 것보다 더 많은 양의 데이터를 전송할 수 있습니다.
AWS Global Accelerator로 성능 및 가용성 개선

리소스

이 페이지의 내용이 도움이 되었나요?