오늘 공부한 것
* 유저 테스트 홍보
* SSE 를 활용한 알림 기능 공부
오늘은 오전에 유저 테스트를 홍보하고 다녔다항해99 에서 제공해준 사이트들을 다니며 아이디, 비밀번호도 찾고 새로가입도 하면서 홍보를했다
금방 할 줄 알았는데 꼬박 오전내내 올리고 끝이났다
생각보다 가입 후 바로 게시글을 작성할 수 있는 곳도 별로 없고
아에 구글폼을 등록하지 못하는 곳도 있고 게시글을 올리고 얼마지나지않아 삭제되는 곳도 있었다
홍보는 별도로 돈을 받고 하는듯 하였다
그래도 홍보 직후 데이터베이스를 보았을 때 신규 가입자들이 많이 들어와서 뿌듯했다
이후에는 SSE 를 활용한 알림 기능 공부에 들어갔다
프론트 쪽에서 당장 유의미 한 것은 저것이라고 이야기를 해주었기 때문에 새롭게 공부를 시작했다
보통 이런 실시간 웹 애플리케이션을 구현하는 방법은 대표적으로 polling / webSocket / SSE 가
있는데 나는 SSE를 택해서 사용하기로했다
1. polling 이란?
1) 클라이언트가 일정한 주기로 서버에 업데이트 요청을 보내는 방식
2) 지속적인 HTTP 요청이 발생하므로 리소스 낭비가 발생
2. webSocket
1) 실시간 양방향 통신을 위한 스펙
2) 서버와 브라우저가 지속적으로 연결된 TCP 라인을 통해 실시간으로 데이터를 주고 받을 수 있도록하는 HTML5 사양
3) 연결을 유지하며 클라이언트와 서버간 양방향 통신이 가능
4) 주로 채팅, 게임, 주식 차트 등에 사용
3. SSE 란
1) 이벤트가 서버 -> 클라이언트 방향으로만 흐르는 단방향 통신
2) 클라이언트가 주기적으로 HTTP 요청을 보낼 필요가 없어 HTTP 연결을 통해 서버에서 클러이언트로
데이터 전달가능
4. SSE 를 사용하는 이유
1) polling 은 지속적 요청을 보내야 하므로 리소스 낭비가 심할 것 같다
2) webSocket 처럼 굳이 양방향으로 통신할 이유가 없다
5. SSE 특징
1) 서버에서 클라이언트로 실시간으로 데이터 전송이 가능하다
2) 클라이언트는 서버에 요청을 보내고, 서버는 이벤트를 푸시하는 단방향 통신 방식으로 동작
3) 기존의 HTTP 프로토콜을 사용하므로 별도의 프로토콜이나 라이브러리가 필요없다
4) 접속에 문제가 있는 경우 자동으로 재연결을 시도한다
5) 단점
지속적인 연결을 유지해야하는데 서버 리소스와 클라이언트의 네트워크 연결을 소비하게 되고 많은 수의
클라이언트가 동시에 연결을 유지하면 서버의 처리부하가 증가할 수 있음 이를 막기 위해
"SseEmitter" 클래스를 사용할 예정이다
6. SseEmitter 클래스
1) Server-Sent Events (SSE) 프로토콜 지원
Spring 에서 SSE 프로토콜을 지원하기 위한 클래스로 실시간으로 업데이트되는 데이터나 알림과 같은 이벤트를
클라이언트에게 전달 가능하다
2) 비동기 통신
(1) 비동기적으로 이벤트 전송이 가능하다 즉, 서버에서 이벤트가 발생하면 해당 이벤트를 즉시 클라이언트에게
전송가능
(2) 실시간성이 중요한 알림 기능에서 유용하고, 클라이언트에게 지연 없이 즉각적인 업데이트 제공 가능
3) 클라이언트의 재시도 및 연결관리
(1) 클라이언트 연결 상태를 관리하고, 연결이 끊어지는 경우에도 재시도 등의 처리를 지원
(2) 클라이언트가 알림을 구독한 후 연결이 끊어지면 클라이언트는 다시 연결을 시도하고 이전에 미수신한
이벤트를 잃지 않도록 처리 가능
4) 확장성
(1) 여러 클라이언트와 동시에 통신이 가능하다 즉 동일한 알림을 여러 클라이언트에게 전송 가능
(2) 다수의 클라이언트에게 알림을 전달해야 하는 경우 유용
'항해99' 카테고리의 다른 글
23.11.06 항해 99 16기 실전 프로젝트 29일차 (0) | 2023.11.06 |
---|---|
23.10.30~11.05 항해 99 16기 11주차 회고록 (0) | 2023.11.06 |
23.11.03 항해 99 16기 실전 프로젝트 27일차 (1) | 2023.11.03 |
23.11.02 항해 99 16기 실전 프로젝트 26일차 (0) | 2023.11.02 |
23.11.01 항해 99 16기 실전 프로젝트 25일차 (0) | 2023.11.01 |