2012년 1월 20일 금요일

아마존 AWS ( Amazon ) CloudFront ( CDN )

Amazon CloudFront

아마존에서는 CDN 으로 CloudFront 를 제공합니다.
이미지에 대한 요청이 많은 어플을 만든다면 굉장히 유용하다고 할 수 있습니다.

하지만, 한국도 되는지는 모르겠네요..
일단, 제가 이걸 사용하게 된 이유는 유럽에서 서비스하는 서버 작업을 하게되서..
그 어플이 이미지를 많이 사용하거든요.

일단, 두가지의 효과를 위해서 사용했습니다.

 1) 이미지를 요청하게 되는 클라이언트 어플에서 빠르게 이미지를 가져오게 하기위해..
      CDN 의 장점이죠. 여러 지역에 이미지가 분산되어 가장 가까운 지역에서 이미지를 가져갑니다.

 2) 이미지 서버 부하에 대한 분산
      이미지 서버에 올라간 이미지들을 모든 클라이언트가 저희 서버에서 가져간다면. 서버에 대한 부하가 어마어마하죠. 또한, 요즘같은 경우 어플 오픈시 몰려드는것을 미리 판단하기도 어렵고.. 또 그에 따라 굉장한 서버를 구축하기도 비용이 만만치 않죠..
   
이런 이유로 인하여 이미지서버를 CloudFront 에 연동하게 되었습니다.

이제 등록을 해보도록 하죠..


 1) 매니지먼트 콘솔 상단 가운데 Cloud Front 를 클릭하시고 왼쪽 상단 Create Distribution 을 선택합니다.



 2) 저는 이미지 전송이 목적이므로 Download 를 선택했구요.
      아마존 내부 서버가 아닌 외부에 있는 이미지서버를 연동하는 것이므로 Custom Origin 을 선택하여 다음과 같이 입력하였습니다.



  Origin DNS Name 은 실제 이미지 서버의 주소가 되겠습니다. 가령 http://image.jmkook77.com/images/2012/01/20/test.png 라면 앞의 도메인만 적으면 되겠습니다. HTTP 를 통해 제공되는 것이므로 HTTP Only 및 80 포트는 선택하고 Continue 를 클릭합니다.


 3) 이제 CNAMEs 를 설정합니다.
      이렇게 설정되었다면 위 주소의 이미지는 이제 http://cdn.jmkook77.com/images/2012/01/20/test.png 로 접근이 되겠죠.

      물론, cdn.jmkook77.com 도메인 서버의 CNAMEs 에 아마존에서 제공하는 CloudFront 의 도메인 주소를 설정해야합니다. 도메인 서버를 직접 운영하신다면 설정을 하시면 되구요. 호스팅의 경우도 대부분 도메인 설정에 CNAME 을 추가할 수 있는 메뉴가 있습니다.


   로깅이 필요하다면 Logging : On 으로 설정하시고, 생성후 곧바로 동작하게 한다면 Distribution Status 를 Enabled 로 하시면 되겠습니다.


 4) 설정된 값을 최종적으로 보여줍니다. 확인하시고 Create Distribution 을 클릭합니다.



 5) 아래와 같이 리스트가 추가된 것을 확인할 수 있습니다. 해당 항목을 클릭하면 하단에 상세한 내역이 나옵니다. 물론, 오른쪽 버튼으로 수정이 가능합니다.



 하단에 보시면 아마존에서 제공하는 Domain Name 이 있습니다. 그 도메인 주소를 CNAMEs 에 설정한 도메인에 CNAME 등록을 해주시면 되겠습니다.

 6) CNAME 이 등록된 도메인을 확인해보겠습니다.

  > nslookup
  > Server: 164.xxx.xxx.2
  > Address: 164.xxx.xxx.xxx

  > set q=CNAME
  > cdn.jmkook77.com ( 실제 없는 주소입니다. )

  > ...
  > cdn.jmkook77.com     canonical name = dl3xxxxxx.cloudfront.net.
  > ...
 

 7) 이제 이미지를 image.jmkook77.com 에 추가하고 접속을 하면 내부적으로 다음과 같은 동작을 하겠죠.

   http://cdn.jmkook77.com/images/test.png
   -> http://dl3xxxxxxx.cloudfront.net/images/test.png
   -> http://image.jmkook77.com/images/test.png

   물론, 매번 콜될때마다 이미지서버에서 가져오는건 아닙니다. 그럼 의미가 없죠.

   traceroute 명령어를 통해 접근을 해보면 지역에 따라 어떤 서버에서 이미지를 가져오는지 확인이 가능하겠지만 서도.. 테스트가 어렵군요. ㅎㅎ

   자세한 사항은 http://docs.amazonwebservices.com/AmazonCloudFront/latest/GettingStartedGuide/Welcome.html


끝.

댓글 없음:

댓글 쓰기