[니꺼, 내꺼] 2주차 - 의사결정 과정 설명
2024. 12. 13. 11:04ㆍ내일배움캠프/Barter
해당 게시글은 2주차에 '알림' 이란 도메인 구현시 SSE 를 사용하게 된 과정을 작성한 글입니다.
1. 배경
현재 진행 중인 프로젝트는 '물물교환' 이 중심이기에 사용자에게 자신의 교환이 어떻게 진행되고 있는지 알릴 필요가 있다고 판단해 구현하게 되었습니다. 하지만 단순하게 사용자가 찾아가는 알림이 아니라 사용자가 접속해있다면 실시간으로 서버에서 알림 메시지를 전달해주는 것이 사용자 서비스 만족이 더 높을 거라 판단해 팀원들과 상의하에 '실시간 알림 전송' 이라는 부분도 해당 도메인 구현시 포함하게 되었습니다.
2. 요구사항
'물물교환' 의 상태가 변경되면 해당 행위를 이벤트로 보고 DB 의 NOTIFICATIONS 테이블에 저장해야하고 사용자가 접속해있다면 해당 이벤트 정보를 전달해주어야 합니다.
3. 선택지
사용자에게 알림을 전송하는 것은 크게 'Polling(short-polling), Long-polling, Server-Sent-Events, WebSocket' 4가지 선택지가 있었습니다. 더 많은 선택지가 있겠지만 당시 빠르게 배워서 적용해볼 수 있는 기술을 찾다보니 위와 같은 선택지를 가지게 되었습니다.
4. 의사결정/사유
4가지 선택지 중 SSE 를 선택하게 되었는데 그 이유는 아래와 같습니다.
- Polling 은 주기적으로 클라이언트에서 서버로 요청을 보내 응답을 받는데 이 때 전달할 이벤트 정보가 없어도 없다는 응답을 합니다. 이는 불필요한 '요청-응답' 이 발생하기에 선택에서 제외하였습니다.
- Long-Polling 은 전달할 이벤트 정보가 없다면 대기하였다가 전달할 이벤트 정보가 생기면 그 때 응답을 하는 방식으로 Polling 에 비하면 불필요한 요청 수가 줄어들지만 결국 전달할 이벤트가 많아지면 요청수 또한 증가하기에 선택지에서 제외하였습니다.
- WebSocket 은 '양방향' 통신으로 현재 구현하고자 하는 실시간 알림은 '사용자가 접속해있으면 서버에서 클라이언트로만 이벤트 정보를 전달' 하기에 현재 상황에서는 부피가 더 큰 기술이라 판단해 선택지에서 제외하였습니다.
'내일배움캠프 > Barter' 카테고리의 다른 글
[니꺼, 내꺼] 3주차 - 왜, 추가 API 가 필요한가? (0) | 2024.12.20 |
---|---|
[니꺼, 내꺼] 2주차 - 문제 해결 과정 설명 (0) | 2024.12.13 |
[니꺼, 내꺼] 알림 기능 구현을 위한 학습 (0) | 2024.12.09 |
[니꺼, 내꺼] 5분 기록 테이블 (0) | 2024.12.04 |