오늘은 프로젝트를 진행하기 앞서 구현할 기능에 대해 설계 해보았다.
우선 진행할 프로젝트의 설명으로 시작하겠다.
프로젝트명 친구찾기
친구 찾기란 웹 페이지에서 게시글과 채팅을 활용한 웹 채팅 사이트로 사용자가 게시글에 약속시간과 장소를 포함한 글을 올리면 글을 올린 사용자의 신용도와 글의 목적이 맘에든 사용자들이 신청 버튼을 통해 작성자에게 알림을 보내고 알림을 받은 사용자와 보낸 사용자를 채팅으로 연결해 주는 서비스를 만들 계획이다.
이러한 서비스를 만들기 위해선 채팅 과 알림 기능이 무척 중요하다고 생각하고 API와 ERD설계를 진행해 보았다.
설계중 어려웠던점
채팅기능에 대한 설계를 진행하려던 중 지금까지 구현했었던 단순 CRUD와는 달라 어떠한 데이터가 송수신되고, 필요한지 몰라 선뜻 어떠한 형태의 API와 ERD를 설계할 수 없었다.
그에 대해 정보를 수집한 결과 채팅 기능에 사용되는 라이브러리인 socket.io와 sendBied 등 을 알 수 있었고 채팅기능은 채팅방과 해당 채팅방에 속하는 유저들을 알 수 있는 테이블과 해당하는 채팅방의 아이디와 유저아이디를 가지고 있는 메세지 테이블을 통해 구현할 수 있다는 것을 알게 되었고 ERD를 설계하였다.
결과적으로 위와 같은 ERD 구성이 나왔고
방생성, 방삭제, 채팅 송신, 채팅 수신, 유저 초대 등과 같은 API 가 필요할것 같다는 결론이 나왔다.
다을으로 알림 기능은 채팅기능과 같은 문제를 가지고 있었지만 정보를 수집한 결과
자바스크립트로 사용자의 알림 권한 요청을 확인 할 수 있고 알림을 생성하고 전송할 수 있다는 것을 알게 되었고 또 웹 브라우저가 제공하는 기본 알림 API인 Web Notifications API 와 Push API 및 서비스 워커를 알게 되었다
중요하게 알게된점은 알림 기능을 구현할 때 필요한 API 기능 들로 알림의 내용을 저장하는 테이블이 필요하고 알림을 생성 하고 조회및 삭제 하는 API가 필요하다는 것을 알게 되었다.
우선 유저테이블과 연관된 위과 같은 ERD로 시작하기로 했고 앞서 설계했던 채팅기능과 비슷한 관계로 진행해 볼 예정이다.
프로젝트를 진행하면서 처음 설계했던 부분과 완성했을 때와 어떤점이 많이 달라졌는지의 확인과 어떠한 점이 많이 주복했는 지를 알기 위해 초반 설계 과정을 기입한다.