2017.02.24 21:00 Azure

CDN에 대한 이야기를 하나 더 하겠습니다.

 

이전 포스팅에서 CDN의 장점에 대해서 알아 봤는데요.

 

이리저리 따져 봐도 제일 좋은 점은 전세계에 흩어져 있는 POP에서 컨텐츠를 배포하기 때문에

클라이언트 입장에서는 가장 가까운 POP에서 컨텐츠를 받아오므로 속도도 빠르고 서버에도 부하를 적게 준다는 점입니다.

 

하지만 클라이언트 입장에서 POP에 첫 요청의 경우에는 캐시된 컨텐츠가 없기 때문에 원본이 있는 곳에서 받아와야 합니다그래서 첫 요청을 하는 클라이언트는 약간의 손해(?)를 보게 됩니다.

이를 방지 하기 위한 방법이 있는데

이것을 "CDN 끝점에 미리 로드" 정도라고 하겠습니다.

 

끝점에 컨텐츠를 미리 로드해 두면 대규모 이벤트에 무척 유용기 때문에 즐겨 사용하는 방법입니다.

 

제일 쉬운 방법은 Azure 포탈에서 적용하는 방법입니다.

 

CDN 프로필의 끝점 메뉴에 있는 "로드" 를 클릭 합니다.


 

Path 영역에 미리 로드하려는 컨텐츠의 정보를 입력 합니다.

정규식에 맞는 URL이어야 하며 와일드카드는 사용하지 못합니다.


 

"로드" 를 클릭 하고


 

요청이 완료될때까지 잠시 기다립니다.


 

1분쯤 기다리면 요청이 완료 됩니다.


 


, 제약 사항이 있는데요.

- Verizon Azure CDN 제품(표준 및 프리미엄)만 가능 하며
  아직 Akamai Azure CDN에서 지원되지 않습니다.

- 로드 요청은 CDN 프로필별로 분당 10개로 제한됩니다.


이렇게 미리 컨텐츠를 로드해 두면 무조건 클라이언트 주변의 가까운 POP에서 컨텐츠를 받아 오기 때문에 첫번째 적중 대기 시간이 발생하지 않게 됩니다.








저작자 표시 동일 조건 변경 허락
신고
Posted by 얼음무지개

댓글을 달아 주세요

  1. 2017.03.19 21:26  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

2017.02.07 23:00 Azure

이전 포스팅에서 Azure Storage를 만들어 컨테이너를 만들고 이미지 파일을 업로드하여 브라우저에서 잘 보이는지 확인하였습니다.

 

이번에는 지난번에 만든 스토리지를 CDN에 연결 시키는 작업을 하려고 합니다.

 

우선 CDN 가격 정책은 3가지로 구분되어 있습니다. (17 1월 기준)

 

표준은 Verizon Akamai를 사용할 수 있으며 1GB당 최소 104원이며

프리미엄은 Verizon만 사용 가능하며 1GB당 최소 204원 입니다.

당연히 프리미엄이 더 다양한 분석과 규칙을 적용할 수 있으며 실시간 분석이 가능하다는 장점도 있습니다1TB당 최소 10만원 차이이니 기업 사용자는 다양한 분석이 가능한 제품을 사용하는 것이 좋지 않을까 생각됩니다.

 

자 이제 CDN을 연결하러 가볼까요.

 

Azure 포탈에서 CDN 프로필로 들어가 추가를 합니다.

 


CDN
프로필 의 각 영역에 값을 채워 넣고 만들기를 클릭 합니다.


CDN
이 프로필이 만들어 졌습니다.



개요에서 끝점을 클릭하여 끝점을 추가 합니다.

여기에서 이전에 만들어 놓았던 스토리지를 연결합니다.


 

1) 이미지 파일을 하나의 폴더에서 관리한다면 "원본 경로"에 해당 이미지 폴더를 입력하여 고정 시켜 놓는 것이 편합니다.

   이경우 이미지 파일의 경로는 icerainbow.azureedge.net/이미지파일 이 됩니다.

2) 이미지를 넣어서 관리할 폴더가 여러개일 경우라면 원본 경로를 지정하지 않아야 합니다.

   (아니면 폴더마다 1)의 방법으로 폴더마다 끝점을 만들어서 운영하면 됩니다.)

   이경우 이미지 파일의 경로는 icerainbow.azureedge.net/폴더명/이미지파일 이 됩니다.

 

끝점을 만들고 있습니다. 잠시 기다리면


 

끝점이 만들어졌네요.


 

끝점이 만들어 지더라도 바로 사용할 수 없고 90분을 기다려야 합니다.

(아마도 전세계에 흩어져 있는 POP에 해당 사항을 업데이트 하는데 필요한 시간인것 같습니다.)


 

90분이 지나서 끝점에 있는 이미지 파일을 브라우저에서 열어보면 잘 열리는 것을 확인할 수 있습니다.

html 소스는 이렇게 됩니다.

<img src="https://icerainbow.azureedge.net/icerainbow1.png">


 

사용자 지정 도메인은 위의 내용과 같이 이미지 파일이 있는 도메인이 표시되는 것보다 여러가지 이유로 인하여 그 회사의 도메인 또는 서브 도메인을 사용하고 싶을때 사용 합니다

예를 들면 www.icerainbow.com 을 소유하고 있는데 cdn.icerainbow.com 과 같은 사용자 지정 도메인을 사용하려고 한다면 적용할 수 있는 방법입니다.


 

, 아직 https를 지원하지 않습니다. (17 1월 기준)


 


종합해서 이미지 기준의
html 코드로 설명 드리면 이렇습니다.

 

1) 웹서버 로컬 하드디스크에 이미지 파일이 있을 경우

   <img src="/images/icerainbow01.png">

2) Azure 스토리지에 image 폴더를 만들고 그안에 이미지 파일이 있을 경우

   <img src="https://icerainbowimage.blob.core.windows.net/image/icerainbow1.png">

3) CDN 프로필을 생성하고 끝점을 Azure 스토리지의 image 폴더를 원본 경로로 지정했을 경우

   <img src="https://icerainbow.azureedge.net/icerainbow1.png">

4) 사용자 지정 도메인을 사용할 경우.

   <img src="http://사용자지정도메인/icerainbow1.png">


 

이렇게 됩니다.

 

각각의 상황별로 장단점이 있으니 적절한 환경에 따라 선택해서 사용하면 되겠습니다.

가능하다면 CDN을 사용해보세요. (소근소근~)













 


저작자 표시 동일 조건 변경 허락
신고
Posted by 얼음무지개

댓글을 달아 주세요

2017.01.31 22:30 Azure

Azure에서 홈페이지를 운영하면서 이미지를 서비스 하는 여러 가지 방법중에 오늘은 Storage CDN, 그리고 CDN의 사용자 지정 도메인에 대한 내용을 말해볼까 합니다. 내용이 길어지면 두번 정도로 나누겠습니다.

 

홈페이지에는 거의 대부분 이미지 파일을 사용합니다. 특히 우리나라의 경우 네트워크 속도가 빠르다보니 심하다 싶을 정도로 많이 사용합니다.

 

보통의 경우

 

이미지를 홈페이지에 넣는 가장 일반적인 방법은 웹서버에 특정 폴더를 만들고 그안에 이미지 파일을 넣어서 호출 하는 방법입니다.

 

이미지 관련 html 소스는 일반적으로 이렇게 작성됩니다.
(
프로그램을 이용하면 조금 더 복잡해 지지만 여기에서는 기본적인 내용을 보여드리겠습니다.)

 

<img src="/images/icerainbow01.png">

 

웹서버의 디폴트 폴더안에 images 폴더 안에 icerainbow01.png 파일을 브라우저에 보이게 하는 소스 입니다.

 

이 경우 어떤 문제가 발생 할까요? 행복한 고민이지만 홈페이지에 접속하는 사용자 수가 많을 경우 사용중인 네트워크 대역폭 중에 이미지 파일이 상당 부분 차치하게 되고 그러면 아시는 것처럼 오류가 발생한 것과 같은 화면을 사용자에게 보여 주거나 큐에 쌓인 순서에 따라 기다려야 합니다. 그러면 사용자는 기다리지 않고 백버튼을 누를겁니다.

 

이를 해결하려면 홈페이지를 운영하는 입장에서는 비용을 추가해서 대역폭을 늘리면 됩니다.

 

대역폭을 늘려서 접속 하는 사용자 수가 증가하게 되면 Disk i/o 가 올라가거나 CPU, 메모리 사용이 늘면서 전체적인 성능이 떨어 지게 됩니다. 해결 하려면 또 다시 비용이 들어가겠지만 Disk SSD로 바꾸거나 로드 밸런싱을 하면 됩니다. 그러면 사용자가 늘고 다시 네트워크에 부하가...

 

관리자라면 이 상황일 경우 어디부터 손을댈까요?

 

저라면 우선 네트워크 대역폭을 줄이기 위한 방법을 찾을겁니다.

다른 몇가지 방법중에 소스 최적화, 어플리케이션 캐시 등등등의 방법이 있지만 그중에 이미지 파일을 다른 장소에 넣어 두는 방법을 찾아보기로 합니다.

 

이렇게하면 사용자가 홈페이지에 접속 했을때 웹서버에서는 소스만 불러오게 되고 이미지는 다른 장소에서 불러오게 되므로 결국 웹서버의 네트워크 대역폭중에 이미지가 차지하는 만큼의 여유가 생기게 됩니다.

 

그 대표적인 방법이 Azure storage를 사용하는 방법 입니다.

기본적으로 Azure에 웹서버가 있다고 가정하고 진행 하겠습니다.

 

아래 이미지와 같이 "icerainbowimage" 저장소 계정을 만들었습니다.

 



"image"
라는 컨테이너 (PC에서 말하는 폴더라고 생각하면 이해하기 쉽습니다.)를 만듭니다.



이렇게 컨테이너가 만들어졌으니


컨테이너 안에 이미지 파일을 업로드 합니다
.

 

파일을 업로드 하는 방법이 여러가지가 있는데 개인적으로 제일 쉬운 방법은 "Microsoft Azure Storage Explorer"를 사용하는 방법이라고 생각 합니다.

 

Microsoft Azure Storage Explorer 다운로드

http://storageexplorer.com/

https://azurestorageexplorer.codeplex.com/

 

Microsoft Azure Storage Explorer 사용방법

https://docs.microsoft.com/ko-kr/azure/vs-azure-tools-storage-manage-with-storage-explorer

 

업로드한 파일의 정보는 아래 이미지와 같이 나오고

 

이 파일의 URL https://icerainbowimage.blob.core.windows.net/image/icerainbow1.png 가 됩니다.

 

브라우저에서 보이게 html 소스를 수정하면

 

<img src="https://icerainbowimage.blob.core.windows.net/image/icerainbow1.png">

 

이렇게 됩니다. 

이렇게하면 웹서버의 대역폭에서 이미지가 차지하는 부분 만큼의 여유가 생기게 됩니다. 한페이지의 크기가 3MB이고 이미지가 2MB라면 숫자상으로 두배넘는 사용자가 접속해도 버틸 수 있게 됩니다. 이를 응용하여 CSS, JS, HTML 파일, 웹폰트 등도 스토리지에 넣어두면 웹서버의 네트워크 대역폭에 많은 여유가 생기게 되겠죠. (물론 이를 위해서는 약간의 기술적인 조치가 필요 합니다.)

 

그런데 이 경우에도 약간의 문제가 있습니다. 스토리지가 있는 위치(이 내용에는 일본서부) 근접 지역의 사용자는 큰 문제가 없지만 멀리 떨어진 나라에서는 여전히 이미지를 불러 오는데 시간이 걸리게 됩니다. 운영하는 홈페이지 서버가  특정 지역의 사용자 접속이 압도적으로 많고 그 부근의 Azure IDC에서 운영중이라면 문제는 없지만 그렇지 않을 경우에는 사용자가 조금 더 빨리 이미지 파일을 가져갈 수 있도록 CDN 서비스를 이용하는 것이 좋습니다.

 

위키 백과 CDN 설명

https://ko.wikipedia.org/wiki/%EC%BD%98%ED%85%90%EC%B8%A0_%EC%A0%84%EC%86%A1_%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

Azure CDN 개요

https://docs.microsoft.com/ko-kr/azure/cdn/cdn-overview

 

쓰다 보니 글이 조금 길어졌네요.

Azure에서 CDN을 사용에 대한 글은 다음 포스팅에.









저작자 표시 동일 조건 변경 허락
신고
Posted by 얼음무지개

댓글을 달아 주세요

이전버튼 1 이전버튼

블로그 이미지
얼음무지개
free counters

글 보관함


티스토리 툴바