IT/CS

[CS] Real-Time Web

어린이개발자 2023. 6. 3. 14:00

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