SlideShare a Scribd company logo
1 of 13
불타는 Study
By - phpbae
CDN
CDN을 알아보자!
CDN = Content Delivery Network
Content Distribution Network
Node ? 노드는 네트워크 내의 교차점 / 연결지점을 의미. 모든 장치가 네트워크를 통해 액세
스 할 수 있는 환경의 장치는 모두 노드로 간주.(서버, 클라이언트 -> 컴퓨터 / 라우터. CDN에
서는 컨텐츠를 가진 서버라고 생각하자)
Content ? 텍스트, 응용 플로그램, 이미지, 전자메일, 데이터, 서비스, 오디오 및 비디오 등과
같은 모든 창의적인 요소를 의미.
What is a CDN ?
CDN = Content Delivery Network
Content Distribution Network
- CDN은 원본 서버에서 가져온 데이터(Resource)복사본이 있는 대규모 서버
네트워크를 의미.
- CDN은 contents를 효율적으로 전달하기 위해, Node를 가진 네트워크에 데
이터를 저장하여 제공하는 시스템을 의미.
대기시간(Network 지연시간, Latency)을 줄이기 위해서, CDN
이 만들어 졌습니다.
CDN은 contents를 수신하려는 사용자(client)와 패킷 또는 청
크를 보내는 서버간의 물리적 거리를 줄이기 위해 사용 합니
다.
패킷(packet)? 패킷은 주어진 네트워크 경로를 따라 이동하는 단일 패키지로 만들어진 데이터 단위.
청크(chunk)? SCTP(Stream Control Transmission Protocol)에서 사용되는 제어 데이터 및 패킷 세트.
홉(hop)? 각 패킷이 매 노드를 건너가는 양상을 비유적으로 표현 -> 이러한 체계를 hop-by-hop 체제라고
말함. 홉은 라우팅에서 사용되는 용어로서 하나의 데이터 링크를 가르킨다. 네트워크 내에서 출발지부
터 목적지에 이르는 경로는 일련의 홉들로 연결된다. 홉은 패킷이 통과해야만 하는 라우터의 숫자를 측
정하는데 자주 사용.(실제로 거리보다는, 라우터가 개입될때마다 느려짐. 이유는? Store and Forward이
기 때문이다. -> 패킷을 버퍼에 저장 후, 헤더를 보고 갈 길을 찾은 뒤 보내는거라, 빛의 속도로 전송되는
케이블과는 비교할 수 없을 정도로 느림.
Why use CDN ?
클라이언트와 웹 서버 사이의 거리를 최소화 하기
위해 CDN은 캐시된 버전의 contents를 여러 지
리적 위치에 저장.(points of presence, or PoP)
본질적으로, CDN은 한번에 여러 위치에 contents
를 배치하여, 클라이언트에게 더 나은 적용 범위
를 제공.
CDN’s Process ?
CDN PoP(Points of Presence) ?
지리적으로 가까운 지역의 클라이언트와 의사소
통을 담당하는 전략적으로 위치한 데이터 센터.
주요 기능은, contents를 웹 사이트 방문자에게
더 가까이 가져와서 왕복시간(Round-trip
latency)를 줄이는 것 입니다. 각, CDN PoP에는
일반적으로 수많은 캐싱 서버가 포함되어있다.
각, PoP에 위치한 서버를 ‘edge server’라고 한다.
Edge server = proxy cache server이며, 웹 사이트
의 contents를 생성하지 않으며, 대신 contents
사본을 보관.
CDN’s Process ?
- CDN은 서버의 대역폭을 절약하고, 과도한 사용자 트래픽,
서버 중단 또는 기타 유사한 이벤트가 발생하더라도 최종 사
용자가 contents에 access 할 수 있도록 함으로써 웹 사이트의
가용성을 향상.
What are the benefits
of using a CDN ?
Here is an example of just some of the file types that can be hosted on a CDN:
- Images: PNG, JPG, SVG, GIF, TIF
- Stylesheets: CSS
- JavaScript: JS
- Video and Audio: FLV (Flash), HLS, MP4 (HTML5 videos), MOV (QuickTime), WMV
(Windows Media), MP3 and WAV
- Web Fonts: EOT, TTF, OTF, CFF, AFM, LWFN, FFIL, FON, PFM, PFB, WOFF, SVG, STD, PRO,
XSF, and more…
- Other File Formats: HTML, JSON, PDF, DOC, PPT, XLS, EPUB, ODT, ODP, ODS, TXT, RTF,
ZIP
What type of content Is
Stored on a CDN ?
How to refresh cache
server on a CDN
- 캐시 서버가 오리진 서버의 콘텐츠를 캐싱하고 이용자들에게 캐싱된 콘텐
츠를 전달하는 과정에서 만약 오리진 서버에 저장되어 있는 콘텐츠가 업데
이트되면 이용자들이 캐시 서버로 부터 다운로드 받는 콘텐츠는 더 이상 유
효한 콘텐츠가 아니게 됩니다. 이러면 어떤 문제가 발생을 하느냐? 만약 해
당 콘텐츠가 CSS나 이미지 파일이라면 웹 페이지 화면이 깨져 보이게 되겠
죠. 따라서 캐시 서버는 오리진 서버를 통해 캐싱된 콘텐츠에 대한 유효성
(freshness)를 주기적으로 확인(validation)하고, 만약 콘텐츠가 업데이트되
었으면 다시 다운로드 받아 캐싱을 해야 합니다.
How to refresh cache
server on a CDN
1. 이용자 웹 브라우저가 HTTP GET 메시지를 통해 캐시 서버로 다음과 같이 image.jpg 파일 요청을 합니다. (이용자의 요청이 오리진 서버가 아닌 캐시 서버로 가는 절차는 Request Routing 글을
참조)
Host: www.example.com
Request URI: /image.jpg
2. 웹 브라우저가 최초로 콘텐츠를 요청했으므로 캐시 서버에 해당 파일이 없습니다(Cache Miss).
3. 따라서 캐시 서버는 오리진 서버에게 HTTP GET 메시지를 통해 image.jpg 파일을 요청합니다.
4.오리진 서버는 HTTP 200 OK 메시지를 통해 image.jpg 파일과 해당 콘텐츠의 메타 태그 정보를 캐싱 서버로 전달합니다. 메타 태그에는 아래와 같이 캐싱과 관련된 정보가 포함되어 있습니다.
Last-Modified: Mon, 1 Oct 2012 09:00:00 - 오리진 서버에 저장되어 있는 image.jpg 파일은 2012년 10월 1일 오전 9시 정각에 업데이트 되었음 (이 정보는 뒤에 14번 cache validation에서 사용
됨)
Cache-Control: max-age=100 - image.jpg 파일의 캐싱 유효시간은 100초임. "100초 동안만 캐싱하고, 그 이후에는 다시 오리진 서버로 콘텐츠 요청 혹은 freshness 확인을 해라"라는 의미
5.캐시 서버는 t = 0 시각에 HTTP 200 OK 메시지를 통해 image.jpg 파일을 수신합니다. 그리고 수신한 image.jpg 파일을 캐싱(저장)하고(Cache Fill), 이 콘텐츠의 캐싱 유효시간 100초를 Cache
Control Table에 기록합니다. 이제 캐시 서버는 앞으로 100초 동안은 이용자들의 image.jpg 파일 요청에 대해서 자신이 캐싱한 파일을 전달해 줄 수 있습니다. 그리고 그림에는 표시되지 않았으
나 Last-Modified 필드에 명시된 콘텐츠 업데이트 시각(Mon, 1 Oct 2012 09:00:00)도 함께 저장합니다.
6.캐시 서버는 오리진 서버로 부터 수신한 컨텐츠를 웹 브라우저에게 전달합니다. 이 때 max-age는 오리진 서버가 명시한 값 100초를 그대로 전달합니다. 웹 브라우저는 image.jpg 파일을 100
초 동안 캐싱하며, 따라서 이 시간 동안은 캐싱된 콘텐츠에 대한 재요청을 하지 않습니다.
How to refresh cache
server on a CDN
7.이제 다른 이용자 James(웹 브라우저)가 40초 후(t = 40 시각)에 동일 콘텐츠 image.jpg를 동일 캐시 서버로 요청합니다.
8.캐시 서버에는 image.jpg 파일이 캐싱되어 있으며 아직 캐싱 만료 시간까지는 60초(100초 - 40초)가 남아 있습니다.
9.따라서 캐시 서버는 오리진 서버를 대신하여 James(웹 브라우저)에게 image.jpg 파일을 전달합니다. 이 때의 max-age는 캐시 서버에서 관리하는 캐싱 만료 시간 60초가 됩니다. 따라서
James(웹 브라우저)는 image.jpg 파일을 60초 동안 캐싱합니다.
How to refresh cache
server on a CDN
10.이용자 Alice(웹 브라우저)가 90초 후(t = 90 시각)에 동일 콘텐츠 image.jpg를 동일 캐시 서버로 요청합니다.
11.여전히 캐시 서버는 캐싱 만료 시간이 되지 않았으므로(10초 남음)
12.Alice(웹 브라우저)에게 max-age를 10초로 하여 image.jpg 파일을 전달합니다.
13.캐시 서버는 (구현에 따라 다르지만) 콘텐츠 캐싱 유효시간의 80%가 지난 후(100초의 80%인 80초가 지난 후) 이용자로 부터 해당 콘텐츠 요청이 오면 일단 이용자에게 캐싱된 콘텐츠
전달 후, 캐싱된 콘텐츠의 변경 여부(freshness)를 확인하기 위해 validation 작업을 수행합니다.
14.이를 위해 캐시 서버는 HTTP GET 메시지에 If-Modified-Since 필드를 삽입하여 오리진 서버로 전달합니다. 이 필드에 들어가는 시각은 앞서 4번에서 받은 image.jpg 파일의 업데이트 시
각입니다. 오리진 서버는 이 시각과 자신이 저장하고 있는 image.jpg 파일의 시각을 비교하여,
만약 시각이 다르면(오리진 서버에 image.jpg 파일이 업데이트 된 경우) HTTP 200 OK 메시지를 통해 업데이트된 image.jpg를 캐시 서버로 전달해 주고,
시각이 같다면(업테이트 되지 않았다면) HTTP 304 Not Modified 메시지로 응답을 합니다. 이 메시지에는 image.jpg 콘텐츠가 포함되어 있지 않습니다. 즉, "콘텐츠가 업데이트 되지
않았으니 네(캐시 서버)가 가지고 있는거 써라"는 의미입니다.
15.오리진 서버로부터 HTTP 304 Not Modified 메시지를 수신한 캐시 서버는 해당 메시지에 명시된 max-age=100으로 image.jpg의 캐싱 유효시간을 리셋합니다. 즉, 다시 Cache Control
Table의 값을 100초로 설정합니다.
How to refresh cache
server on a CDN
정리
- 캐시 서버는 오리진 서버에서 다운로드 받아 캐싱하는 각 콘텐츠에 대해 캐싱 유효시간(max-age)을 관
리.
- 이용자에게는 캐시 서버에서 관리하는 캐싱 유효시간(max-age)을 전달.
- 캐시 서버는 캐싱 유효시간(max-age)이 만료되기 전에 미리 오리진 서버를 통해 validation을 수행.
-Validation은 HTTP GET 메시지 헤더에 If-Modified-Since 필드를 이용하여 수행하며, 오리진 서버는 해당
콘테츠가 업데이트되었으면 HTTP 200 OK 메시지를 통해 업데이트된 콘텐츠를 전달하고 그렇지 않은 경
우 HTTP 304 Not Modified 메시지로 응답.
참고 링크 : http://www.netmanias.com/ko/post/blog/5654/cdn-http/http-cache-control-expiration-and-
validation

More Related Content

What's hot

서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림우림 류
 
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...OpenStack Korea Community
 
서버 인프라를지탱하는기술(1.3,1.4)
서버 인프라를지탱하는기술(1.3,1.4)서버 인프라를지탱하는기술(1.3,1.4)
서버 인프라를지탱하는기술(1.3,1.4)Choonghyun Yang
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
 
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형Minchul Jung
 
Optane DC Persistent Memory(DCPMM) 성능 테스트
Optane DC Persistent Memory(DCPMM) 성능 테스트Optane DC Persistent Memory(DCPMM) 성능 테스트
Optane DC Persistent Memory(DCPMM) 성능 테스트SANG WON PARK
 
Amazon cf day sesseion2
Amazon cf day sesseion2Amazon cf day sesseion2
Amazon cf day sesseion2GS Neotek
 
Hadoop Overview 1
Hadoop Overview 1Hadoop Overview 1
Hadoop Overview 1Kay Kim
 
메모리 할당에 관한 기초
메모리 할당에 관한 기초메모리 할당에 관한 기초
메모리 할당에 관한 기초Changyol BAEK
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
 
Express framework tutorial
Express framework tutorialExpress framework tutorial
Express framework tutorial우림 류
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)NAVER D2
 
Kubernetes에서 Windows Application 호스팅하기
Kubernetes에서 Windows Application 호스팅하기Kubernetes에서 Windows Application 호스팅하기
Kubernetes에서 Windows Application 호스팅하기정현 남
 
Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나sprdd
 
Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring SANG WON PARK
 
[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기NAVER D2
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)Hyunmin Lee
 
20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈ymtech
 

What's hot (20)

서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림
 
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
 
서버 인프라를지탱하는기술(1.3,1.4)
서버 인프라를지탱하는기술(1.3,1.4)서버 인프라를지탱하는기술(1.3,1.4)
서버 인프라를지탱하는기술(1.3,1.4)
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
 
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
 
Optane DC Persistent Memory(DCPMM) 성능 테스트
Optane DC Persistent Memory(DCPMM) 성능 테스트Optane DC Persistent Memory(DCPMM) 성능 테스트
Optane DC Persistent Memory(DCPMM) 성능 테스트
 
Amazon cf day sesseion2
Amazon cf day sesseion2Amazon cf day sesseion2
Amazon cf day sesseion2
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
Hadoop Overview 1
Hadoop Overview 1Hadoop Overview 1
Hadoop Overview 1
 
메모리 할당에 관한 기초
메모리 할당에 관한 기초메모리 할당에 관한 기초
메모리 할당에 관한 기초
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 
Express framework tutorial
Express framework tutorialExpress framework tutorial
Express framework tutorial
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
Kubernetes에서 Windows Application 호스팅하기
Kubernetes에서 Windows Application 호스팅하기Kubernetes에서 Windows Application 호스팅하기
Kubernetes에서 Windows Application 호스팅하기
 
네트워크 기본
네트워크 기본네트워크 기본
네트워크 기본
 
Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나
 
Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring
 
[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
 
20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈
 

Similar to CDN - Content Delivery Network

AWS CloudFront 가속 및 DDoS 방어
AWS CloudFront 가속 및 DDoS 방어AWS CloudFront 가속 및 DDoS 방어
AWS CloudFront 가속 및 DDoS 방어Kyle(KY) Yang
 
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?nexusz99
 
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요dgmit2009
 
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기SangJin Kang
 
클라우드 플레어 101
클라우드 플레어 101클라우드 플레어 101
클라우드 플레어 101Jinseok Oh
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWSJi-Woong Choi
 
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 AdvancedAWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 AdvancedAmazon Web Services Korea
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석Jennifer Noh
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea Strike
 
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017Amazon Web Services Korea
 
강서구 자바 스터디 - Cache
강서구 자바 스터디 - Cache강서구 자바 스터디 - Cache
강서구 자바 스터디 - Cacheyong geun Kwon
 
강서구 자바 스터디
강서구 자바 스터디강서구 자바 스터디
강서구 자바 스터디용근 권
 
GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4GS Neotek
 
HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1J B
 
Servlet&jsp 1장
Servlet&jsp 1장Servlet&jsp 1장
Servlet&jsp 1장JeongBong Kim
 
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...OpenStack Korea Community
 

Similar to CDN - Content Delivery Network (20)

CDN overview
CDN overviewCDN overview
CDN overview
 
CDN
CDNCDN
CDN
 
AWS CloudFront 가속 및 DDoS 방어
AWS CloudFront 가속 및 DDoS 방어AWS CloudFront 가속 및 DDoS 방어
AWS CloudFront 가속 및 DDoS 방어
 
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
 
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
 
클라우드 플레어 101
클라우드 플레어 101클라우드 플레어 101
클라우드 플레어 101
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS
 
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 AdvancedAWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_Architecture
 
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
 
3장
3장3장
3장
 
강서구 자바 스터디 - Cache
강서구 자바 스터디 - Cache강서구 자바 스터디 - Cache
강서구 자바 스터디 - Cache
 
강서구 자바 스터디
강서구 자바 스터디강서구 자바 스터디
강서구 자바 스터디
 
GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4
 
HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1
 
Servlet&jsp 1장
Servlet&jsp 1장Servlet&jsp 1장
Servlet&jsp 1장
 
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...
 

More from ChangHyeon Bae

More from ChangHyeon Bae (16)

호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE
 
Webpack&babel
Webpack&babelWebpack&babel
Webpack&babel
 
ES6-02
ES6-02ES6-02
ES6-02
 
ES6-01
ES6-01ES6-01
ES6-01
 
javascript03
javascript03javascript03
javascript03
 
javascript02
javascript02javascript02
javascript02
 
javascript01
javascript01javascript01
javascript01
 
Java memory
Java memoryJava memory
Java memory
 
JavaScript 실행컨텍스트와 클로저
JavaScript 실행컨텍스트와 클로저JavaScript 실행컨텍스트와 클로저
JavaScript 실행컨텍스트와 클로저
 
WAS와 웹서버 간단 정리
WAS와 웹서버 간단 정리WAS와 웹서버 간단 정리
WAS와 웹서버 간단 정리
 
REST Concept
REST ConceptREST Concept
REST Concept
 
Srping data rest
Srping data restSrping data rest
Srping data rest
 
Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.
 
OOP - Object Oriendted Programing
OOP - Object Oriendted ProgramingOOP - Object Oriendted Programing
OOP - Object Oriendted Programing
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
DI - Dependency Injection
DI - Dependency InjectionDI - Dependency Injection
DI - Dependency Injection
 

CDN - Content Delivery Network

  • 1. 불타는 Study By - phpbae CDN
  • 2. CDN을 알아보자! CDN = Content Delivery Network Content Distribution Network
  • 3. Node ? 노드는 네트워크 내의 교차점 / 연결지점을 의미. 모든 장치가 네트워크를 통해 액세 스 할 수 있는 환경의 장치는 모두 노드로 간주.(서버, 클라이언트 -> 컴퓨터 / 라우터. CDN에 서는 컨텐츠를 가진 서버라고 생각하자) Content ? 텍스트, 응용 플로그램, 이미지, 전자메일, 데이터, 서비스, 오디오 및 비디오 등과 같은 모든 창의적인 요소를 의미. What is a CDN ? CDN = Content Delivery Network Content Distribution Network - CDN은 원본 서버에서 가져온 데이터(Resource)복사본이 있는 대규모 서버 네트워크를 의미. - CDN은 contents를 효율적으로 전달하기 위해, Node를 가진 네트워크에 데 이터를 저장하여 제공하는 시스템을 의미.
  • 4. 대기시간(Network 지연시간, Latency)을 줄이기 위해서, CDN 이 만들어 졌습니다. CDN은 contents를 수신하려는 사용자(client)와 패킷 또는 청 크를 보내는 서버간의 물리적 거리를 줄이기 위해 사용 합니 다. 패킷(packet)? 패킷은 주어진 네트워크 경로를 따라 이동하는 단일 패키지로 만들어진 데이터 단위. 청크(chunk)? SCTP(Stream Control Transmission Protocol)에서 사용되는 제어 데이터 및 패킷 세트. 홉(hop)? 각 패킷이 매 노드를 건너가는 양상을 비유적으로 표현 -> 이러한 체계를 hop-by-hop 체제라고 말함. 홉은 라우팅에서 사용되는 용어로서 하나의 데이터 링크를 가르킨다. 네트워크 내에서 출발지부 터 목적지에 이르는 경로는 일련의 홉들로 연결된다. 홉은 패킷이 통과해야만 하는 라우터의 숫자를 측 정하는데 자주 사용.(실제로 거리보다는, 라우터가 개입될때마다 느려짐. 이유는? Store and Forward이 기 때문이다. -> 패킷을 버퍼에 저장 후, 헤더를 보고 갈 길을 찾은 뒤 보내는거라, 빛의 속도로 전송되는 케이블과는 비교할 수 없을 정도로 느림. Why use CDN ?
  • 5. 클라이언트와 웹 서버 사이의 거리를 최소화 하기 위해 CDN은 캐시된 버전의 contents를 여러 지 리적 위치에 저장.(points of presence, or PoP) 본질적으로, CDN은 한번에 여러 위치에 contents 를 배치하여, 클라이언트에게 더 나은 적용 범위 를 제공. CDN’s Process ?
  • 6. CDN PoP(Points of Presence) ? 지리적으로 가까운 지역의 클라이언트와 의사소 통을 담당하는 전략적으로 위치한 데이터 센터. 주요 기능은, contents를 웹 사이트 방문자에게 더 가까이 가져와서 왕복시간(Round-trip latency)를 줄이는 것 입니다. 각, CDN PoP에는 일반적으로 수많은 캐싱 서버가 포함되어있다. 각, PoP에 위치한 서버를 ‘edge server’라고 한다. Edge server = proxy cache server이며, 웹 사이트 의 contents를 생성하지 않으며, 대신 contents 사본을 보관. CDN’s Process ?
  • 7. - CDN은 서버의 대역폭을 절약하고, 과도한 사용자 트래픽, 서버 중단 또는 기타 유사한 이벤트가 발생하더라도 최종 사 용자가 contents에 access 할 수 있도록 함으로써 웹 사이트의 가용성을 향상. What are the benefits of using a CDN ?
  • 8. Here is an example of just some of the file types that can be hosted on a CDN: - Images: PNG, JPG, SVG, GIF, TIF - Stylesheets: CSS - JavaScript: JS - Video and Audio: FLV (Flash), HLS, MP4 (HTML5 videos), MOV (QuickTime), WMV (Windows Media), MP3 and WAV - Web Fonts: EOT, TTF, OTF, CFF, AFM, LWFN, FFIL, FON, PFM, PFB, WOFF, SVG, STD, PRO, XSF, and more… - Other File Formats: HTML, JSON, PDF, DOC, PPT, XLS, EPUB, ODT, ODP, ODS, TXT, RTF, ZIP What type of content Is Stored on a CDN ?
  • 9. How to refresh cache server on a CDN - 캐시 서버가 오리진 서버의 콘텐츠를 캐싱하고 이용자들에게 캐싱된 콘텐 츠를 전달하는 과정에서 만약 오리진 서버에 저장되어 있는 콘텐츠가 업데 이트되면 이용자들이 캐시 서버로 부터 다운로드 받는 콘텐츠는 더 이상 유 효한 콘텐츠가 아니게 됩니다. 이러면 어떤 문제가 발생을 하느냐? 만약 해 당 콘텐츠가 CSS나 이미지 파일이라면 웹 페이지 화면이 깨져 보이게 되겠 죠. 따라서 캐시 서버는 오리진 서버를 통해 캐싱된 콘텐츠에 대한 유효성 (freshness)를 주기적으로 확인(validation)하고, 만약 콘텐츠가 업데이트되 었으면 다시 다운로드 받아 캐싱을 해야 합니다.
  • 10. How to refresh cache server on a CDN 1. 이용자 웹 브라우저가 HTTP GET 메시지를 통해 캐시 서버로 다음과 같이 image.jpg 파일 요청을 합니다. (이용자의 요청이 오리진 서버가 아닌 캐시 서버로 가는 절차는 Request Routing 글을 참조) Host: www.example.com Request URI: /image.jpg 2. 웹 브라우저가 최초로 콘텐츠를 요청했으므로 캐시 서버에 해당 파일이 없습니다(Cache Miss). 3. 따라서 캐시 서버는 오리진 서버에게 HTTP GET 메시지를 통해 image.jpg 파일을 요청합니다. 4.오리진 서버는 HTTP 200 OK 메시지를 통해 image.jpg 파일과 해당 콘텐츠의 메타 태그 정보를 캐싱 서버로 전달합니다. 메타 태그에는 아래와 같이 캐싱과 관련된 정보가 포함되어 있습니다. Last-Modified: Mon, 1 Oct 2012 09:00:00 - 오리진 서버에 저장되어 있는 image.jpg 파일은 2012년 10월 1일 오전 9시 정각에 업데이트 되었음 (이 정보는 뒤에 14번 cache validation에서 사용 됨) Cache-Control: max-age=100 - image.jpg 파일의 캐싱 유효시간은 100초임. "100초 동안만 캐싱하고, 그 이후에는 다시 오리진 서버로 콘텐츠 요청 혹은 freshness 확인을 해라"라는 의미 5.캐시 서버는 t = 0 시각에 HTTP 200 OK 메시지를 통해 image.jpg 파일을 수신합니다. 그리고 수신한 image.jpg 파일을 캐싱(저장)하고(Cache Fill), 이 콘텐츠의 캐싱 유효시간 100초를 Cache Control Table에 기록합니다. 이제 캐시 서버는 앞으로 100초 동안은 이용자들의 image.jpg 파일 요청에 대해서 자신이 캐싱한 파일을 전달해 줄 수 있습니다. 그리고 그림에는 표시되지 않았으 나 Last-Modified 필드에 명시된 콘텐츠 업데이트 시각(Mon, 1 Oct 2012 09:00:00)도 함께 저장합니다. 6.캐시 서버는 오리진 서버로 부터 수신한 컨텐츠를 웹 브라우저에게 전달합니다. 이 때 max-age는 오리진 서버가 명시한 값 100초를 그대로 전달합니다. 웹 브라우저는 image.jpg 파일을 100 초 동안 캐싱하며, 따라서 이 시간 동안은 캐싱된 콘텐츠에 대한 재요청을 하지 않습니다.
  • 11. How to refresh cache server on a CDN 7.이제 다른 이용자 James(웹 브라우저)가 40초 후(t = 40 시각)에 동일 콘텐츠 image.jpg를 동일 캐시 서버로 요청합니다. 8.캐시 서버에는 image.jpg 파일이 캐싱되어 있으며 아직 캐싱 만료 시간까지는 60초(100초 - 40초)가 남아 있습니다. 9.따라서 캐시 서버는 오리진 서버를 대신하여 James(웹 브라우저)에게 image.jpg 파일을 전달합니다. 이 때의 max-age는 캐시 서버에서 관리하는 캐싱 만료 시간 60초가 됩니다. 따라서 James(웹 브라우저)는 image.jpg 파일을 60초 동안 캐싱합니다.
  • 12. How to refresh cache server on a CDN 10.이용자 Alice(웹 브라우저)가 90초 후(t = 90 시각)에 동일 콘텐츠 image.jpg를 동일 캐시 서버로 요청합니다. 11.여전히 캐시 서버는 캐싱 만료 시간이 되지 않았으므로(10초 남음) 12.Alice(웹 브라우저)에게 max-age를 10초로 하여 image.jpg 파일을 전달합니다. 13.캐시 서버는 (구현에 따라 다르지만) 콘텐츠 캐싱 유효시간의 80%가 지난 후(100초의 80%인 80초가 지난 후) 이용자로 부터 해당 콘텐츠 요청이 오면 일단 이용자에게 캐싱된 콘텐츠 전달 후, 캐싱된 콘텐츠의 변경 여부(freshness)를 확인하기 위해 validation 작업을 수행합니다. 14.이를 위해 캐시 서버는 HTTP GET 메시지에 If-Modified-Since 필드를 삽입하여 오리진 서버로 전달합니다. 이 필드에 들어가는 시각은 앞서 4번에서 받은 image.jpg 파일의 업데이트 시 각입니다. 오리진 서버는 이 시각과 자신이 저장하고 있는 image.jpg 파일의 시각을 비교하여, 만약 시각이 다르면(오리진 서버에 image.jpg 파일이 업데이트 된 경우) HTTP 200 OK 메시지를 통해 업데이트된 image.jpg를 캐시 서버로 전달해 주고, 시각이 같다면(업테이트 되지 않았다면) HTTP 304 Not Modified 메시지로 응답을 합니다. 이 메시지에는 image.jpg 콘텐츠가 포함되어 있지 않습니다. 즉, "콘텐츠가 업데이트 되지 않았으니 네(캐시 서버)가 가지고 있는거 써라"는 의미입니다. 15.오리진 서버로부터 HTTP 304 Not Modified 메시지를 수신한 캐시 서버는 해당 메시지에 명시된 max-age=100으로 image.jpg의 캐싱 유효시간을 리셋합니다. 즉, 다시 Cache Control Table의 값을 100초로 설정합니다.
  • 13. How to refresh cache server on a CDN 정리 - 캐시 서버는 오리진 서버에서 다운로드 받아 캐싱하는 각 콘텐츠에 대해 캐싱 유효시간(max-age)을 관 리. - 이용자에게는 캐시 서버에서 관리하는 캐싱 유효시간(max-age)을 전달. - 캐시 서버는 캐싱 유효시간(max-age)이 만료되기 전에 미리 오리진 서버를 통해 validation을 수행. -Validation은 HTTP GET 메시지 헤더에 If-Modified-Since 필드를 이용하여 수행하며, 오리진 서버는 해당 콘테츠가 업데이트되었으면 HTTP 200 OK 메시지를 통해 업데이트된 콘텐츠를 전달하고 그렇지 않은 경 우 HTTP 304 Not Modified 메시지로 응답. 참고 링크 : http://www.netmanias.com/ko/post/blog/5654/cdn-http/http-cache-control-expiration-and- validation