Amazon CloudFront
안녕하세요. Amazon CloudFront 소개 동영상에 오신 것을 환영합니다. 이 동영상에서는 규모를 확장을 하고 비용을 절약하며 애플리케이션 성능을 향상할 수 있게 해 주는 AWS 서비스에 대해 살펴보겠습니다.
저는 AWS 교육 및 자격증 팀의 Rafael Lopes입니다. 팀원으로서 이 동영상과 같은 전용 교육 콘텐츠 개발 및 배포에 참여했습니다.
이 동영상에서는 AWS 글로벌 인프라스트럭처에 대해 간략하게 설명하고 Amazon CloudFront에 대해 개략적으로 살펴보겠습니다. CDN 생성 및 구성이 얼마나 쉬운지 알 수 있으며 그 후 일부 사용 사례를 살펴보고 CloudFront가 네트워크 지연 시간을 단축함으로써 콘텐츠 전송에 어떻게 도움을 줄 수 있는지 보여 주는 데모를 살펴보겠습니다. 또한 AWS 글로벌 인프라스트럭처에 대해 살짝 알아보고 CloudFront와 어떤 관련이 있는지 살펴보겠습니다.
Amazon CloudFront의 역할
콘텐츠를 사용자에게 전송하기 위해 Amazon CloudFront는 10개 이상의 방사형 엣지 캐시에서 80개 이상의 엣지 로케이션으로 구성된 글로벌 네트워크를 사용하여 콘텐츠를 전송합니다. 실제 위치는 전 세계 여러 국가에 있으며 이 수치는 빈번하게 증가합니다. 따라서 기본적으로 CloudFront를 사용하면 전 세계에 있는 여러 위치를 활용하여 콘텐츠를 전송하고 사용자는 보다 짧은 지연 시간으로 애플리케이션과 상호 작용할 수 있습니다.
예를 들어 싱가포르에서 애플리케이션을 실행하고 사용자는 뉴욕에 있는 경우 CloudFront를 사용하면 뉴욕 로컬에서 콘텐츠를 캐싱하여 어떤 수요 요청이든 서비스 확장을 지원할 수 있습니다. 전 세계에 있는 이러한 모든 접속 포인트를 갖춘 Amazon CloudFront는 Content Delivery Network 줄여서 CDN, 즉 콘텐츠 전송 네트워크라고 할 수 있습니다.
장점
CloudFront를 사용하면 외부 데이터 전송 시 낮은 요금 덕분에 비용을 절감할 수 있으며 고객에게 더 큰 만족을 줄 수도 있습니다. 콘텐츠를 고객 가까이에서 캐싱할 수 있고 이를 통해 콘텐츠를 더 빨리 전송할 가능성이 증가하기 때문입니다.
CloudFront는 다른 AWS 서비스와 긴밀하게 통합됩니다. AWS 서비스로는 AWS Web Application Firewall, AWS Certificate Manager, Amazon Route 53, Amazon S3 등이 있습니다.
구성 방법
CloudFront에서 CDN을 생성 및 구성하는 일은 아주 간단합니다.
가장 손쉽게 시작하는 방법은 AWS Management Console로 이동하여 Create Distribution 버튼을 클릭하는 것입니다.
그런 다음 생성할 CDN 유형을 선택합니다. RTMP는 동영상 스트리밍에 사용되고 웹은 보통 동영상 스트리밍이 아닌 콘텐츠 전송에 사용하도록 설계되었는데 이는 이 콘텐츠가 정적이어야만 한다는 의미는 아닙니다. 웹 배포 시 CloudFront를 사용하여 동적 콘텐츠도 전송할 수 있습니다.
다음 화면에서는 하나 이상의 원본과 동작을 지정해야 합니다. 기본적으로 원본은 S3 버킷 또는 실행하는 모든 애플리케이션일 수 있으며 AWS 제품이 아니어도 됩니다. 웹 서버의 IP 주소, 로드 밸런서 엔드포인트 또는 인터넷을 통해 도달할 수 있는 다른 엔드포인트를 입력할 수 있습니다. 기본적으로 동작은 해당 원본과 연결할 URL 패턴과 일치합니다. 지금 원본 하나를 지정해야 하지만 나중에 이러한 기본 설정을 추가할 수 있습니다. 여러 원본을 여러 동작과 연결할 수 있습니다. 예를 들어 S3 버킷을 sampleapplication.net/images와 같이 yourcdn/images 형식의 요청에 대한 원본으로 사용할 수 있습니다. 그리고 나머지 모드에 대해 Elastic Load Balancing을 사용할 수 있습니다.
동일한 화면에서 아래로 스크롤하면 CDN 배포를 생성하는 버튼을 찾을 수 있는데 이는 완전히 셀프 서비스이고 지원 티켓을 열 필요가 없습니다. 심지어 다른 AWS 서비스 또는 AWS 명령줄 인터페이스를 사용하여 새 환경에 대한 새 배포 생성을 자동화할 수 있습니다.
예를 들어 일부 사용 사례에는 정적 자산 캐싱, 라이브 및 온디맨드 동영상 스트리밍, 보안 및 DDoS 보호, API 가속화 그리고 실제로 상상할 수 있는 모든 것이 포함됩니다. Amazon은 자사 서비스에 대한 AWS의 사용 사례를 파악하는 데 높은 관심을 두고 있습니다.
데모
AWS CloudFormation이 계정 액셀러레이터에 어떤 도움을 줄 수 있는지 데모를 살펴보겠습니다. 제 애플리케이션은 싱가포르에 있습니다. 저는 CloudFront를 사용하여 태평양을 넘어 이곳 시애틀까지 저에게 더 가까운 엣지 로케이션에서 로컬 방식으로 콘텐츠를 캐싱하여 애플리케이션을 가속화합니다. 여기서 저는 제 애플리케이션이 싱가포르에 있는 t2-micro EC2 인스턴스를 실행하도록 합니다. 그리고 실제로 이 인스턴스가 싱가포르에서 실행 중임을 확인할 수 있는데 싱가포르의 AWS Management Console에서 로그인했기 때문입니다. SSH를 통해 해당 인스턴스에 연결하면 해당 인스턴스는 Linux 인스턴스이므로 해당 인스턴스에서 웹 서버가 실행 중임을 확인할 수 있습니다. 제 HTTP 서버의 로그 폴더로 이동하여 access_log 파일에서 tail -f를 수행하면 이 웹 서버에서 제공 중인 웹 페이지에서 제가 한 모든 요청에 대해 이 로그 파일에 있는 라인이 생깁니다. 따라서 제 애플리케이션의 IP 주소를 얻고 브라우저에 입력하면 요청한 모든 시간에 대해 access_log에 활동이 있는 것을 확인할 수 있습니다. 페이지를 새로 고침하면 로그 파일에 다른 라인이 있는 것을 확인할 수 있습니다. 페이지를 다시 새로 고침하면 다른 라인이 생깁니다. 제가 독립적으로 요청을 하고 있으며 모든 요청이 싱가포르에 있는 제 단일 인스턴스를 가리키는 것을 확인할 수 있습니다. 보시다시피 이 인프라스트럭처는 CloudFront 아래에서 실행되고 있지 않는데 제가 해당 인스턴스의 IP 주소로 바로 요청을 했기 때문입니다. 제가 요청을 할 때마다 요청이 여기 시애틀에서 싱가포르로 이동하기 때문에 지연 시간 긴 것을 확인할 수 있습니다. 이 경우 447밀리 초입니다. 페이지를 새로 고침할 때마다 여기에서 싱가포르까지의 지연 시간이 375, 374, 407밀리 초임을 확인할 수 있습니다. 그래서 지연 시간이 다소 긴 것을 볼 수 있습니다. 이 문제를 해결하고 CloudFront를 사용하기 위해 새 CloudFront 배포를 생성했습니다. 이 경우에는 이것입니다. 해당 웹 서버를 제 원본으로 지정하고 와일드카드인 별에서 보시다시피 모든 것을 가리키는 단일 동작을 해당 원본으로 지정합니다. 이때 CloudFront 배포의 도메인 이름을 사용할 수 있고 또는 자체 CNAME을 사용할 수 있습니다. 이 경우 이 이름을 사용하고 이 이름이 제 사용자에게 노출되는 것을 막기 위해 이 CloudFront 배포에 대한 CNAME으로 cdn.sampleapplication.net을 사용합니다. 따라서 cdn.sampleapplication.net으로 이동하여 페이지를 새로 고침하면 제 웹 서버에 활동이 없음을 확인할 수 있는데 이는 CloudFront가 저와 더 가까운 엣지 로케이션에서 콘텐츠를 캐싱했기 때문입니다. 또한 CDN에 대한 이러한 요청의 지연 시간이 모든 요청을 위해 서버로 이동하는 것보다 훨씬 더 빠름을 확인할 수 있습니다. 88밀리 초, 111밀리 초, 12밀리 초, 22밀리 초 및 31밀리 초임을 확인할 수 있습니다. 실제로 제 웹 서버에서 활동이 보이지 않습니다. CloudFront는 제가 고가용성을 유지하도록 도와줍니다. 웹 서버 충돌과 같이 원본에서 문제가 발생할 경우 웹 서버를 중지해도 콘텐츠를 캐시에서 계속 제공됩니다.
요약
요약하자면 이 동영상에서는 AWS 글로벌 인프라스트럭처와 CloudFront가 어떤 관련이 있는지 살펴보았고 배포를 생성 및 구성하는 방법에 대해도 간략하게 다루었고 몇몇 가치 제안, 사용 사례 및 데모를 살펴보았습니다.
학습에 도움이 되었기를 바랍니다. 다른 동영상을 살펴보면서 계속 학습해 보세요. 저는 AWS 교육 및 자격증 팀의 Rafael Lopes였습니다. 시청해 주셔서 감사합니다.