2023/05/04 (20:00)

✔️ 인원별 역할

(BE)

https://www.figma.com/file/9KRbzFmuxZis0ValG9PqTO/미니프로젝트-BE?type=whiteboard&node-id=90-571&t=giLcjFM8RAOnJ9tH-0 DB테이블 설계.

https://www.figma.com/file/6TNOY9HKAbsVfQocq0KYCN/Miniproject-UI?type=design&node-id=1-2&t=xxRtk5yAzB9BnU80-0 프론트 UI설계

✔️ 프로젝트 기획 방향

<aside> 💡 전반적인 프로젝트 진행을 알기 위해 대략적인 설명을 작성해 주세요.

</aside>

이 프로젝트는 사용자들의 연차와 당직 요청을 관리하고, 관리자가 승인 또는 거절할 수 있는 시스템을 구축하는 것입니다. 주요기능에 대한 설명은 다음의 문서를 참고하시면 됩니다.

백엔드기능 명세 https://www.notion.so/daab3999f29f453cb8f925c9627f5273

API 명세 https://www.notion.so/API-009e0ee494394c61b949a925f245f02e

✔️ 질문 사항

Q. 알람 기능 구현 관련

로그인 되어 있는 유저에게 실시간 알람을 어떻게 전달할 것인가? 어떤 방식을 선택해야 할지 고민이네요. 간단한건 폴링방식인거 같은데요.

  1. 웹소켓 (WebSocket): 웹소켓은 양방향 통신을 지원하는 프로토콜로, 서버와 클라이언트 간에 실시간 데이터 전송이 가능합니다. 웹소켓을 사용하면 알림 이벤트가 발생하자마자 서버에서 클라이언트로 알림을 전송할 수 있습니다.

    서버 전달 이벤트(Server-Sent Events, SSE)를 사용할 수도 있습니다. SSE는 서버에서 클라이언트로 단방향 통신을 할 때 사용됨

  2. 폴링 (Polling): 폴링은 클라이언트가 주기적으로 서버에 알림을 확인하도록 요청하는 방식입니다. 서버는 요청을 받아 알림을 확인한 후, 응답으로 알림을 전송합니다. 폴링은 구현이 간단하지만, 실시간성이 떨어지고 통신 비용이 높을 수 있습니다.

  3. 롱폴링 (Long Polling): 롱폴링은 폴링의 변형으로, 클라이언트가 서버에 알림을 확인하도록 요청한 후 서버가 알림이 발생할 때까지 응답을 지연시키는 방식입니다. 알림이 발생하면 서버는 클라이언트에게 바로 알림을 전송합니다. 롱폴링은 실시간성이 폴링보다 높지만, 웹소켓에 비해 구현이 복잡하고 서버의 자원을 많이 사용할 수 있습니다.

✔️ 멘토 답변 정리