1. 클라우드플레어 작동원리 |
2. 클라우드플레어 사이트 최적화 - 캐싱 |
3. 클라우드플레어 사이트 최적화 - 스피드 |
1. 클라우드플레어는 어떻게 작동하는가
클라우드플레어(Cloudflare)는 DNS와 CDN 서비스를 제공하는 미국 기업이다.
도메인 네임 서비스를 제공하면서 트래픽 필터링도 해주고 Ddos도 차단해주고 분석도 해주고 CDN도 알아서 해주고.. 보안이나 성능, 사이트 안정화 등 여러 면에서 아주 우수한 서비스를 제공한다.
많은 서비스가 있지만 프론트 엔지니어라면 사이트 성능 개선과 최적화에 초점을 맞추어 클라우드플레어를 이용해야 한다.
그 전에 알고 가야할 것이 있다.
①클라우드플레어에서는 기본적으로 캐싱을 해준다. ②(만약 프록시서버에서 캐싱 설정을 했으면)클라우드플레어에서 캐싱이 먼저 이루어진다. |
이를 이해하려면 클라우드플레어의 동작 원리를 알아야 한다.
(좌) 일반적인 서버 (우) 클라우드플레어 경유하는 서버
만약 웹서버가 nginx 리버스프록시를 사용하고 있다면 이렇다.
<일반적인 DNS 서버>
<클라우드플레어 경유하는 DNS 서버>
유저가 url에 도메인 주소를 치면 클라우드플레어를 경유하여 ip로 된 실제 웹 서버에 도달한다.
2. 캐싱은 어디서 일어날까?
①일반적인 캐싱
클라우드플레어 없이 엔진엑스에서 캐싱을 한다면 위 그림처럼 요청서버와 엔진엑스 사이에서 일어날 것이다.
네트워크탭에서 간단하게 확인해볼 수 있는데,
Response Headers에 "X-Proxy-Cache" 속성이 프록시 서버 캐싱 여부를 말해준다.
②클라우드플레어 캐싱
클라우드플레어를 사용한다면 오리진 서버로 도달하기 전에 캐싱이 일어난다.
역시 네트워크탭에서 보면 "cf-cache-status" 속성이 추가되었을 것이고 서버는 클라우드플레어로 바뀌어있을 것이다.
③만약 엔진엑스 캐싱과 클라우드플레어 캐싱이 동시에 적용되어 있다면?
애초에 엔진엑스까지 갈 일이 없으니 아무리 엔진엑스에서 캐시 설정을 해도 안될 것이다.
이때문에 종종 내가 설정한 Cache-Control이 덮어씌워질 때가 있는데
클라우드플레어에서 설정한 값으로 덮어씌워진 경우일 수 있다.
예를 들면 엔진엑스에서 max-age를 3달(7776000)로 설정했지만 클라우드플레어 설정에서 1달로 해놓았다면 max-age가 1달(2678400)로 바뀌어있을 것이다.
3. 클라우드플레어 캐싱 특징
①동적, 정적 파일 모두 클라우드플레어를 거친다.
설정하기 나름이지만 일반적으로는 거의 바뀌지 않는 정적 파일(js, css, img, favicon 등)만 캐시 서버를 거친다.
그러나 클라우드플레어는 그런거 없고 동적 파일까지 모두 클라우드플레어를 경유하도록 되어있다.
그리고 동적 파일만 분류하여 클라우드플레어를 거치지 않게 하는 것은 불가능하다.
Q. 캐싱이 필요없는 파일까지 클라우드플레어를 거치면 서버가 느려지지 않을까? |
A. 그렇지 않다.클라우드플레어에 따르면 클플에서 전세계에 Edge를 두고 그 엣지들을 이어놓은 네트워크 회선을 사용하고 있기 때문에 거쳐야 할 hops 수가 줄어들어 오히려 빠르다고 한다. 그러나 이 부분은 주의해야할 것이 한국의 경우 엔터프라이즈 유저(유료 멤버)가 아니면 한국 Egde 사용이 불가하다고 한다. 상황에 따라 더 느려질 수 있다는 뜻이다. |
②특정 파일만 캐싱되게 할 수 있다.
클라우드플레어 Page Rules 라는 메뉴에서 룰을 추가해줌으로써 일부 파일들은 캐싱이 되지 않게 또는 일부 파일들만 캐싱되게 설정할 수 있고 쿼리문으로도 제어가 가능하다.
nginx도 설정으로 가능하기 때문에 클플만의 특징은 아니지만 까다로운 정규식을 사용하지 않고 누구나 쉽게 설정할 수 있다는 점.
③클라우드플레어 캐싱 설정은 어디서 하는가?
클라우드플레어에는 다양한 기능들이 있는데 이 중 "Caching"에서 할 수 있다.
유료 멤버 대상으로는 캐시 분석까지 해주지만
무료여도 캐시 삭제, 캐시할 양 설정, TTL 설정 등 유용한 기능을 제공한다.
④사이트가 다운되어도 캐싱페이지를 보여주므로 일시적으로는 문제 없다.
클라우드플레어 최대 장점이라고 볼 수 있다.
'클라우드플레어' 카테고리의 다른 글
[Cloudflare 시리즈3] 클라우드플레어 사이트최적화 - 스피드 (0) | 2022.04.10 |
---|---|
[Cloudflare 시리즈2] 클라우드플레어 사이트최적화 - 캐싱 (0) | 2022.04.10 |