PostIT

[2W1H]CDN은 무엇인가? 왜 쓰는가? 어떻게 쓰는가? 본문

카테고리 없음

[2W1H]CDN은 무엇인가? 왜 쓰는가? 어떻게 쓰는가?

shun10114 2016. 9. 9. 23:30

#  CDN(Content Delivery Network)



웹 프로그래밍에서 자주 볼 수 있는 CDN에 대해 알아보고자 한다.

웹 프로그래밍에서 결국 User가 볼 수 있는것은 프론트(Html)과 Resources(JS,CSS)에 대한 내용밖에 없다.

이런 페이지를 꾸며줄 수 있는 자원들에 대해서 우리는 CDN이 사용된다.

어떤 사람은 만들어서 사용하고, 어떤 것은 CDN을 사용하고, 어떤것은 Webjars를 통해 이용한다.

더 많은 것들이 있을 수 있겠지만, 일단 내가 알고 있는 것은 이 3가지 이다.



1. 프로그램을하면 Resources를 만들어서 폴더위치에 맞게 적용시키는 것.


<link href="/resources/css/board/boardlist.css" rel="stylesheet"></link>

<script src="/resources/js/main/contact_me.js"></script>


classpath에서부터 경로안에 있는 CSS를 적용시킨다. 혹은 JS기능을 적용시킨다.



2. CDN을 통해 기본 Resources 정보(데이터)를 인터넷으로 불러오는 것.


https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css

https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js


CDN이 무엇인가 검색하던 중 - Limeligt에서 자신의 솔루션을 설명하는 내용이다.


귀사가 필요하는바로 그 CDN

더 빠르고 더 고품격화된 콘텐츠를 필요로하는 오늘날, 콘텐츠 전송 네트워크(CDN)는 필수 입니다. CDN이 없다면 빠르고, 안정적이며, 안전한 디지털 콘텐츠 전송 환경이 보장되지 않습니다. 웹사이트에서부터 동영상 스트리밍, 소프트웨어 다운로드에 이르기까지 Limelight CDN을 이용하면 사용자가 어디에서 어떤 기기를 사용하든지 디지털 콘텐츠를 안전하게 전송할 수 있습니다.


그 외에 CDN내용으로는 


콘텐츠 전송 네트워크는 웹 애플리케이션 및 스트리밍 미디어를 비롯한 콘텐츠를 전송하도록 최적화된 전세계적으로 촘촘히 분산된 서버로 이루어진 플랫폼입니다. 이 서버 네트워크는 수많은 물리적 위치와 네트워크 위치에 분산되어 있어 웹 콘텐츠에 대한 엔드유저의 요청에 직접적으로 응답하고 빠르고 안전한 미디어 전송을 보장합니다. CDN은 오리진이라고도 불리는 콘텐츠 서버와 엔드유저(클라이언트) 사이에서 중재자 역할을 합니다.

CDN을 사용하지 않으면 콘텐츠 오리진 서버들은 모든 엔드유저의 요청에 일일이 응답해야 합니다. 이는 오리진과 오리진에 막대한 트래픽을 유발하고 이후에도 엄청난 부하를 유발하여 트래픽이 과도하게 증가하거나 부하가 끊임없이 들어오는 경우 오리진에서 장애가 발생할 확률을 높입니다.

그래서 CDN은 오리진을 대신하여 엔드유저와 가까운 물리적 위치 및 네트워크에서 엔드유저 요청에 응답함으로써 콘텐츠 서버의 트래픽 부하를 오프로드하고 웹 경험을 개선하여 콘텐츠 제공업체와 엔드유저 모두에게 막대한 이점을 제공합니다.

(참고 : https://www.akamai.com/kr/ko/cdn/what-is-a-cdn.jsp)


더 쉽게 설명하면,(참고 : http://taeheesjavadiary.blogspot.kr/2014/03/cdn.html)


결국, CDN은 콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템을 말한다. 가장 가까운 제공자를 찾아서 인터넷 서비스 제공자에 직접 연결되어 데이터를 전송하므로, 콘텐츠 병목을 피할 수 있고, 효율적으로 전송하고 받을 수 있는 장점이 있다.


3. Webjars를 통해 Resources를 Lib(Maven, Gradle 등)로 사용 - Webjar (http://www.webjars.org/)


Webjars란?,

  • JVM 기반의 웹 애플리케이션에서 클라이언트측 의존성을 손쉽게 관리할 수 있음
  • JVM 기반 빌드툴을 사용하여 클라이언트측 의존성을 다운로드
  • 사용하고 있는 클라이언트측 의존성을 파악할 수 있음
  • 수동적인 종속성을 자동으로 해결하고 선택적으로 RequireJS를 통해 적재
  • 메이븐 중앙저장소를 통해 배포된다.
  • JSDELIVR 에서 제공하는 공개 CDN 사용이 가능하다.

참고 : http://java.ihoney.pe.kr/428


Webjars에 대해 알아보고 싶은 사람은, http://millky.com/@origoni/post/1147 참고해보자.



하나에 대한 내용을 깊이 알고, 그와 관련된 것을 알아보는데도 너무나 많은 것이 필요하다.

그래도 하나씩 알아보도록 하자, 다음에는 Apache와 Tomecat 등 서버에 대해서 알아보고자 한다.

Comments