# QUIC을 이용하여 Datagram 없이 Timeliness(적시성) 구현하기

> Clean Markdown view of GeekNews topic #15511. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15511](https://news.hada.io/topic?id=15511)
- GeekNews Markdown: [https://news.hada.io/topic/15511.md](https://news.hada.io/topic/15511.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-06-25T10:03:07+09:00
- Updated: 2024-06-25T10:03:07+09:00
- Original source: [quic.video](https://quic.video/blog/never-use-datagrams/)
- Points: 1
- Comments: 1

## Topic Body

### 절대 데이터그램을 사용하지 마세요.  
  
#### TCP vs UDP  
- 인터넷 애플리케이션을 개발할 때 TCP와 UDP 중 하나를 선택해야 함.  
- **TCP**: 신뢰성 있는 데이터 전송을 보장함.  
- **UDP**: 신뢰성 없는 데이터 전송을 제공함.  
- 신뢰성 없는 전송이 필요한 경우는 거의 없음.  
  
#### 속성  
- 소프트웨어 엔지니어링은 여러 계층의 추상화 위에 서 있음.  
- 각 계층은 특정 속성을 제공하여 개발자가 모든 것을 처음부터 다시 만들 필요가 없게 함.  
- 개발자는 어떤 계층을 사용할지 선택해야 함.  
  
#### "신뢰성 없는"  
- 실시간 비디오 프로토콜을 설계하는 모임에서 **SUBSCRIBE**가 신뢰성 없도록 해야 한다는 의견이 있었음.  
- 실제로 필요한 것은 **적시성**임.  
- 실시간 비디오에서는 최신 데이터를 우선적으로 전달하는 것이 중요함.  
  
#### 데이터그램  
- 데이터그램(IP 패킷)은 출발지 주소에서 목적지 주소로 전송되는 데이터의 단위임.  
- 데이터그램은 손실되거나 순서가 뒤바뀔 수 있음.  
- 데이터그램을 사용하는 이유는 네트워크 혼잡 시 패킷을 드롭하는 것이 더 나은 선택이기 때문임.  
  
#### 인터넷의 큐  
- 네트워크가 혼잡할 때 패킷을 드롭하는 것이 일반적임.  
- 패킷을 큐에 넣고 나중에 전달하는 것은 **버퍼블로트** 문제를 일으킬 수 있음.  
- 버퍼블로트는 모든 패킷이 큐에 쌓여 적시성을 해침.  
  
#### 당신, 애플리케이션 개발자  
- UDP를 직접 사용하면 여러 문제에 직면할 수 있음.  
- UDP 위에 자체 전송 프로토콜을 구축하려면 재전송, 혼잡 제어 등을 구현해야 함.  
- QUIC 라이브러리를 사용하는 것이 더 나은 선택임.  
  
#### 적시성  
- **적시성**을 달성하기 위해 QUIC를 사용할 수 있음.  
  1. **버퍼를 비우기**: 혼잡 제어를 통해 큐를 감지하고 전송 속도를 줄임.  
  2. **데이터를 스트림으로 분할**: 각 스트림은 독립적으로 전송됨.  
  3. **스트림 우선순위 지정**: 중요한 스트림을 우선적으로 전달함.  
  
#### 데이터그램 방어  
- QUIC와 MoQ는 데이터그램을 지원함.  
- 데이터그램 지원은 실험을 허용하기 위해 중요함.  
- 그러나 데이터그램 사용은 함정일 수 있음.  
  
#### 결론  
- 데이터그램 위에 애플리케이션을 설계하지 말아야 함.  
- UDP 위에 또 다른 비디오 프로토콜을 만들지 말고, Media over QUIC에 참여하는 것이 좋음.  
  
### GN⁺의 의견  
1. **적시성의 중요성**: 실시간 애플리케이션에서는 데이터의 적시성이 매우 중요함. TCP보다 UDP가 적합할 수 있지만, 혼잡 제어와 같은 추가적인 고려가 필요함.  
2. **QUIC의 장점**: QUIC는 UDP의 단점을 보완하면서도 높은 성능을 제공함. 특히 실시간 비디오 스트리밍에 적합함.  
3. **버퍼블로트 문제**: 네트워크 혼잡 시 패킷을 큐에 쌓는 것은 적시성을 해칠 수 있음. 이를 피하기 위해 혼잡 제어가 필요함.  
4. **데이터그램의 한계**: 데이터그램은 실시간 전송에 적합하지만, 신뢰성과 순서 보장이 필요할 때는 QUIC와 같은 프로토콜이 더 나은 선택임.  
5. **기술 선택의 중요성**: 애플리케이션의 요구사항에 맞는 적절한 전송 프로토콜을 선택하는 것이 중요함. 잘못된 선택은 성능 저하와 사용자 경험 악화를 초래할 수 있음.

## Comments



### Comment 26576

- Author: neo
- Created: 2024-06-25T10:03:07+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=40766079) 
- **TCP의 문제점**: TCP는 고대역폭, 저지연이 필요한 환경에서 문제가 많음. 저대역폭, 고지연 네트워크에서도 비효율적임.
- **UDP 사용 사례**: 고주파 센서 데이터 스트리밍에 UDP를 사용 중이며, QUIC을 통해 문제를 해결한 사례도 있음.
- **UDP의 용어**: UDP를 "신뢰할 수 없는" 대신 "최선의 노력"으로 설명하는 것이 더 적절함.
- **스트림 추상화의 문제**: 스트림 추상화는 프로그램을 취약하게 만들고, 연결 해제 시 복구가 느림. 데이터그램 기반 접근이 더 효율적일 수 있음.
- **UDP 패킷 드롭**: 네트워크 혼잡 시 UDP 패킷이 먼저 드롭됨. QUIC의 재전송 문제를 언급함.
- **클릭베이트 제목**: 기사 제목을 원문에서 가져와야 한다는 해커뉴스의 가이드라인을 지키려는 시도.
- **TCP와 UDP의 차이**: TCP는 신뢰성을, UDP는 속도와 효율성을 제공함. 각 프로토콜의 특성을 이해하고 사용해야 함.
- **데이터그램 기반 사용 사례**: 로컬 디스커버리, 브로드캐스트, 패키지 캡슐화 등에서 데이터그램 사용이 적합함.
- **데이터그램 사용 권장**: 세션 기반 연결이 일반적이지만, 데이터그램 사용도 유용함. 네트워킹의 저수준 측면을 배울 수 있는 좋은 기회임.
