이 카테고리는 국비지원 과정으로 [계룡건설] 빅데이터 기반 GreenTech SW개발자 과정에서 학습하는 내용을 정리하는 공간입니다.
🚀 TCP 서버와 비디오 스트리밍 서버의 차이점 & 프레임 버퍼링의 필요성
네트워크 프로그래밍을 하다 보면 TCP 서버와 비디오 스트리밍 서버를 구현할 일이 많다.
하지만 단순한 텍스트 송수신과 실시간 영상 전송에는 큰 차이점이 있으며, 이를 제대로 이해하지 않으면 심각한 성능 문제가 발생할 수 있다.
🛠 1. TCP 서버와 비디오 스트리밍 서버의 차이점
데이터 유형 | 문자열 (텍스트 메시지) | 바이너리 데이터 (이미지 프레임) |
전송 방식 | send(문자열.encode()) | send(길이정보.encode()) → send(프레임 데이터) |
데이터 크기 | 보통 1KB 이하 | 수십 KB ~ 수백 KB (프레임당) |
처리 방식 | 요청이 있을 때 응답 | 지속적으로 프레임 생성 및 전송 |
네트워크 부하 | 낮음 (텍스트 전송) | 높음 (이미지 프레임 전송) |
데이터 유실 가능성 | 거의 없음 | 클라이언트 속도에 따라 프레임 손실 가능 |
버퍼링 필요 여부 | 필요 없음 | 필요 (큐를 사용하여 최신 프레임 유지) |
✅ TCP 서버는 클라이언트가 메시지를 보내면 서버가 이를 받아 다른 클라이언트에게 전달하는 방식이다.
✅ 비디오 스트리밍 서버는 서버가 계속해서 프레임을 생성하고, 클라이언트가 이를 빠르게 받아야 한다.
이 차이로 인해 비디오 스트리밍 서버는 네트워크 부하가 크고, 프레임이 손실될 가능성이 높다.
이를 해결하기 위해 **프레임 버퍼링(Queue 사용)**이 필요하다.
🏆 2. 비디오 스트리밍에서 프레임 버퍼링(Queue)이 필요한 이유
일반적인 TCP 서버에서는 메시지가 도착하면 바로 처리하면 되므로 버퍼링이 필요하지 않다.
하지만 비디오 스트리밍에서는 서버가 지속적으로 프레임을 생성하고 전송해야 하므로, 적절한 데이터 흐름을 관리하는 것이 필수적이다.
🎯 1️⃣ 클라이언트 속도가 서버보다 느릴 수 있음
- 서버는 초당 30~60개의 프레임을 생성하지만, 클라이언트가 이를 받아들이는 속도가 더 느릴 수 있다.
- 네트워크 환경이 불안정한 경우 클라이언트가 일부 프레임을 받지 못하면 영상이 끊기거나 딜레이가 발생한다.
- 따라서 이전 프레임을 계속 저장하고 있으면 안 되고, 최신 프레임을 유지하는 큐가 필요하다.
🎯 2️⃣ 실시간 성능을 위해 최신 프레임 유지 필요
- 영상 스트리밍에서 가장 중요한 것은 최신 프레임을 전송하는 것이다.
- 만약 이전 프레임을 계속 쌓아두면, 클라이언트가 오래된 프레임을 받게 되어 영상이 지연될 수 있다.
- 따라서 큐(Queue)를 사용하여 가장 최신 프레임만 유지하고, 이전 프레임은 버려야 한다.
🎯 3️⃣ 여러 클라이언트가 동시에 연결될 경우 프레임 관리 필요
- 다수의 클라이언트가 접속할 경우, 클라이언트마다 네트워크 속도가 다를 수 있다.
- 특정 클라이언트가 느린 경우, 전체 서버 성능이 저하되지 않도록 개별 큐를 관리하는 것이 중요하다.
- 이를 위해 queue.Queue(maxsize=N)를 설정하여 최대 저장 가능한 프레임 개수를 제한하고 오래된 프레임을 자동 삭제할 수 있다.
📌 3. 비디오 스트리밍 서버의 큐(Queue) 적용 코드 예시
TCP 채팅 서버 vs 비디오 스트리밍 서버 코드 비교
1️⃣ 기본적인 TCP 채팅 서버 (텍스트 기반)
✅ 텍스트 전송만 처리하면 되므로 버퍼링이 필요 없음
2️⃣ 비디오 스트리밍 서버 (프레임 버퍼링 적용)
✅ 프레임을 Queue에 저장하고, 최신 프레임만 유지하도록 관리
✅ 클라이언트가 요청하면 queue.get()을 통해 최신 프레임을 전송
✅ 큐 크기를 제한하여 오래된 프레임이 쌓이지 않도록 관리
🎯 4. 결론 (비디오 스트리밍 서버를 만들 때 꼭 알아야 할 점)
1️⃣ 비디오 스트리밍 서버는 일반적인 TCP 채팅 서버와 다르게 바이너리 데이터를 다룬다.
2️⃣ 네트워크 속도가 다르면 프레임 손실이 발생할 수 있으며, 이를 해결하기 위해 큐(Queue)를 활용한 버퍼링이 필요하다.
3️⃣ 최신 프레임만 유지해야 지연 문제를 줄이고 실시간성을 유지할 수 있다.
4️⃣ 멀티 클라이언트 환경에서는 각 클라이언트별 속도를 고려한 큐 관리가 필요하다.
'국비지원교육 > [계룡건설] 빅데이터 기반 GreenTech SW개발자' 카테고리의 다른 글
**[계룡건설] GreenTech SW개발자 - Python 학습 노트 .14** (0) | 2025.03.21 |
---|---|
**[계룡건설] GreenTech SW개발자 - Python 학습 노트 .12** (0) | 2025.03.21 |
**[계룡건설] GreenTech SW개발자 - Python 학습 노트 .11** (0) | 2025.03.05 |
**[계룡건설] GreenTech SW개발자 - SQL 학습 노트** (0) | 2025.02.17 |
**[계룡건설] GreenTech SW개발자 - JavaScript 학습 노트 .1** (0) | 2025.02.17 |