대규모 시스템 설계를 위한 노트시리즈(4) - CDN

yimo22·2023년 1월 23일
0
post-thumbnail

CDN

CDN이란?

CDN(Content Delivery Network) 는 정적 콘텐츠를 전송하는 데 쓰이는, 지리적으로 분산된 서버의 네트워크이다. 이미지, 비디오, CSS, JS 파일 등을 캐시할 수 있다.


CDN 의 작동원리

사용자가 어떤 웹사이트를 방문하면, 그 사용자에게 가장 가까운 CDN 서버가 정적 콘텐트를 전달하게 된다. (당연히, 사용자가 CDN 서버로부터 멀어지면 웹사이트는 천천히 로드 될 것이다.)

위의 그림은 CDN의 작동원리를 간단히 설명한 예시이다.
사용자가 웹사이트를 클릭해서 로딩되기 전까지, 해당 원본 서버로 정적 자원을 요청하여 직접 받게 될 것이다.
하지만, CDN을 사용하여 지리적으로 가까운 서버에서 정적자원을 빨리 받아볼수 있다면 사용자입장에서는 더빠른 속도의 로딩속도를 경험하게 된다.

CDN 서버는 결국, 원본 서버의 정적자원을 사용자와 지리적으로 가까운 여러대의 서버에 다중화하여 로딩속도를 올리는데 중요한 컨셉을 둔다. 즉, CDN 서버도 원본서버와 동기화 문제를 갖고 있다. 앞서 캐시와 비슷하게, CDN도 자원요청이 들어오면 이를 캐싱되어 있는지 체크한다.
이떄 CDN 서버의 캐시에 해당 이미지가 없는 경우, 서버는 원본서버에 요청하여 파일을 가져온다. 원본서버는 웹서버일수도 있고 아마존 S3 와 같은 클라우드일 수 있다. 원본서버로부터 받아온 파일을 캐싱하고, 이를 고객에게 반환한다.
CDN이 원본서버로부터 받아온 응답 Http 헤더에는 TTL(Time To Live, TTL) 값이 들어 있어 이 파일을 캐시할 시간이 들어 있다.

CDN은 별도의 CDN 서비스 사업자가 제공한 것이다. 대표적으로 클라우드프론트아카마이(Akamai)가 제공하는 CDN이 있다.


CDN 사용시 고려해야 할 사항

사용자와 지리적으로 가까운 서버에 미리 정적자원을 로딩시켜 사용하는 CDN은 좋은 아키텍쳐 인듯하다. 하지만 이를 사용하는데 있어 여러 현실적인 문제들을 겪게 된다.

  • 비용
    CDN 은 제3사업자 (Thrid-Party Provider) 에 의하여 운영되기 때문에 CDN으로 나가는 데이터 전송 양에 따라 요금이 부과된다. 따라서 이를 이용하는데 필요한 비용을 교려하지 않을 수 없다.
    자주 사용되지 않는 콘텐츠를 캐싱하는 것은 이득이 되지 않으므로 비용을 고려하여 CDN에 캐싱할 자원을 선택하는 것도 비용적인 측면에서 중요한 고려사항이 된다.
  • 만료 정책
    시간이 중요한 콘텐츠(Time-Sensitive Content, 시의성)의 경우 만료시점을 잘 정해야 한다. 너무 길경우 콘텐츠의 데이터 신선도(?) 는 떨어질 것이고, 짧을 경우 원본 서버에 자주 접속하게 되어 좋지 않다.
    적절하지 못한 만료정책은 결국 CDN을 사용하는 효과를 떨어뜨린다.
  • CDN 장애 대처 방안
    CDN이 장애발생으로 다운될 경우, 해당 애플리케이션(웹/앱)이 작동할 차선책도 고려해야 한다. 예를 들어, CDN이 일정 시간이상 응답하지 않는 경우 원본서버로의 콘텐츠 요청이 필요할 것이다.
  • 콘텐츠의 무효화 정책
    아직 만료되지 않는 콘텐츠라도 의도에 따라 강제로 콘텐츠를 삭제해야할 경우가 발생할 수 있다. 이는 보통 아래와 같은 방법을 통해 해결할 수 있다.
    1. CDNP (Content Delivery Network Provider) 가 제공하는 API를 이용하여 해당 콘텐츠를 제거
    2. 콘텐츠의 버저닝(Versioning) 을 이용 => test.png?v=2 와 같은 방법을 통해 콘텐츠에 버젼을 명시하는 방법이다.

CDN의 장점과 단점

장점

  • 정적 콘텐츠(JS, Img, CSS등)는 더이상 웹 서버를 통해 서비스하지 않으며, CDN을 통해 제공하여 더 나은 성능을 보장한다.
  • 캐시가 데이터베이스 부하를 줄여준다.

단점

  • CDN의 사용으로 Client 입장에서는 더 좋은 성능을 체감하지만, 제공자 입장에서는 비용문제가 발생할 수 있다.
  • 이외에 만료정책, 장애대처 방안등의 추가적인 요소들이 요구된다.

추가 자료

정적 자원의 캐싱뿐만 아니라 동적 자원의 CDN 캐싱도 가능하다. 이에 관련한 자료는 링크를 남긴다.

정적콘텐츠전송 - Amazon CloudFront

profile
Viva La Vida!

0개의 댓글