CDN원리
CDN시스템은 사용자가 클라이언트 브라우저 등에서 보낸 요청(리퀘스트)이 기본적으로 DNS를 거치는데 착안한 서비스다. 네임서버로서의 서비스를 온전히 제공하면서 부가기능으로서 캐쉬서버와 각종 방화벽 기능 등의 서비스를 제공하고 있다. 관리자가 통과(패스스루)를 설정할 경우에는 DNS로서의 역할만 하고 들어온 요청을 그대로 서버로 전달하며 기타 기능을 설정해둘 경우에는 클라우드플레어의 서버가 해당 값을 받은 후 설정한 서비스를 제공하게 된다.
즉 클라우드플레어가 서버로서의 1차적 역할을 맡고, 프록시 서버로서 실제 서버와 통신을 한다음 결과를 받아 클라우드플레어가 사용자에게 전달하는 구조가 되는 것이다. 이를통해 실제 서버의 정보를 외부에 전달하지 않고 클라우드플레어가 전면에 나서는 형태로 보안문제또한 해결하고 있다. 주로 데이터를 중계하는 것이 주요 작업이다보니 이를 위해서 빠르고 가벼운 속도로 유명한 러시아산 NGINX(엔진엑스) 서버 기반으로 시스템을 이루고 있다고 한다.
CDN 기능
앞서 설명했듯 클라우드플레어는 기본적으로 들어온 클라이언트의 요청을 프록시 형태로 실제 서버에 전달해 결과를 되돌려 받은 후 클라우드플레어 서버에서 결과를 다시 클라이언트로 전달해준다. 단순히 해당 값을 클라이언트에 전달하는 것으로 끝이 아니라, 들어온 웹주소를 기반으로 결과를 캐쉬를 한 후 해당 값을 클라이언트에 전달한 데이터를 캐쉬로 남겨두는 것이다. 캐쉬가 살아있는 동안 동일한 요청이 들어올 경우 서버와는 데이터의 변경여부만 체크하고 바로 캐쉬서버에서 데이터를 전송함으로서 서버의 부하를 줄이고, 데이터 절약이 가능하게 하는 것이다.
클라우드플레어의 이 캐쉬 기능은 단순히 웹페이지(HTML), 자바스크립트(JS), 스타일시트(CSS) 뿐만 아니라 이미지까지 캐쉬를 지원하기 때문에 데이터의 절약은 더더욱 효과가 크다. 특히 최신글 일부에 뷰가 집중되는 커뮤니티 사이트의 경우에는 트래픽을 극적으로 절약할 수 있으므로 효과가 극대화 된다고 할 수 있다.
또한 전세계에 분산되어있는 클라우드플레어 CDN 센터1)간에 데이터를 빠르게 전달해 분산시키기 때문에 여러구간을 거치며 지연되는 문제를 회피할 수도 있고, 실질적으로는 서비스 속도 향상으로도 이어지는 효과를 기대할 수 있다.(원래 프록시 서버의 용도가 그러하듯)
캐쉬를 하는 방식은 크게 기본(Basic), 단순(Simplified), 공격적(Aggressive)의 세가지 등급으로 나뉘는데, 세가지 방식은 기본적으로 아래와같은 특성을 가진다.
전세계에 걸쳐 분포되어 있는 CDN센터 위치
기본(Basic)
◇ html, js, css, jpg등의 고정된 데이터에 한해서 캐쉬한다
단순화(Simplified)
◇http://nex32.net/pic.jpg?ignore=this-query-string
◇웹주소의 전달값(쿼리)을 삭제하고 단순화된 정적인 데이터만을 캐쉬한다. 게시판 등의 동적인 데이터의 주소를 캐쉬하지 않게 만든다.
◇쿼리값이 실제 페이지에 영향을 미치는 것이 별로 없을 때는 이쪽이 더 효율적일 수 있다.
공격적(Aggressive)
◇http://nex32.net/pic.jpg?with=query
◇웹주소의 전달값(쿼리)를 포함한 캐쉬값을 만든다. 게시판 등의 동적 데이터를 포함해서 캐쉬한다.
◇웹어플리케이션에 따라서 동적인 값과 캐쉬된 값 사이의 괴리가 발생하는 경우가 발생할 수 있다. 예를들어서 로그인을 했는데 캐쉬값 때문에 로그인 안한 상태로 보인다던가 하는 식.
데이터 최적화기능
CDN기능과 더불어서 서버에서 받아온 소스를 최적화함으로서 전송 속도를 높이고 오버헤드를 줄여주는 기능을 제공한다. 서버에서 전송된 HTML, JS, CSS 등의 텍스트파일을 최적화 시켜 용량을 줄이고, 데이터를 압축시켜 용량을 감소시킨다. 또한 여러개의 자바스크립트 파일을 하나로 융합시키거나 하는 방식으로 여러개의 커넥션을 소모하는 파일 전송을 최소화시켜 서버가 부담해야할 커넥션 수를 감소시키는 결과를 가져온다.
단순히 최적화와 압축이라는 단계가 중요한 것이 아니라, 최적화라는 전처리 과정을 넣음으로서 단순 캐쉬를 전송하는데 그치지않고 보안기능과 어플리케이션 융합기능을 추가할 수 있게 되는 것이다.



