네트워크: 레이턴시와 대역폭
(구글 엔지니어에게 듣는) 네트워킹과 웹 성능 최적화 기법 1장을 읽고 정리했다.
레이턴시와 대역폭의 정의
레이턴시는 패킷을 전송하는 곳에서부터 전달받는 곳까지 이동하는 데 걸리는 시간을 의미한다. 레이턴시(latency)의 사전적 의미는 '잠재', '지연'이다. 서버-클라이언트 간 총 레이턴시는 총 이동거리 대비 신호가 이동하는 속도를 가리키는 전파 지연(propagation delay), 패킷의 모든 비트를 내보내는 데 필요한 시간인 전송 지연(transmission delay), 패킷 헤더를 처리하는 프로세싱 지연(procession delay), 패킷이 처리될 때까지 버퍼 안에서 대기하는 시간인 큐잉 지연(queuing delay) 총 4가지의 지연을 합친 것이다. 이동거리가 멀수록 레이턴시가 증가하며, 중간 단계에서 라우터를 만날 때마다 패킷은 프로세싱 지연과 전송 지연을 겪게 된다. 그리고 트래픽이 높을수록 패킷이 버퍼에서 지연될 확률도 높아진다.
대역폭은 물리적으로(혹은 논리적으로) 처리할 수 있는 통신 경로의 최대 데이터 양이다. CPU, 메모리, USB 등도 대역폭을 가진다. 네트워크에서의 대역폭은 주파수 대역이 넓은지를 나타내는 데에도 쓰이나, 주로 네트워크를 통해 전송되는 처리량을 뜻한다. 보통 초당 비트 수(bps)로 이야기한다. 장거리로 이동하는 데이터는 광섬유 링크를 통해 전달되며, 각 케이블은 몇 가닥의 섬유로 구성되어 있고 초당 수박 테라 비트의 대역폭을 가진다. 하지만 이렇게 데이터가 실려 오더라도 전화선, 케이블, 무선기술, 가정용 라우터 등 각기 다른 대역폭을 가진다. 사용자가 많이 접속된 상태에서는 대역폭이 상대적으로 줄어들게 된다.
빛의 속도와 광섬유의 굴절률을 따져보면 뉴욕에서 시드니까지 왕복하는 시간이 160밀리초가 걸린다. 거기에, 이렇게 건너온 데이터는 집/사무실에 도착하기 몇 키로미터 남기지 않은 지점에서 대부분의 레이턴시가 발생하게 된다. 빛의 속도를 더 빠르게 할 수는 없지만, 인터넷 제공업체에서 개선할 여지는 여전히 충분히 많다.
좋은 사용자경험을 제공하기 위해서는 프로그램의 응답 속도가 중요하며, 이는 네트워크 레이턴시를 주의 깊게 관리해야 함을 의미한다. 대부분의 웹서비스에서 성능 병목점은 대역폭이 아니라 레이턴시다. 대역폭은 비디오나 오디오 스트리밍 등 대용량 전송이 필요한 경우에는 중요하나, 일상적인 웹 브라우징에서는 왕복 레이턴시가 더 큰 제한요소가 된다. 따라서 프리페칭, CDN, 캐싱 등 다양한 기술을 사용해 애플리케이션을 구축할 수 있어야 한다.