썸네일: Unsplash의Paul Hanaoka
출처 : 웹 성능 최적화 기법
웹 성능 최적화 기법(루비페이퍼 사) 도서에 대한 핵심 내용과 지식을 정리한 포스트입니다. 포스트에 올라오는 내용은 도서의 일부이기 때문에 더 자세한 내용이 궁금하신 분들은 출처에서 도서를 구매해 읽어보시는 것을 추천드립니다.
7.1 CDN을 사용하는 이유
- CDN은 웹 캐시 서버들을 전 세계에 분산 배치하고 원본 서버의 콘텐츠들은 웹 캐시 서버에 캐시해 사용자들에게 서비스 함으로써 사용자 기기나 브라우저가 웹 콘텐츠를 보다 빠르게 다운로드할 수 있도록 하는 기술
- 해외에 서비스를 제공하고자 할 때 고려해야 할 2가지
- 추가 트래픽을 감당할 수 있는 서버 용량
- 해외 사용자들의 웹 사이트 로딩 속도
서버 용량
- 서비스 가용성 및 안정성에 큰 영향을 미치는 요소
- 해결하기 위한 방법들
- 기존 서버의 용량 증설
- 해외에 직접 데이터 센터 구축
- 해외 호스팅 서비스 이용
기존 서버 용량 증설
- 비용은 들지만 비교적 짧은 시간 글로벌 서비스 제공 가능
- 원본 데이터 센터와 해외 사용자들 간 지리적 위치가 멀어 사이트 로딩 속도 보장 어려움
해외에 직접 데이터 센터 구축
- 막대한 예산 소요 (철저한 시장 조사와 수요 예측)
- 기존 애플리케이션 동기화를 위한 복잡한 아키텍처
해외 호스팅 서비스 이용
- 비용 절감 가능
- 원본 애플리케이션 수정, 테스트 및 배포 계획 필요, 동기화 이슈
CDN 서비스 이용 시 장점
- 성능 및 안정성 보장
- CDN 서비스 업체들은 많은 수의 Point Of Presence(POP) 보유
- POP는 데이터 캐싱이 주 목적이므로 고사양 하드웨어 불필요하며 중소형 POP 많이 보유하는 것이 가능
- POP가 많을 수록 병목 구간을 피할 수 있어 캐시된 콘텐츠를 많은 사용자에게 빠르게 전송 가능
- 아키텍처 단순화
- CDN 사용시 아키텍처 변경 불필요
- 애플리케이션 수정, 동기화 방안 고려 불필요
- 높은 비즈니스 투자 수익
- 사용한 트래픽만큼 비용을 지불하고 원가가 저렴해 투자 대비 효율성이 높음
- 운영에 하드웨어, 네트워크 유지 보수 위한 별도 비용 불필요
- 언제든 서비스 중지를 통해 융통성 있게 시스템 운영 가능
CDN 특징
-
동적 콘텐츠 가속
- 애플리케이션 전송 네트워크(Application Delivery Network, ADN)을 통해 네트워크 혼잡 구간을 피하고 고유 알고리즘을 통해 네트워크 최적 경로를 설정함
-
프론트엔드 최적화
- CDN을 통해 원본 서버에서 최적화를 구현하지 않아도 손쉽게 웹 사이트 로딩 속도를 향상시킬 수 있음
-
동영상 또는 라이브 스트리밍 서비스
- CDN의 VOD 서비스를 이용해 동영상을 수월하게 제공 가능
- HTTP 프로토콜 기반에 스트리밍 영상을 전송할 수 있는 HLS, HDS, MPEG-DASH 같은 기술 프로토콜을 지원
-
클라우드 보안
- 콘텐츠를 안전하게 전달하기 위해 DDoS 방어 서비스, 웹 애플리케이션 방화벽(WAF) 서비스 등을 제공
대표적 CDN 업체들
- Akamai Technologies
- CDNetworks
- Amazon CloudFront
- Limelight Networks
- Microsoft Azure
- Cloudflare
7.2 CDN의 원리
7.2.1 CDN 서비스 아키텍처
- CDN 서비스는 콘텐츠를 제공하는 원본 서버와 실제 인터넷을 통해 콘텐츠를 사용하려는 최종 사용자들 사이에서 리버스 프록시 서버 형태로 존재 (웹 캐시 서버 아키텍처와 유사)
- 캐시된 콘텐츠들을 최종 사용자에게 빠르게 전달하기 위해서는 사용자와 가장 가까운 곳에 캐시 서버들이 위치해야 하므로 CDN 업체들은 사람들이 많은 곳에 최대한 많은 서버를 배치 이러한 서버를 에지 서버(edge server)라 함
- CDN 업체마다 자체 네트워크를 구축하는 방법에는 차이가 있으며, 대표적인 방법으로는 주요 도시에 데이터 센터를 구축해서 이를 중심으로 POP를 구현하거나, 주요 ISP 센터나 POP내 서버들을 임대하여 사용하는 방법 등이 있다.
7.2.2 CDN 동작 방법
- 웹 사이트에 접속하기 위해 브라우저 주소창에 URL을 입력하면 브라우저는 DNS로부터 IP 주소를 조회함.
- 최종적으로는 웹 사이트를 호스팅하는 조직의 DNS 서버가 도메인명에 대한 IP 주소를 반환하면 브라우저는 해당 IP 주소로 콘텐츠 요청
- 이때, 호스팅 서버와 사용자간 거리가 멀 경우 응답이 올 때까지의 시간(RTT)이 오래걸림
- CDN을 사용하면 다음과 같은 과정으로 동작 과정이 이뤄진다.
- 사용자 브라우저가 IP 조회시 DNS 서버는 자사 서버의 IP 대신 CDN 업체의 도메인 명을 반환
- 사용자 브라우저는 CDN 업체의 DNS 서버에 해당 도메인 명에 대한 IP를 다시 요청
- CDN 업체의 DNS 서버는 사용자와 가장 가까운 에지 서버 IP를 최종반환
- 에지 서버는 캐시된 콘텐츠를 사용자에게 빠르게 반환하거나, 캐시되어있지 않으면 원본 서버에서 콘텐츠를 받아와 캐시한 후 브라우저에 응답함.
7.2.3 CDN 적용방법
- 실제 CDN을 적용할 때는 소스 코드를 수정하지 않고 DNS만 변경하면 되며 다음과 같은 절차를 거침
- 원본 서버로 사용할 호스트명과 IP를 네임 서버 A 레코드로 추가
- 만약 기존 서비스 명을 www.example.com이라고 하면 네임 서버에는 해당 IP 정보가 A 레코드로 저장되어 있음
- 이를 org-www.example.com이라는 새로운 도메인명을 생성하여 동일한 IP를 갖도록 A 레코드를 추가
- CDN 설정에 원본 서버의 호스트명으로 org-www.example.com을 등록
- CDN 네트워크 에지 서버들은 org-www.example.com으로 접속하게 됨
- 기존 도메인명에 부여되어 있던 IP 정보를 CDN 업체의 도메인명으로 변경
- 원본 서버로 사용할 호스트명과 IP를 네임 서버 A 레코드로 추가