[네트워크/Network] 웹 캐시(Web Cache; 프록시 서버)를 통한 응답 속도 향상 원리 이해하기
kindof
·2021. 9. 29. 19:05
💡 0. 웹 캐시?
웹 캐시(Web cache; 프록시 서버)는 원출처의 웹 서버를 대신하여 HTTP 통신을 대신하는 네트워크 개체입니다.
웹 캐시는 자체의 저장 디스크를 가지고 있어서 최근 호출된 객체의 사본을 저장 및 보존하고 아래 그림처럼 모든 브라우저는 사용자의 모든 HTTP 요구가 웹 캐시에 가장 먼저 보내지도록 구성될 수 있습니다.
이 때, 리버스 캐싱(Reverse Caching)이란 웹 서버로 유입되는 HTTP 트래픽을 캐싱 시스템이 저장하고 있다가 동일 요청이 들어왔을 때 캐싱 시스템이 이 데이터를 돌려줌으로써 빠른 응답 성능을 제공하는 방법을 말하는데요.
위 그림에서 사용자가 'http://www.xxxx.com/someImage.png '라는 객체(데이터)를 요구한다고 해봅시다. 그러면 아래와 같은 일이 일어납니다.
- 브라우저는 웹 캐시와 TCP 연결을 설정하고 웹 캐시에 있는 객체에 대한 HTTP 요청을 보낸다.
- 웹 캐시는 객체의 사본이 자신에게 저장되어 있는지 확인한다. 만일 저장되어 있다면 웹 캐시는 클라이언트 브라우저로 HTTP 응답 메시지와 함께 객체를 전송한다.
- 만약 웹 캐시가 객체를 가지고 있지 않다면, 웹 캐시는 캐시와 서버 간의 TCP 연결로 객체에 대한 HTTP 요청을 보낸다. 이러한 요청을 받은 후에 기점 서버는 웹 캐시로 HTTP 응답 메시지와 함께 객체를 보낸다.
- 웹 캐시가 객체를 수신할 때, 객체를 저장소에 복사하고 클라이언트 브라우저에 HTTP 응답 메시지와 함께 객체의 사본을 보낸다.
이 과정들을 보면, 캐시는 서버이면서 클라이언트 역할을 수행하고 있음을 알 수 있습니다. 사용자에게 응답을 돌려줄 때는 서버의 역할을 하고, 만약 요청된 데이터가 캐시에 없을 때 원래 서버에 해당 데이터에 대한 요청을 보내면 클라이언트 역할을 하는 것이죠.
🚗 1. 웹 캐싱을 통한 성능 향상
위에서 웹 캐싱은 빠른 응답 성능을 제공한다고 했는데요. 아래 예제를 통해 대략적인 성능 향상 정도를 살펴보겠습니다(아이패드에 그림을 그려서 좀 이상한 것 같긴 합니다...).
기관 네트워크는 100Mbps 속도의 LAN이고 기관 네트워크에 있는 라우터와 인터넷에 있는 라우터는 15Mbps 회선에 연결되어 있으며, 요청되는 데이터의 크기를 평균 1Mbit, 클라이언트는 평균적으로 서버에 초당 15번의 요청을 보낸다고 하겠습니다. 또한 접속 회선의 인터넷 부분 라우터가 HTTP요청을 전달하고 응답을 받을 때 까지 평균 2초의 시간이 걸린다고 가정하겠습니다.
이 상황에서 캐싱 기능이 없을 때 총 응답 시간은 LAN 지연과 접속 지연, 인터넷 지연의 합과 같은데요.
LAN 트래픽 강도 : (15개 요청 / 초) * (1Mbit / 요청) / 100Mbps = 0.15
접속 회선 트래픽 강도 : (15개 요청 / 초) * (1Mbit / 요청) / 15Mbps = 1
이 상황에서 LAN 트래픽 강도 0.15는 많아야 수십 msec의 지연만을 야기하므로 LAN 지연을 무시할 수 있습니다. 하지만 트래픽 강도가 1에 가까워지면 접속 회선의 경우와 같이 회선의 지연은 매우 커지고 한없이 증가합니다.
📖 트래픽 강도와 큐잉 지연
a = 패킷이 큐에 도착하는 평균율(패킷/초)
R = 전송률, 비트가 큐에서 밀려나는 비율(비트/초)
L = 패킷의 평균 비트 길이
위와 같은 상황에서 트래픽 강도 = L*a / R로 정의합니다. 이 때, 아래 그래프처럼 트래픽 강도가 1에 접근할수록 평균 큐잉 지연이 급속히 증가합니다.
따라서 요청을 만족시키기 위한 평균 응답 시간은 대략 몇 분씩 걸리게 되고, 클라이언트들은 화가 나겠죠.
이 때 캐싱을 사용하면 어느 정도 성능 향상이 있을까요? 캐시의 적중률을 0.4라고 가정하면, 캐시와 클라이언트가 고속 LAN에 연결되어 있으므로 요청의 40%는 캐시에 의해 처리됩니다. 그리고 60%의 요청은 원래 기관 네트워크 서버에 의해 처리되죠.
그러면 요청된 데이터의 60%만 접속회선을 통과하므로 트래픽 강도는 1.0에서 0.6으로 감소합니다. 일반적으로 트래픽 강도는 0.8미만일 때 '작은 지연'에 속하는데, 이 지연은 2초의 인터넷 지연에 비하면 무시될 수 있죠.
그러므로 이들을 고려한 평균 지연은 아래와 같습니다.
0.4 * (0.01초) + 0.6 * (2.01초) = 약 1.2초
따라서 캐시를 사용하게 되면 캐시가 없을 때보다 훨씬 낮은 응답 시간을 가지게 되며, 기관 네트워크가 더 많은 요청을 빨리 처리하기 위해 회선을 늘릴 필요가 없게 됩니다.
캐싱을 통해 단순히 몇 개의 요청을 처리하는 것도 중요하지만, 이를 통해 덜어지는 트래픽 강도가 더 큰 힘을 발휘하는 것이죠.
한편, 컨텐츠 전송 네트워크(CDN, Content Distribution Network)의 사용을 통해 웹 캐시는 인터넷에서 점진적으로 중요한 역할을 하고 있는데요.
CDN 회사는 인터넷 전역을 통해 많은 지역적으로 분산된 캐시를 설치하고 있으며, 이를 통해 많은 트래픽을 지역화하고 있습니다. 이번 글에서는 웹 캐싱이 어떻게 응답 성능을 향상시키는가를 이해하는 것으로 마치고, CDN에 대한 내용은 다른 포스팅에서 또 정리해보도록 하겠습니다.
감사합니다.
'CS > Network' 카테고리의 다른 글
[네트워크/Network] 라우터의 입력 포트 처리 및 목적지 기반 전달 (0) | 2021.10.09 |
---|---|
[네트워크/Network] TCP 혼잡제어에 대한 정리 (0) | 2021.10.08 |
[네트워크/Network] TCP는 어떻게 신뢰적인 데이터 전달을 할까? (0) | 2021.09.13 |
[네트워크/Network] 인터넷은 어떻게 URL 주소의 서버를 찾아갈까? - DNS의 동작 원리 (0) | 2021.09.10 |
[네트워크/Network] 네트워크의 기본: OSI 계층 구조와 캡슐화 (1) | 2021.09.08 |