CDN (콘텐츠 전송 네트워크)
"Faster internet, closer to you"
— 전 세계 사용자에게 지연 시간(Latency) 없는 초고속 웹 환경을 선사하겠다는 모든 CDN 벤더의 모토.
비싼 메인 서버의 대역폭 요금 폭탄을 막아주고 프론트엔드 빌드 파일을 대신 뿜어내 주는 구세주이자, 디도스(DDoS) 공격을 몸빵해 주는 든든한 방패. 하지만 배포 후 캐시 무효화(Invalidation) 설정을 까먹으면 고객센터에 '화면이 깨져요!'라는 전화가 폭주한다.(...)
1. 개요
CDN(Content Delivery Network, 콘텐츠 전송 네트워크)은 전 세계 여러 곳에 분산 배치된 에지 서버(Edge Server) 네트워크를 통해 사용자에게 정적/동적 웹 콘텐츠를 지리적으로 가장 가까운 위치에서 전송해 주는 기술이다. 메인 서버(Origin)가 서울에 있고 사용자가 뉴욕에 있다면, 태평양 바다 밑 광케이블을 건너 서울까지 요청을 보내는 대신 뉴욕 지사(?) 에지 서버에 임시 저장된 복사본을 즉시 꺼내어 번개 같은 속도로 화면을 띄워준다.(...)
2. 어떻게 동작하는가? 캐싱과 애니캐스트
CDN의 심장은 캐싱(Caching)과 지능형 DNS 라우팅에 있다.
2.1. CDN 라우팅 및 캐싱 시나리오
- 사용자가
cdn.example.com/logo.png이미지를 요청한다. - 애니캐스트(Anycast) DNS 시스템이 사용자와 네트워크상으로 가장 가까운 에지 서버(Edge Server)의 IP 주소로 요청을 인도한다.
- 에지 서버에 해당 이미지가 보관(Cache Hit)되어 있다면, 원격의 오리진 서버(Origin Server)를 귀찮게 하지 않고 그 자리에서 즉시 응답한다.
- 만약 보관된 파일이 없거나 유효 기간(TTL)이 만료되었다면(Cache Miss), 에지 서버가 직접 서울 오리진 서버에 달려가 최신 이미지를 가져와(Fetch) 사용자에게 전달하고, 다음 사람을 위해 자기 주머니에도 쓱 넣어둔다.(...)
이 구조 덕분에 메인 서버는 트래픽의 90% 이상을 에지 서버들에게 하청(?) 줄 수 있어 인프라 비용과 대역폭 소모를 눈물겹게 아낄 수 있다.1
3. 정적 자산 캐싱을 넘어선 현대의 CDN
현대의 CDN은 단순히 이미지나 JS, CSS 파일을 배달하는 배달원에 머무르지 않는다.
3.1. 디도스(DDoS) 방어와 웹 보안 (WAF)
- 수만 대의 에지 서버들이 좀비 PC 군단이 날리는 엄청난 트래픽 폭탄을 지리적으로 나누어 흡수(몸빵)해 준다. 또한 웹 애플리케이션 방화벽(WAF)을 결합하여 악성 요청이나 SQL 인젝션 공격을 에지 단에서 사전에 컷오프(Cut-off)한다.
3.2. 에지 컴퓨팅 (Edge Computing)
- 최근에는 클라이언트의 요청이 메인 서버에 가기 전에 에지 서버에서 간단한 연산을 직접 처리하는 에지 컴퓨팅 기술(서버리스 에지 펑션 등)이 각광받고 있다. 간단한 이미지 리사이징, 국가별 리다이렉트 처리, 헤더 조작 등은 메인 서버에 짐을 얹지 않고 에지 단에서 뚝딱 처리해 버린다.2
4. 관련 밈 및 드립
4.1. Cloudflare 502 Bad Gateway
웹 개발을 하다 보면 누구나 한 번쯤 마주치는 그 주황색 구름과 슬픈 컴퓨터 그림의 에러 화면이다. Cloudflare 에지 서버는 멀쩡히 살아있는데 뒤에 숨겨진 오리진 서버가 죽어버렸을 때 CDN이 울상을 지으며 '미안, 니 서버가 대답 안 해...'라며 대신 보여주는 영정사진(?)이다. 정작 사용자들은 맨 위에 크게 박힌 'Cloudflare' 로고만 보고 '클라우드플레어 터졌네!'라며 애꿎은 CDN 회사를 욕하곤 한다.
5. 여담
- 캐시 폭탄 피하기 (Cache Busting): CDN 캐시가 완고하게 기존 파일을 뱉어낼 때 이를 강제로 갱신하기 위해, 현대 프론트엔드 빌드 도구들은
main.js대신main.a1b2c3d4.js처럼 해시값을 붙여 배포 파일명을 완전히 다르게 만든다. - 9.11 테러와 Akamai: 2001년 9월 11일 테러 당시, 전 세계 사용자가 뉴스 사이트로 폭주하여 메인 뉴스 서버들이 줄줄이 기절했을 때, 오직 Akamai의 CDN을 사용하던 뉴스 웹사이트들만 멀쩡히 살아남아 뉴스를 전송했다. 이 사건으로 CDN의 고가용성이 업계에 뼈저리게 각인되었다.
- 대니 루윈의 비극: Akamai의 공동 창업자 중 한 명인 대니 루윈(Danny Lewin)은 안타깝게도 9.11 테러 당시 납치된 아메리칸 항공 11편에 탑승해 있었으며, 비행기 안에서 납치범들을 저지하려다 최초로 희생된 영웅 중 한 명으로 기록되어 있다.