CloudFront
CloudFront는 전 세계 티어 1,2,3 의 이동통신사와 협력하여 네트워크에 연결된 글로벌 CDN(Content Delivery Network) 서비스로써 저지연성과 고속전송 속성을 지닌 콘텐츠 배포 기능을 제공하며, 콘텐츠 사용자와 가까운 지역(엣지 로케이션)에 네트워크망을 구축하고, 지역별 엣지 캐시를 통해 사용자 경험 수준을 높일 수 있게 합니다. 정적 콘텐츠 뿐만 아니라 동적 콘텐츠도 지원하며, 사용자 요청은 가장 가까운 엣지 로케이션에서 처리 됩니다.
CloudFront의 핵심 개념
엣지 로케이션 CloudFront는 엣지 로케이션이라 부르는 글로벌 데이터센터 네트워크를 통해 콘텐츠를 배포합니다. 엣지 로케이션은 전 세계 주요 대도시에 위치하며, AWS 리전 시설의 위치와는 다를 수 있습니다.
지역별 엣지 캐시
지역별 엣지 캐시는 오리진 웹 서버와 엣지 로케이션 사이에 위치해 사용자에게 직접 콘텐츠를 전송합니다.
특정 콘텐츠의 인기가 줄어들수록 개별 엣지 로케이션에서는 해당 객체를 삭제해 인기가 많은 콘텐츠를 제공할 수 있는 여유 공간을 확보하고, 지역별 엣지 캐시는 엣지 로케이션보다 높은 수준의 캐싱 능력을 바탕으로 좀 더 오랜 시간 캐싱 데이터를 유지할 수 있습니다.
이와 같은 캐싱 데이터가 존재하면 사용자의 콘텐츠 요청 시, CloudFront는 오리진 웹 서버에 돌아갈 필요 없이 지역별 엣지 캐시로 사용자 요청에 대응하기 떄문에 콘텐츠 제공 성능이 높아집니다. 지역별 엣지 캐시는 CloudFront의 기본 기능이므로 사용자는 별도의 설정 작업을 하거나 비용을 부담할 필요가 없습니다.
CloudFront의 활용 시나리오
정적 콘텐츠
캐싱 CloudFront의 가장 대표적인 활용방식 입니다. 사진, 영상, 자바스크립트, 스타일시트 등의 정적 콘텐츠 전송 속도를 높여주고 사용자는 엣지 로케이션을 통해 요청한 콘텐츠를 제공 받습니다.
동적 콘텐츠
네트워크 최적화를 통한 동적 콘텐츠 가속화 기능을 제공하며, EC2 서버에서 실행 중인 애플리케이션 또는 웹사이트를 CloudFront와 통합할 수 있습니다.
DDoS 공격 대응
CloudFront는 OSI 모델의 L3, L4, L7을 보호할 수 있는 AWS Shield, WAF를 통합해 DDoS 공격을 방어할 수 있습니다. TLS 연결 및 서명 URL을 통한 사용자 인증 등의 기능을 제공합니다.
강화된 보안성
CloudFront는 SSL(HTTPS)방식의 보안 기능을 제공하며, 보안이 강화된 API, SSL/TSL 적용, advanced SSL 기능을 자동으로 적용할 수 있습니다. 더불어 모든 인프라와 프로세스는 중요 콘텐츠의 보안 수준을 유지하기 위해 PCI, DDS, HIPAA, ISO 규정을 준수합니다.
CloudFront의 적용 방식
경로 패턴 매칭
사용자는 웹사이트 또는 애플리케이션의 URL 경로 패턴에 따라 다양한 캐시 제어 동작을 설정할 수 있습니다. 예를 들어 CloudFront가 이미지 뷰어로부터 요청을 받으면 요청 경로는 images/*.jpg와 같은 경로 패턴과 비교해 그에 맞는 제어 동작을 적용합니다. 사용자는 이와 같은 경로 패턴에 따라 HTTP/HTTPS 프로토콜 설정, 헤어 또는 캐싱 옵션 설정, 쿠키 및 쿼리 문자열 포워딩 설정, 접근 제한등의 방식으로 특정 오리진으로 요청을 전송할 수 있습니다.
헤더
헤더 값을 통해 요청 헤더를 오리진 캐시로 포워딩 할 수 있으므로, 디바이스의 헤더를 확인한 뒤 그에 맞는 동작을 적용할 수 있습니다. 예를 들어 동일한 사이트를 접속한 노트북 사용자와 스마트폰 사용자의 요청에 각기 다른 반응을 제공할 수 있습니다.
쿼리(query) 문자열 및 쿠키
웹 애플리케이션 중 일부는 오리진으로 정보를 전달하기 위해 쿼리 문자열을 사용합니다. 쿼리 문자열은 웹 요청의 일부로, ? 기호 다음에 나오며, 하나 이상의 파라미터를 & 기호로 연결해 사용합니다.
서명 URL, 서명 쿠키
정적 콘텐츠를 S3 버킷에 옮긴 뒤에는 CloudFront의 서명 URL 방식을 통해 해당 콘텐츠에 대한 비인가 접근을 막을 수 있습니다. 서명 URL에는 만료일 및 만료 시간 등의 부가 정보가 포함돼 있어 콘텐츠에 대한 접근을 조금 더 세심하게 제어 할 수 있습니다. 서명 URL을 이용해 웹 서버가 S3 버킷의 콘텐츠에 접근할 수 있는 시간 또는 방식을 제어 할 수 있으며, 사용자가 특정 콘텐츠에 대한 접근을 요청할 경우 접속 시간 제약이 설정된 서명 URL 링크를 전달 받게 됩니다.
서명 쿠키는 기능상으로는 서명 URL과 거의 동일하며 단지 HTTP 쿠키에 추가 정보를 넣는다는 점이 다릅니다. 서명 쿠키는 다수 객체에 대한 접근 제어, URL 변경 없이 동일 객체에 대한 접근 제어를 해야할 때 유용합니다. 작동방식은 다음과 같습니다. 사용자가 웹사이트에서 인증을 받으면 Set-Cookie 헤더가 사용자 계정에 전달되며 이는 사용자 디바이스의 쿠키에 적용됩니다. 사용자가 제한 객체에 대한 접근을 요청하면 브라우저는 요청에 포함된 쿠키를 포워딩 합니다. 그러면 CloudFront가 쿠키 속성을 확인해 접근 허용 또는 차단 여부를 결정하게 됩니다.
지역 제한 기능
사용자가 콘텐츠에 대한 요청을 하면 CloudFront는 사용자의 위치에 상관 없이 콘텐츠를 전송합니다. 특정 국가의 콘텐츠 요청을 거부하려면 다음과 같은 지역 제한 기능을 사용하면 됩니다.
접속 허용 국가 목록인 화이트리스트를 기반으로 요청 콘텐츠에 대한 접근을 허용하는 방법\
접속 금지 국가 목록인 블랙리스트를 기반으로 요청 콘텐츠에 대한 접근을 거절하는 방법
오류 처리 기능
콘텐츠 요청에 대해 오리진 서버가 HTTP 4xx, 5xx 상태 코드를 반환하면 사용자에게 커스텀 오류 페이지를 제공할 수 있습니다. 예를 들어 커스텀 오리진 서버가 사용 불능 상태고, 5xx 응답을 반환하면, CloudFront는 S3에 호스팅된 정적 페이지를 제공할 수 있습니다. 또 최소 유지시간(TTL)을 정의해 CloudFront 캐시 오류를 얼마나 오래 유지 할지 조절할 수 있습니다.
댓글