대역폭(Bandwidth)이란?
대역폭의 개념
대역폭은 네트워크 연결의 ‘폭’을 의미한다. 특정 시간동안 네트워크를 통해 전송할 수 있는 데이터의 최대 용량을 나타낸다. 따라서, 대역폭이 높을 수록 한 번에 많은 양의 데이터 전송이 가능하다.
✨ 한 번에 전송 가능한 데이터 양을 나타내는 것이 대역폭이며 대역폭이 네트워크 성능에 영향을 줄 수는 있지만(속도, 트래픽 병목현상 등) 대역폭이 곧 네트워크 성능은 아니다.
대역폭의 단위
대역폭은 bps(bits per second) 로 표현된다. 초 당 전송할 수 있는 비트 수를 의미한다.
bps ( Bits per Sec)
Kbps ( Kilos per Sec)
Mbps ( Megabits per Sec )
Gbps ( Gigabits per Sec )
...
대역폭(BandWidth)과 처리량(Throughput)
대역폭은 우리가 인터넷이나 네트워크를 통해 전송할 수 있는 데이터의 최대양이다. 대역폭은 네트워크의 ‘파이프 크기’를 나타낸다고 할 수 있다. 데이터를 옮기는 데 있어서 이 파이프를 80%만 채운다면 아무리 파이프가 크더라도 데이터가 80%만 전송이 될 것이다.
이처럼 네트워크에서 대역폭과 처리량은 밀접한 관계가 있다. 대역폭은 높지만, 처리량이 낮다면 실제 데이터 전송 처리량이 낮을 것이고 대역폭이 함께 낮다면 처리량과 비슷해져서 제한될 것이다. 두 가지는 서로 상호의존적인 관계를 가진다.
처리량(Throughput)
처리량은 단위 시간 동안 네트워크를 통해서 전송되는 데이터의 양을 말한다. 즉, 성공적으로 전송된 데이터의 총량이다.
트래픽(Traffic)과 대역폭(Bandwidth)
대역폭이 충분하지 않으면 데이터 트래픽이 많을 때 병목 현상이 발생해서 지연, 패킷 손실 등 문제가 발생할 수 있다. 대역폭을 최적화하는 것이 가장 좋다.
트래픽(Traffic)
트래픽이란 서버를 통해 최종 사용자에게 전달된 데이터의 양이나 데이터 패킷의 흐름 자체를 이야기 한다. 트래픽은 웹 사이트 방문, 파일 다운로드, 이메일 전송 등 웹에서의 활동을 통해 발생한다.
트래픽 vs 대역폭 vs 처리량
트래픽과 관련된 문제가 발생했을 때 예를 들어 보면 세 가지를 비교하기 쉽다.
- 대역폭 : 네트워크의 '도로 폭'과 같으며, 이 '도로'를 통해 한 번에 얼마나 많은 데이터(트래픽)가 이동할 수 있는지를 나타낸다.
- 처리량 : 특정 시점에서 '도로'를 통과하는 차량의 수에 해당하며, 다양한 요인에 의해 영향을 받을 수 있다. (네트워크 혼잡, 하드웨어 제한 등과 같은 외부 요인)
예상 트래픽과 대역폭 계산하기
우리가 서비스를 만들 때 적절히 대역폭을 확보하지 않으면 서버가 다운되거나 병목 현상으로 속도가 느려지게 된다.
트래픽 예측
서비스를 만들고 네트워크를 구성할 때, AWS EC2 스펙 산정이 중요한데 내가 만들 서비스가 얼마나 많은 사용자가 방문할지, 얼마나 사용자들이 머무를지, 사용자마다 평균적으로 트래픽이 얼마나 나올지를 예측해야 한다.
대역폭 요구사항
✨ 사이트 내부의 이미지, 비디오와 같은 콘텐츠와 사용자 수에 따라 달라진다.
AWS EC2 인스턴스 선택
예상 트래픽과 대역폭 요구사항을 기반으로 적절한 EC2 인스턴스 유형을 선택한다. 인스턴스는 충분한 네트워크 성능을 제공해야 하며, 인스턴스의 네트워크 성능은 선택한 인스턴스 유형에 따라 달라진다.
서울대 수강신청 하는 날
서울대 수강신청의 메인 페이지 기준으로 디버깅해보면 총 3.7MB의 네트워크 전송이 이루어진 것을 확인가능하다.
- 하루동안 재적학생들이 수강신청홈페이지를 한번씩만 접속할 때 하루에 발생하는 트래픽
20,000 * 4MB * 1 = 80,000MB = 80GB
- 대역폭을 계산하려면 시간 조건이 필요하다. 수강신청이 10분 내에 완료된다고 가정했을 때의 계산식
(20,000 * 4MB * 8)/ 10 * 60s = 1066Mbps = 1.066Gbps
- m5, c5, r5 타입만 확인해보면 아래와 같이 최대 10Gbps까지의 네트워크 성능을 가진다. → 따라서 사용 가능하다.
대역폭 최적화
대역폭 최적화는 데이터 전송 효율을 높이고, 네트워크 지연 시간을 줄이며, 전체적인 네트워크 성능을 향상시키는 데 중요하다.
✨ 네트워크의 성능은 대역폭 뿐만 아니라 처리량, 지연시간, 패킷 손실, 네트워크 장비, 구성 등 매우 다양한 요소에 의해 영향을 받기 때문에 대역폭 최적화만이 답은 아니다.
최적화 방법
캐싱 및 콘텐츠 전송 네트워크 (CDN) 사용
- CDN은 전 세계에 분산된 서버 네트워크로, 사용자에게 빠르게 콘텐츠를 제공하며 원본 서버의 부하를 줄여준다. CDN을 사용하면 트래픽이 많은 콘텐츠를 지역적으로 캐시하여 대역폭 사용을 줄이고 응답 시간을 개선할 수 있다.
데이터 압축
- 네트워크를 통해 전송되는 데이터를 압축함으로써 대역폭 사용량을 줄일 수 있다. HTTP 압축(Gzip, Brotli 등)은 웹 트래픽을 줄이는 데 효과적이다.
품질 관리 (QoS) 및 트래픽 셰이핑:
- QoS 정책을 구현하여 중요한 트래픽에 우선 순위를 부여하고, 대역폭을 더 효율적으로 분배하며, 필요하지 않은 트래픽을 제한한다.
멀티패스 라우팅 및 로드 밸런싱:
- 여러 네트워크 경로를 활용하거나 로드 밸런서를 사용하여 트래픽을 균등하게 분배하고, 병목 현상을 줄인다.
패킷 로스 감소:
- 패킷 로스 감소 기술을 사용하여 네트워크를 통한 데이터 전송의 신뢰성을 높입니다. 이는 재전송으로 인한 대역폭 낭비를 줄이는 데 도움이 된다.
비디오 및 미디어 스트리밍 최적화:
- 어댑티브 비트레이트 스트리밍 같은 기술을 사용하여 비디오 품질을 실시간으로 조정하고, 사용자의 네트워크 조건에 맞게 데이터 사용량을 최적화한다.
프로토콜 최적화:
- 가능한 경우, 데이터 전송 효율이 높은 프로토콜(예: QUIC, HTTP/2 등)을 사용하여 네트워크 지연 시간을 줄이고 성능을 향상시킨다.
보안 최적화:
- 필요 이상으로 세션을 유지하거나 재인증하는 등의 보안 프로토콜은 대역폭을 추가로 사용할 수 있으므로, 보안 메커니즘과 프로토콜을 최적화하여 필요한 최소한의 대역폭만을 사용하도록 한다.
📖 참고자료
🔗[네트워크] 트래픽이란? 대역폭이란?
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
'KNOWLEDGE' 카테고리의 다른 글
[NETWORK] REST API, RESTful 알아보기 / REST란? (1) | 2023.11.16 |
---|---|
[OS] CPU 스케줄링 알고리즘 / 프로그램 vs 프로세스 vs 스레드 (2) | 2023.11.08 |
[NETWORK] TCP 의 연결 및 해제 과정 (3-Way Handshake / 3-Way Handshake) (1) | 2023.10.30 |
[네트워크] HTTP(HyperText Transfer Protocol) 란? 개발자가 되기 위한 공부 (0) | 2023.05.24 |
[자료구조] 그리디(Greedy) 알고리즘 (0) | 2023.05.18 |