[숏폼 프로젝트] ⏰ 알림기능 구현을 위한 방법들

Manta·2024년 11월 28일
1

숏폼

목록 보기
3/7

숏폼 프로젝트에서 해당하는 영상에 댓글이 달렸을때 영상 주인에게 알림이 가면 좋겠다라는 의견이 나와서 이번에 구현을 해보려고 합니다.

🔔알림을 구현하는 방법들

1. 짧은 폴링(Short Polling)

폴링(Polling): 클라이언트가 일정 주기마다 서버에 요청을 보내 새로운 데이터가 있는지 확인하고, 이를 받아오는 방식입니다.

폴링은 대표적으로 두가지로 나누어진다고 합니다.
1. 정기적 폴링(Regular Polling)
2. 이벤트 기반 폴링(Event-based Polling)

정기적 폴링에 대표적인 예시로 짧은 폴링(Short Polling)이 해당합니다.

짧은 폴링(Short Polling): 클라이언트가 일정한 짧은 주기로 지속해서 요청을 보내고,
서버에서 줄 새로운 데이터가 없는 경우 빈 응답을, 있는 경우 데이터를 담은 응답을 보내주는 방식입니다.

  • 장점: 대부분의 웹 환경에서 작동하며 구현이 비교적 쉬움.

  • 단점:

    • 서버가 줄 데이터가 없음에도 계속 요청과 응답 작업을 반복하기 때문에 불필요한 트래픽이 많이 발생
    • 단순히 일정한 주기로 요청과 응답을 진행하기 때문에 이벤트 발생을 실시간으로 반영하지 못함

2. 긴 폴링(Long Polling)


위에서 정리했던 이벤트 기반 폴링(Event-based Polling)의 대표적인 예가 바로 긴폴링 입니다.

긴 폴링(Long Polling): 서버에서 클라이언트에게 줄 데이터가 없는 경우
곧바로 응답하지 않고 커넥션을 계속 유지하며,
서버에서 줄 데이터가 생겼을 때야 응답을 보내는 방식입니다.

  • 장점: 불필요한 요청과 응답을 반복하지 않아도 되고, 서버에게 이벤트가 발생하면 바로 응답을 주기 때문에 짧은 폴링에 비해 이벤트의 실시간성이 보장

  • 단점: 클라이언트와 연결을 계속 유지하는 동안 서버 자원을 지속해서 소모하고 있음

3. 웹 소켓(Web Socket)

웹소켓(Web Socket): 양방향 통신 채널을 제공하는 프로토콜로, 클라이언트와 서버 간 실시간 데이터 교환을 가능하게 해줌으로써, 클라이언트와 서버를 서로 연결해 별도의 HTTP 요청 없이 데이터를 수신할 수 있습니다.

  • 장점: 양방향 통신을 지원하면서 지연 시간이 다소 짧음

  • 단점: 클라이언트와의 연결을 계속 유지함으로써 서버 자원 소모가 있음

4. 서버 전송 이벤트(Server Sent Events)

서버 전송 이벤트(Server Sent Events):
웹소켓과는 달리 서버에서 클라이언트로 단방향 데이터를 실시간으로 전송하는 기술입니다.
클라이언트는 서버로 데이터를 요청할 수 없으며 서버에서 전달하는 데이터의 수신만 가능합니다.

긴 폴링(Long Polling)과 비슷하지만 다른 점:

  1. 긴 폴링(긴 폴링(Long Polling))은 서버에서 이벤트가 발생해서 데이터를 응답하면 연결이 끊지고, 다시 연결을 해야 합니다.

  2. SSE는 서버에서 데이터를 응답을 해도 일정 시간 동안은 연결을 끊지 않고 계속 유지가 됩니다.

  • 장점: 일정 시간 동안 커넥션 연결이 보장되어 있으므로, 서버에서 클라이언트로 데이터나 알림을 마음껏 줄 수 있음

  • 단점: 웹소켓 같은 양방향 통신은 지원되지 않음, 최대 동시 접속 횟수 제한됨

✅SSE를 선택한 이유

❌Short Polling : 실시간 통신을 위해서는 업데이트 주기를 짧게 해야 하지만, 빈번한 HTTP 요청에 의해 트래픽이 많아질 경우 서버에 부하가 큽니다.

❌Long Polling : (Polling 와 동일하게) 빈번한 HTTP 요청에 의해 트래픽이 많아질 경우 서버에 부하가 많아지고, 응답을 하기 전까지 서버와 클라이언트가 연결이 계속되어 서버 자원을 지속해서 소모합니다.

❌WebSocket : 서버와 클라이언트의 양방향 통신

⭐SSE : 서버에서 클라이언트로의 단방향 통신

알림 기능의 경우, 채팅이 아니므로 양방향 통신일 필요가 없습니다. 그래서 SSE 가 가장 적절하다고 판단을 하였습니다.

profile
공부할게 너무 만타🫠

0개의 댓글