콘텐츠 전송 네트워크
웹 트래픽이 지리적으로 분산된 경우 전체 인프라를 전 세계에 복제하는 것은 때떄로 불가능할 수도 있습니다. 또한 비용 효율적이지 않습니다. 콘텐츠 전송 네트워크(CDN)에서는 웹 콘텐츠의 캐시된 사본을 고객에게 제공하기 위해 엣지 로케이션의 글로벌 네트워크를 사용할 수 있습니다.
응답 시간을 줄이기 위해 CDN은 고객 또는 발신 요청 위치에 가장 가까운 엣지 로케이션을 사용합니다. 가장 가까운 엣지 로케이션 사용 시에는 웹 자산이 캐시에서 제공되므로 처리량이 크게 증가합니다. 동적 데이터의 경우, 다수의 CDN이 오리진 서버에서 데이터를 검색하도록 구성할 수 있습니다.
엣지 로케이션에 유지할 정도로 자주 액세스되지 않는 콘텐츠가 있을 때는 리전 엣지 캐시를 사용합니다. 이러한 콘텐츠는 리전 엣지 캐시를 사용합니다. 이러한 콘텐츠는 리전 내 엣지 캐시에 수집되므로 오리진 서버에 해당 콘텐츠를 검색할 필요가 없습니다.
CloudFront
CloudFront는 웹 사이트, API, 동영상 콘텐츠 또는 기타 웹 자산의 전송을 가속화하는 글로벌 CDN 서비스입니다. 다른 AWS 제품과 통합하여 사용하면 개발자와 기업이 사용자에게 쉽고 빠르게 콘텐츠를 전송할 수 있습니다. 최소 사용 약정이 없습니다.
CloudFront는 지연 시간 및 처리량을 위한 네트워크 계층 최적화와 함께 캐시 동작 최적화를 위한 강력한 유연성을 제공합니다. CDN은 기본적으로 멀티 티어 캐시를 제공합니다. 멀티 티어 캐시에 포함되어 있는 리전 엣지 캐시는 객체가 엣지에 아직 캐싱되어 있지 않은 경우 지연 시간을 단축하고 오리진 서버의 부하를 줄입니다.
CloudFront는 WebSocket 프로토콜을 통한 실시간 양방향 통신을 지원합니다. 이 영구 연결을 통해 클라이언트와 서버가 반복적인 연결로 인해 오버헤드 없이 서로 실시간 데이터를 전송할 수 있습니다. 이는 특히 채팅, 공동 작업, 게임, 금융 거래 같은 통신 애플리케이션에 유용합니다.
이처럼 CloudFront에서 WebSocket이 지원되므로 고객은 다른 동적 및 정적 콘텐츠와 동일한 경로를 통해 WebSocket 트래픽을 관리할 수 있습니다. CloudFront를 사용하면 CloudFront가 기본 제공하는 AWS Shield 및 AWS WAF와의 통합을 통해 DDoS 보호를 활용할 수 있습니다.
엣지 캐싱
CloudFront가 아닌 일반적인 웹 서버에서 이미지를 제공한다고 가정합니다. URL A/photo.png를 사용하여 photo.png라는 이미지를 제공할 수 있습니다. 사용자는 이 URL로 쉽게 이동해 해당 이미지를 볼 수 있습니다.
이미지가 발견될 때까지 인터넷으로 이루어진 상호 연결된 네트워크의 복잡한 모음을 통해 네트워크에서 다른 네트워크로 요청이 라우팅되었다는 사실은 아마 모를 것입니다.
CloudFront는 AWS 백본 네트워크를 통해 콘텐츠를 가장 효과적으로 서비스할 수 있는 엣지 로케이션으로 각 사용자 요청을 라우팅하여 콘텐츠 배포 속도를 높입니다. 일반적으로 CloudFront 엣지의 서버가 유저에게 가장 빠른 속도로 제공합니다. AWS 네트워크를 사용하면 사용자의 요청이 반드시 통과해야 하는 네트워크의 수가 줄어들어 성능이 향상됩니다. 파일의 첫 바이트를 로드하는 데 걸리는 지연 시간이 줄어들고 데이터 전송 속도가 빨라집니다. 또한 파일(객체)의 사본이 전 세계 여러 엣지 로케이션에 유지(또는 캐시)되므로 안정성과 가용성이 향상됩니다.
CloudFront 캐싱 단계
- 요청이 최적의 엣지 로케이션으로 라우팅 됩니다.
- 캐시되지 않은 콘텐츠가 오리진으로부터 검색됩니다.
- 오리진 콘텐츠가 캐싱을 위해 CloudFront 엣지 로케이션으로 전송됩니다.
- 데이터가 사용자에게 전달 됩니다.
콘텐츠가 이미 캐시되어 있으며 콘텐츠 유지 시간(TTL)이 만료되지 않았다면 2~3단계를 건너뛰며 데이터가 엣지 로케이션에서 콘텐츠 요청자에게 전송됩니다.
CloudFront 구성
CloudFront를 구성하려면 CloudFront가 사용자의 파일을 가져오는 오리진 서버(예: S3 버킷 또는 사용자의 HTTP 서버)를 지정합니다. 이들 서버는 전 세계의 CloudFront 엣지 로케이션에서 배포됩니다.
- 오리진 서버는 객체의 최종 원본 버전을 저장합니다.
- HTTP를 통해 콘텐츠를 제공하는 경우, 오리진 서버는 S3 버킷이거나 웹 서버 같은 HTTP 서버입니다.
- HTTP 서버는 EC2 인스턴스 또는 사용자가 관리하는 온프레미스 서버에서 실행될 수 있습니다. 이러한 서버를 사용자 지정 오리진이라고도 합니다.
다음으로 CloudFront 배포를 생성합니다. 그러면 최종 사용자가 웹 사이트 또는 애플리케이션을 통해 요청하는 파일을 가져올 오리진 서버에 대해 CloudFront에 알려줍니다. 동시에 CloudFront에서 모든 요청을 기록할지 여부 및 배포를 만들자마자 활성화할지 여부와 같은 세부 사항을 지정합니다.
CloudFront는 새 배포에 도메인 이름을 할당합니다. 이 서비스는 콘텐츠를 제외한 배포의 구성을 모든 엣지 로케이션에 전송합니다.
성능 개선
CloudFront는 관리형 서비스입니다. 성능을 개선할 수 있도록 AWS에서 제공하는 서비스를 파악해야 합니다. 그리고 애플리케이션 성능을 최적화하도록 CloudFront를 구성해야 합니다.
AWS는 콘텐츠 전송 성능을 개선하는 기능을 제공합니다.
- TCP 최적화
CloudFront는 TCP 최적화 기능을 사용해 네트워크에서 현재 트래픽을 전송 중인 속도와 현재 왕복 지연 시간을 관찰합니다. 그런 다음 해당 데이터를 입력으로 사용하여 성능을 자동으로 개선합니다.
- TLS 1.3 지원
CloudFront는 TLS 1.3을 지원합니다. TLS 1.3은 필요한 왕복 수가 적어 더 간편한 핸드셰이크 프로세스를 통해 더욱 우수한 성능을 제공합니다. 그리고 개선된 보안 기능도 추가로 제공합니다.
- 동적 콘텐츠 배치
CloudFront를 사용하면 ELSB 로드 밸런서나 EC2 인스턴스에서 웹 애플리케이션 또는 API와 같은 동적 콘텐츠를 제공할 수 있습니다. 그러면 콘텐츠의 성능, 가용성 및 보안을 개선할 수 있습니다.
성능 개선을 위해 CloudFront 배포의 구성을 조정할 수도 있습니다.
- 캐싱 전략 정의
적절한 TTL을 선택해야 합니다. 또한 쿼리 문자열 파라미터, 쿠키 또는 요청 헤더 등을 기준으로 캐싱을 고려해야 합니다.
- 캐시 적중률 개선
CloudFront 콘솔에서 적중, 미스, 오류 상태의 뷰어 요청 비율을 확일할 수 있습니다. 그리고 CloudFront 캐시 통계 보고서에 수집된 통계를 기준으로 하여 배포를 변경할 수 있습니다.
- CloudFront Origin Shield 사용
리전 엣지 캐시와 오리진 간에 캐싱 게층을 더 추가할 수 있습니다. Origin Shield가 사용 사례에 항상 적합한 것은 아니지만 뷰어가 여러 지역의 리전에 분산되어 있거나 온프레미스 오리진에 용량 또는 대역폭 제약 조건이 적용되는 경우에는 유용할 수 있습니다.