2024. 11. 26. 06:51ㆍ코딩 도구/프로젝트 & 경험 (Projects & Experiences)
이번에는 제가 24년 3월~6월에 참여한 Togather 프로젝트의 개발 과정을 공유하고자 합니다.
Togather는 배달비 분할 파티원 또는 공동 구매원 모집 서비스로, 저렴한 공동 구매 방식을 제공합니다.
https://m.youtube.com/watch?v=IT6z9czB58s
프로젝트 소개
Togather는 배달비를 절약하고자 하는 사용자들을 위한 플랫폼으로, 공동 구매를 원하는 사람들이 모여 함께 주문할 수 있도록 도와줍니다. 사용자들은 모집글을 올리고, 손들기 기능을 통해 파티원을 모집하며, 채팅을 통해 소통할 수 있습니다.
https://github.com/cbnu-togather/togather-server
초기 계획
처음에는 WebSocket을 이용한 실시간 채팅 기능을 구현하려고 했습니다. 아래는 초기 채팅 및 알림 기능 구현을 위한 요구 사항입니다.
계획 변경 : WebSocket에서 CRUD로
스프링, 자바, REST 형식, GitHub 등 여러 새로운 툴과 기술을 동시에 익히면서 협업하기에는 시간과 경험이 부족하다고 판단했습니다.
특히 미루고 미루다 3학년 1학기에 시험과 다른 과제들도 많아 모든 것을 한꺼번에 처음부터 공부하기에는 무리가 있었습니다. 그래서 팀원들과 큰 회의 끝에 WebSocket 대신 CRUD 방식으로 기능을 구현하기로 결정했습니다.
개발 과정에서의 문제점과 해결
개발을 진행하면서 여러 문제점이 발생했고, 이를 하나씩 해결해 나갔습니다.
문제 1: 채팅방 참가자가 2명으로 고정되는 문제
현상: 채팅방에 참가자가 2명으로만 제한되고, 유저 프로필 사진도 2명분만 표시되었습니다.
해결: 코드 로직을 검토한 결과, 채팅방 생성 시 참가자 수를 제한하는 조건이 잘못 설정되어 있었습니다. 해당 조건을 수정하여 모집된 모든 참가자가 채팅방에 참여할 수 있도록 수정했습니다.
문제 2: 모집 완료 후 손들기 수락 불가 처리
현상: 모집이 완료되어 채팅방이 생성된 이후에도 방장이 손들기 수락을 할 수 있었습니다.
해결: 손들기 수락 API를 수정하여 모집이 완료된 이후에는 수락이 불가능하도록 로직을 추가했습니다. 모집 완료 여부를 확인하는 조건문을 추가하여 이 문제를 해결했습니다.
문제 3: 방장의 손들기 거절 기능 추가
현상: 방장이 손들기 요청을 거절할 수 있는 기능이 없었습니다.
해결: 새로운 API를 생성하여 방장이 손들기 요청을 거절할 수 있도록 했습니다. 거절 시 알림 목록에서 해당 알림이 삭제되도록 구현했습니다.
문제 4: 조기 마감 기능 추가
현상: 방장이 인원이 다 차지 않더라도 현재 모집된 인원만으로 채팅방을 생성할 수 있는 기능이 필요했습니다.
해결: 조기 마감 API를 생성하여 방장이 모집 인원에 상관없이 채팅방을 생성할 수 있도록 했습니다. 조기 마감 시 모집글의 상태를 업데이트하고, 현재까지 수락된 참가자들과 채팅방을 생성하도록 구현했습니다.
문제 5: 손들기 중복 요청 방지
현상: 동일한 사용자가 동일한 모집글에 손들기를 여러 번 요청할 수 있었습니다.
해결: 손들기 요청 시 기존에 요청한 내역이 있는지 확인하는 로직을 추가하여 중복 요청을 방지했습니다.
문제 6: Authorization 토큰 처리 방식 개선
현상: 모든 요청에서 Authorization 토큰을 파라미터로 전달해야 했습니다.
해결: HTTP 헤더의 Authorization 필드를 활용하도록 전체 API를 수정했습니다. 이를 통해 프론트엔드에서의 작업 효율성을 높였습니다.
문제 7: 채팅 등록 시 요청 방식 변경
현상: 채팅 내용을 Request Body가 아닌 Query Parameter로 받아야 했습니다.
해결: 채팅 등록 API를 수정하여 채팅 내용을 Query Parameter로 받을 수 있도록 변경했습니다.
다음주에 2편에서 추가 문제 해결과 채팅 코드 구현에 대해서 글을 작성하겠습니다.
'코딩 도구 > 프로젝트 & 경험 (Projects & Experiences)' 카테고리의 다른 글
CoLabor : 리뷰 등록 API 개발 과정 (1) | 2024.12.09 |
---|---|
Togather : 추가 문제 해결과 채팅 코드 구현 (2) (2) | 2024.12.03 |
AI 메이커톤 & INDAI 콜로키움을 다녀와서 (2) | 2024.11.18 |
CoLabor : AI 법률 챗봇 파인튜닝 : 외국인 노동자를 위한 법률봇 개발 과정 (5) | 2024.11.11 |
2024 공개SW 개발자 대회: 교수님의 멘토링에서 얻은 인사이트 (2) | 2024.11.03 |