CDN 이해하기
JAM Stack에 대해 알아보기 전에 CDN에 대한 이해가 선행되어야 했다.
이후 포스팅에서 JAM Stack에 대해 정리하기 위해 CDN을 따로 포스팅한다.
해당 포스팅과 이후 업로드할 JAM Stack을 함께 본다면 JAM Stack에 대해 조금은 더 잘 이해하게 되지 않을까 생각된다.
틀린 부분이 있다면 마구마구 지적해주신다면 감사할 것 같다.
CDN ( Content Delivery Network )
CDN은 Content Delivery Network의 약자로서
지리적인 제약 없이 전 세계 사용자에게 빠르고 안전하게 콘텐츠 전송을 할 수 있고, 콘텐츠 전송에 특화된 기술을 말한다.
CDN은 요청을 분산시킨다에 초점이 맞추면 이해하기 어렵지 않다.
예를 들어 유투브, 페이스북과 같은 서비스들에 서버가 단 1개라면??
물리적인 거리에 있어서도 영향을 받을 것이고, 수많은 요청을 서버가 감당하게 되면서 말 그래도 서버에 부하가 걸리게 된다. 즉 네트워크의 트래픽이 증가한다는 것인데, 이때 이러한 수많은 요청을 분산시키는 기술이 CDN이다.
Origin 서버로부터 여러 개의 Edge 서버를 두는데
Edge 서버는 Origin 서버로부터의 콘텐츠를 캐싱을 통해 동기화를 해 Cache 서버라고 부르기도 한다.
결국 이러한 여러개의 서버들이 기존 Origin 서버의 트래픽을 분산해서 처리하게 된다.
이후 사용자는 자신에게 가장 빠르게 응답을 전달해줄 수 있는 Edge 서버로 요청을 보내게 되고
그 Edge 서버는 Origin 서버의 콘텐츠를 캐싱하고 있다고 했다.
캐싱에도 2가지 방식이 있다.
1. 정적 캐싱
- 어떠한 콘텐츠를 사용자가 요청을 보내기 전에 미리 Edge 서버에서 컨텐츠를 캐싱하는 방법
- 주로 용량이 큰 콘텐츠들은 정적 캐싱을 통해 이미 콘텐츠를 가지고 있는 경우가 많다.
2. 동적 캐싱
- 사용자가 요청을 보내면 해당 콘텐츠가 Edge 서버에 있는지 확인하고 없으면 그때 해당 콘텐츠를 받아오는 캐싱 방법
- Edge 서버에 콘텐츠가 있으면 Cache Hit , 없으면 Cache Miss 라고 부르며, 결국 Cache Miss의 경우 해당 콘텐츠를 받아온다.
위에 정적 캐싱과 동적 캐싱은 정적 콘텐츠와 동적 컨텐츠와는 완전히 다른 의미이다.
정적 컨텐츠
- HTML, CSS, JS, Image 파일과 같이 내용이 고정되어 있는 것들을 정적 콘텐츠라고 부르며
동적 컨텐츠
- 어떠한 최신 정보를 불러오는 API 요청의 결과와 같이 어떠한 요청으로 결과 값이 달라질 수 있는 변할 수 있는 데이터, 값 등을 동적 콘텐츠라 부른다.
CDN 업체에 따라 정적 콘텐츠만 캐싱하거나, 동적 컨텐츠를 바이트 단위로 분석해서 바뀐 부분만 다시 캐싱하는 등 서비스를 제공하는 업체별로 동적 컨텐츠 전달 속도를 높이며 제공하는 업체들도 있다고 한다.
추가로 TTL을 상황과 용도에 맞게 설정하여 관리한다.
TTL (Time To Live) : 데이터가 캐시에 얼마만큼 남아 있을지 지정하는 값을 말함.
사용자가 콘텐츠를 받아오는 방법
Cache Hit
- 사용자와 가장 가깝고 빠른 요청과 응답이 가능한 Edge 서버로 요청을 보내고 Cache Hit일 경우 컨텐츠를 사용자에게 전송한다.
Cache Miss
- 사용자가 원하는 콘텐츠가 없는 경우, Edge 서버는 Origin 서버로 요청을 보내 콘텐츠를 받아오고 해당 컨텐츠를 캐싱하고 사용자에게 전송한다.
CDN은 웹페이지, 이미지, 동영상 등 서버에서 사용자에게로 전송하는 역할을 한다.
이러한 전송에 대한 개념은 클라이언트와 서버 간 데이터 통신과 같은 말이다.
즉 CDN이라는 개념이 없어도 서버에서 사용자로 콘텐츠를 전송할 수 있다. 당연한 얘기다.
하지만 CDN을 사용함으로써 챙길 수 있는 강력한 이점들이 많기 때문에 CDN을 사용한다.
CDN을 사용하는 이유 (장점)
1. 서버 호스팅 비용 감소
- Origin 서버로 많은 요청이 들어오지 않기 때문에 대역폭 비용을 크게 아낄 수 있다.
- 즉 서버를 운용하는 비용보다 CDN을 사용하고 운영하는 비용이 훨씬 저렴하다고 한다.
- 여기서 대역폭이란? : 주어진 시간 안에 데이터를 얼마나 많이 실어서 보낼 수 있는가를 나타내는 지표이다.
(보통 고속도로 2차선, 4차선 8차선 개념으로 이해한다)
2. 웹 사이트 로딩 속도 개선
- 요청과 응답은 실제로 서버와 사용자의 물리적인 주소, 거리 와도 연관이 있다.
- 사용자에게 가장 빠르고, 물리적으로 가까운 주소의 CDN 서버로 요청을 보낼 수 있게 되기 때문에 로딩 속도 개선에 이점이 있다.
- 이 장점은 SEO에서도 강점이 있을 수 있는데, 구글은 2010년에 웹 사이트 속도가 검색 엔진 순위에 영향을 줄 것이라고 발표했다고 한다. 참고 주소를 방문하면 굉장히 디테일한 장단점을 확인할 수 있다. (참고)
3. 서버의 안정성 향상
- Origin 서버의 부하가 줄어들음으로 인해 과부하로 인한 예기치 못한 에러의 위험성이 줄어들고
- CDN Edga 서버 중 하나에 문제가 생기면 다른 Edge 서버로 연결되기 때문에 안정적인 서비스를 제공할 수 있다.
4. 보안성 향상
- 대표적으로, 한 번에 많은 요청으로 서버의 과부하를 일으키는 DDos 공격에 대한 보안성 향상에 이점이 있다.
- CDN 서비스를 제공하는 업체들은 이러한 공격에 대해 정상 요청과 비정상 요청을 구분하거나, 집중된 요청을 수많은 Edge 서버로 분산시키는 등의 방법으로 보안성을 높인다고 한다.
그렇다면 CDN의 단점은?
- 특정 국가나 지역만을 타깃으로 하는 웹 서비스를 운영한다면 CDN 서비스를 활용할 필요가 없다. 이 경우 CDN을 이용하면 오히려 불필요한 연결 지점이 늘어나 웹 사이트의 성능 저하를 불러올 수 있기 때문이다.
- CDN을 위한 Cache Server들이 많이 보유되지 않거나 성능이 안정적이지 않다면 최악의 경우 SPOF(단일 장애점) 문제(즉 한 군데가 중단되면 전체 시스템이 중단되어버리는 현상)가 발생할 수 있다.
- 단점 또한 구체적으로 확인할 수 있는 블로그를 참고하면 좋을 것 같다. (참고)
출처 및 참고
https://goddaehee.tistory.com/173