Real-Time Web, 그리고 이와 관련된 개념까지 같이 정리하고자 한다.
1. Real-Time Web 이란?
- 인터넷에서 사용자들로 하여금 창작자가 정보를 만들어 내는, 즉시 수신할 수 있도록 하는 기술 혹은 서비스
2. 관련 기술의 특징
- Polling (폴링)
- 전송할 데이터의 유무에 관계 없이 주기적으로 요청을 수행하는 방법
- 클라이언트는 지정된 시간 간격에 맞춰 서버에 지속적인 요청을 보냄
- 서버는 각 요청 마다 가용 데이터나 데이터가 없는 경우 빈 데이터를 보내거나 실패와 같은 적절한 응답을 함
- 데이터의 유무에 관계 없이 요청하여 불필요한 네트워크 비용이 발생
- 클라이언트와 서버 자원을 많이 낭비함
- 요청의 간격이 길면 실시간성이 떨어짐
- 반대로 간격이 짧으면 많은 자원을 소비함
- 서버 이벤트가 일정한 주기로 발생하면 효율적임
- 해당 기술의 선택이 고려되는 경우
- 서버 개발을 할 수 없는 상황
- 외부 API 가 서버 푸시를 지원하지 않음
- Long Polling (롱 폴링)
- 서버 이벤트가 발생할 때까지 응답을 미루는 방법
- Polling 과 다르게 클라이언트의 요청에 대해 서버가 전송할 데이터가 있거나 타임아웃 될 때까지 연결을 끊지 않고 지속
- 서버로부터 응답을 받는 그 즉시 롱 폴링 요청을 다시 수행
- Pollling 과 다르게 불필요한 네트워크 비용이 덜 발생
- 서버 이벤트가 발생하는 즉시 응답을 하기 때문에 실시간성이 높음
- 반대로 서버 이벤트가 빈번하게 발생하면 폴링보다 더 많은 요청을 수행
- Server-sent events (SSE)
- HTTP 를 사용하여 서버 푸시를 구현하는 방법
- HTTP 스트리밍 방식이라고도 하며 SSE 사양에 따라 구현한 방법
- 클라이언트가 요청을 보내면 서버는 무기한 연결을 유지하고 준비가 되면 데이터를 보냄
- 서버 이벤트가 발생하면 응답을 완료하여 연결을 끊는게 아니라 응답 스트림에 청크 단위 데이터를 계속 보냄
- HTTP 를 사용하기 때문에 기존 개발 방식과 다르지 않음
- HTTP 헤더로 인한 오버 헤드가 거의 없음
- 연결이 유지되지 않기 때문에 실시간성이 매우 높음
- 연결이 끊긴 경우 재접속 처리를 자동으로 해 줌
- 서버에서 클라이언트로 단방향 통신만 가능함
- 해당 기술의 선택이 고려되는 경우
- 새로운 데이터를 즉시 수신만 해도 됨
- 알림, 실시간 댓글 등을 구현해야 함
- WebSocket (웹 소켓)
- HTTP 가 아닌 웹 소켓을 사용하여 실시간 양방향 통신을 지원하는 방법
- HTTP 를 통해 웹 소켓 프로토콜로 전환하는 handshake 과정이 필요
- 이후 웹 소켓을 통해 통신이 이루어짐
- HTTP 를 사용하지 않아 전체 메시지 크기가 줄어듦
- 클라이언트와 서버의 자원을 최소화 가능
- 양방향으로 빠른 요청과 응답이 가능
- 해당 기술의 선택이 고려되는 경우
- 네트워크 지연을 최소화 해야 함
- 채팅, 게임과 같이 사용자 간 빠른 피드백이 이루어져야 함
3. 출처
- https://www.youtube.com/watch?v=mHMR03kaBHw
[ 우아한 테크 - 10분 테크톡, 핀의 Realtime Web ]
'IT > CS' 카테고리의 다른 글
[CS] Connection-Timeout vs. Read-Timeout (0) | 2024.03.17 |
---|---|
[CS] HTTP/1.1 과 HTTP/2 (0) | 2024.03.17 |
[CS] Web Socket (0) | 2023.05.16 |
[CS] TCP vs UDP (0) | 2023.05.15 |
[CS] Hash Table (2) | 2023.05.14 |