Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 스프링
- 스프링 시큐리티
- spring batch
- 도커
- 스프링 배치
- JPA
- Spring
- HTTP
- 스프링 부트
- Spring Security
- virtualization
- 백엔드
- 영속성 컨텍스트
- ORM
- spring boot
- CI/CD
- 자바
- computer science
- mysql
- spring cloud
- 배포
- 데이터베이스
- Java
- Container
- 가상화
- 컨테이너
- CS
- web server
- vm
- 웹 서버
Archives
- Today
- Total
개발 일기
[Computer Network] 실시간 웹 통신 - 1.Polling, LongPolling 그리고 Server-Sent Events 본문
Computer Science/Computer Network
[Computer Network] 실시간 웹 통신 - 1.Polling, LongPolling 그리고 Server-Sent Events
개발 일기장 주인 2024. 10. 7. 14:53우리가 흔히 사용하는 HTTP 통신은 무상태성(Statelessness) 및 비연결성(Connectionless) 이렇게 두가지 특징을 가진다. 그러나 채팅기능이나 주식/코인 시세를 실시간으로 조회하는 기능들과 같이 실시간 업데이트가 필요한 경우 서로의 통신이 주기적으로 이루어져야 한다. 이러한 양방향 통신(주기적인 통신) 방법으로 4가지를 정리해보겠다.
Polling
- 클라이언트가 일정한 주기로 서버에 데이터를 요청하는 방식
- HTTP 통신을 기반
- 클라이언트는 특정 주기마다 서버에 새로운 데이터가 있는지 요청(Ajax)하고, 서버는 해당 요청에 대해 응답
- (장점) 단순한 로직으로 구현이 쉽고 무상태성을 유지할 수 있다.
- (단점) 요청 주기가 길어지면 데이터가 실시간으로 업데이트 될 수 없으며 요청 주기가 짧아지면 그만큼 서버 부하가 증가하며 업데이트할 데이터가 없어도 계속 요청과 응답이 반복되어 불필요한 리소스가 낭비된다.
Long Polling
- Polling의 단점을 보완하기 위한 방법으로 서버가 데이터가 준비될 때까지 연결을 유지한 뒤, 데이터가 준비되면 응답을 보내는 방식
- 응답을 받은 클라이언트는 다시 서버에 요청을 보낸다.
- 이때 무조건 데이터가 준비되면 응답을 보내는 것이 아니라 정해진 시간이 지나 timeout이 발생하면 응답을 보내기도 한다.
- HTTP 통신을 기반
- (장점) 서버는 업데이트할 데이터가 발생해야만 응답하기 때문에 Polling처럼 의미없는 요청과 응답을 주고받는 횟수가 감소하여 리소스가 절약되며 새로운 데이터가 준비되면 즉시 클라이언트에게 전달되기 때문에 Polling보다 신선한 데이터가 제공된다.
- (단점) 클라이언트는 데이터가 준비될 때까지 서버와 연결을 유지해야하하며 만약 데이터가 폴링보다 빈번하게 발생하게되면 Polling보다 요청과 응답을 더 많이 반복해야할 수도 있다.
아래 사진은 Polling(좌)과 Long Polling(우)을 귀엽게 표현한건데 잘 표현한것같아 들고왔다.
SEE(Server-Sent Events)
- SSE는 사실 단방향 통신 기술로, 클라이언트가 추가적인 요청을 보내지 않아도 서버에서 실시간으로 데이터를 스트리밍
- HTTP 통신을 기반
- WebSocket과 가장 큰 차이점은 WebSocket은 클라이언트와 서버가 양방향으로 데이터를 주고 받지만 SSE는 데이터를 받기만 할 수 있다.
- 그렇기 때문에 채팅 기능보다는 코인 또는 주식 시세를 화면에 최신으로 띄워주는 기능을 구현할 때 유리할 듯 싶다.
- 한번의 요청 및 연결 성립으로 실시간 통신이 가능하며 HTTP Content-type을 application/event-stream으로 해야한다.
'Computer Science > Computer Network' 카테고리의 다른 글
[Computer Network] 실시간 웹 통신 - 3. 웹소켓 프로토콜(WebSocket Protocol) (0) | 2024.10.09 |
---|---|
[Computer Network] 실시간 웹 통신 - 2. 소켓 통신 (10) | 2024.10.09 |
[Computer Network] NAT & CIDR (0) | 2024.07.07 |
[Computer Network] 서브넷, 서브넷 마스크, 서브네팅 (0) | 2024.06.28 |
[Computer Network] Public IP와 Private IP (0) | 2024.06.25 |