S3 (Simple Storage Service)
Storage 서비스로, 모든 종류의 데이터를 원하는 형식으로 저장할 수 있습니다.
간단한 Key 기반의 객체 스토리지로, AWS에서 정적 리소스를 다룰 때 가장 권장하고 있는 방법입니다.
데이터 저장공간의 유연성
데이터 다운로드 가능
접근 권한 설정 가능
표준 Interface 사용
회사에서 진행하고 있는 프로젝트에서,
클라이언트에서 S3버킷에 파일을 업로드하고 각 객체 URL을 통해 호출하고 있었습니다.
클라이언트에서 S3를 직접 접근할 경우 캐싱 기능이나 보안 측면에서 한계가 있습니다.
AWS가 제공하는 Contents Delievery Network인 Cloudfront를 사용해 S3데이터를 좀 더 효율적으로 전송하는 방법에 대해 알아보고 적용하려 합니다.
CDN?
콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장해 제공하는 시스템
주요 ISP(Internet Services Provider)의 CDN서버에 콘텐츠를 분산시키고,
유저의 네트워크 경로 상 가장 가까운 곳의 서버로부터 콘텐츠를 전송받도록 해 트래픽이 특정 서버에 집중되지 않고 각 지역 서버로 분산되도록 하는 기술을 말합니다.
AWS CloudFront는 정적, 동적 컨텐츠를 빠르게 응답하기 위한 캐시 기능을 제공하는 CDN 서비스입니다.
Cloundfront는 Edge Location이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠 서비스를 제공합니다.
아래와 같이 전 세계 여러곳에 Edge Server를 갖고 있죠.
콘텐츠 캐싱을 통한 빠른 응답
웹 사이트의 보안 개선
Edge 서버를 사용해 콘텐츠를 캐싱하고 서비스를 제공하면 최종 사용자가 위치한 곳에 더욱 가깝게 콘텐츠를 전송할 수 있어 성능이 향상됩니다.
어떻게 성능이 향상되냐 하면...
즉,
처음: 사용자 > CloudFront > S3
캐싱 이후: 사용자 > CloudFront
즉, CloudFront는 콘텐츠를 Edge Location에 캐싱하기 때문에 S3 버킷에 대한 부하를 줄일 수 있고, 콘텐츠를 요청하는 사용자에게도 빠르게 응답할 수 있습니다.
CloudFront를 이용해 S3에 접근하게 되면 S3에 대한 액세스 제한을 강화할 수 있습니다.
예를 들어 Cloudfront를 사용하면 지리적 제한, 서명된 URL, 서명된 쿠키 등을 통해 액세스 제한을 추가로 설정해 좀 더 상세한 기준에 따라 액세스 권한을 부여할 수 있습니다.
CloudFront의 보안기능 중 하나로, S3 버킷 및 콘텐츠에 대한 액세스를 CloudFront와 CloudFront가 실행하는 작업으로 제한합니다.