Azure CDN 완전정복 1 – 만들기

CDN 개요

웹 애플리케이션 개발의 마지막에는 사이트의 성능을 올리기 위한 최적화를 하곤 한다. 물론 운영할 때도 지속적으로 신경써야 하는 부분이다. 여러가지 최적화/튜닝 방법중 CDN(Content Delivery Network)을 이용하면 정적인 컨텐츠의 다운로드 속도를 크게 개선할 수 있다. 사이트 홈에 사용된 큰 이미지, 동영상, 문서나 프로그램 다운로드, 상품 이미지 등 크기가 큰 컨텐츠 일부를 CDN을 적용하거나 음악, 동영상 같이 컨텐츠를 빠르게 전송하는게 핵심인 서비스에 적용하면 그야말로 드라마틱한 속도 향상을 경험 할 수 있다. 게임의 경우 Patch 파일 다운로드에 CDN을 많이 사용한다.

CDN의 원리는 어쩌면 단순한데 전세계의 네트워크 곳곳에 엣지(Edge) 서버를 두고 원본 컨텐츠를 Edge 서버에 캐싱을 해주는 것이다. 그러면 사용자는 멀리 있는 원본 서버가 아닌 가장 가까운 Edge 서버에서 컨텐츠를 가져오기 때문에 빠른 것이다. Azure의 엣지 서버 위치는 여기에서 확인 가능하다.

속도 뿐만 아니라 별도의 엣지서버에 캐싱을 하기 때문에 부하를 분산할 수 있고 DDoS 공격으로 부터 보호를 해줄 수 있다. 또한 특정 지역에서는 컨텐츠를 받을 수 없도록 하는 ‘지역 필터링’ 기능도 제공한다.

Azure CDN 만들기

Azure CDN은 그리 어렵지 않게 설정해서 사용할 수 있다. Azure의 CDN은 글로벌 서비스인 Akamai와 Verizon CDN을 선택할 수 있다. 새로운 CDN 프로필을 만들고 끝점을 설정하면 우선 기본 설정은 끝이다.

Verizon vs Akamai

Azure CDN을 만들때 가격옵션에서 3가지를 선택할 수 있다. 두배나 비싼 P1을 제외하면 Verizon과 Akamai 둘 중 하나를 선택할 수 있다. 기능상의 차이가 있다면 바로 “Core analytics”이다. 즉 모니터링 툴을 얘기하는데 Akamai는 제공하지 않는다. 사실 CDN 서비스는 상당히 안정적인 서비스이기 때문에 모니터링이 필요 없을 수도 있다. 예를들어 어떤 웹 애플리케이션의 일부 리소스를 CDN을 통해서 전송하는 경우에는 필요 없을 수도 있다. 하지만 음악 서비스 같이 CDN 이 중요한 서비스인 경우 모니터링이 꼭 필요한데 이경우는 Verizon을 선택하는 것이 좋다. CDN 모니터링에 대한 상세한 내용은 이 시리즈의 3편인 모니터링 포스트에서 확인 가능하다.

cde_price

끝점(End Point) 설정

원본은 Azure의 서비스인 Storage, Cloud Service, Web App를 바로 연결 할 수 있고 Azure 이외의 서비스도 연결 가능하다.

보통 많이 사용하는 방법은 Storage Account의 Blob에 컨텐츠를 넣어놓고 Storage를 CDN에 연결하는 방법이다. Azure Storage Account는 만들면 HTTP/HTTPS 도메인 주소를 하나 주기 때문에 그 주소를 원본 주소로 하면 된다.

azure_cdn_endpoint

만약 Azure 가상머신(VM)에 웹서버가 돌고 있고 컨텐츠가 웹으로 서비스 되고 있다면 Custom Origin을 선택하고 VM의 도메인 주소를 넣어주면 된다. (Azure VM의 도메인 주소는 IP 주소라는 리소스에서 설정 가능하며 abc.eastasia.cloudapp.azure.com 같은 주소를 얻을 수 있다.)

Azure의 서비스가 아니라도 외부에 있는 HTTP/HTTPS 주소가 있고 그 주소로 컨텐츠가 서비스 되고 있다면 역시 Custom Origin을 선택하고 그 주소를 넣어 준다.

Origin Path 를 넣어주면 http://abc.eastasia.cloudapp.azure.com/path 주소가 http://vmcdn.azureedge.net 으로 매핑이 된다.

CDN 테스트

끝점까지 만들면 기본 설정은 모두 끝났다. 테스트는 웹브라우저로 CDN 주소로 컨텐츠를 접속해보면 된다. 주의할 것은 CDN 주소가 즉시 활성화 되지 않는 다는 것. Akamai를 선택했다면 1-2분 이내에 활성화 되고 Verizon을 선택했다면 최대 90분이 걸릴 수 있다. 전세계 엣지 서버로 캐싱되는 시간이니 느긋하게 기다려야 한다.

만약 Azure Storage Blob을 원본으로 설정 했다면 브라우저나 기타 다운로드 툴을 이용해서 테스트를 해본다. 브라우저로 테스트 한다면 브라우저 캐시를 지우면서 테스트를 해야 한다. 또한 음악이나 동영상 파일의 경우  mime-type이 올바로 설정되어 있다면 브라우저 개발자 도구로 속도를 측정하기는 어렵다. 요즘 브라우저가 너무 똑똑해졌는지 음악을 플레이 하면서 다운로드를 하고 음악의 재생 시간에 따라서 조금씩 다운로드를 하기 때문에 전체 다운로드 시간을 정확히 측정하기 어렵다.

신뢰성이 검증된 툴은 아니지만 DownloadTester라는 툴을 다운받아서 측정해봤다. 캡쳐 이미지에서 윗줄은 원본으로 지역은 East Asia(Hong Kong)에 있는 Blob Storage에 있는 음악 파일이고 아래 줄은 CDN 주소이다. 원본은 약 4.87Mbps, CDN 주소는 10.70Mbps 로 약 2배정도 CDN 속도가 빠르다.

cdn_test