팀 프로젝트(12)
-
[니꺼, 내꺼] 키워드 알림 - 성능 테스트 (2)
1. 시작 현재 비동기 처리된 '키워드 알림 처리' 의 수행 속도가 '동일한 키워드를 갖는 회원수' 에 따라 느려지고 있어 최적화가 필요하다고 생각했습니다. 그 이유는 관심 키워드를 등록한 회원들에 대한 알림 정보를 저장과 전달을 완벽하게 동시에 할 수는 없어도 그 차이가 적어야 한다고 생각했기 때문입니다. 현재 프로젝트에는 특히 '나눔' 이라는 교환 서비스가 존재하는데 다른 회원보다 알림 정보를 늦게 받게 될 경우 이미 소진된다면 이 또한 사용자에게 불쾌한 경험이 될 수 있을거라 생각했기 때문입니다. 2. 테스트 내용 이전 게시글을 통해 추가해둔 테스트 정보를 활용할 생각이며, 현재 비동기 처리가 되어있는 TradeNotificationEventListener 클래스의 sendNotificationT..
2025.01.02 -
[니꺼, 내꺼] 키워드 알림 - 성능 테스트 (1)
1. 시작 현재 '키워드 알림 서비스' 의 경우 회원의 관심 키워드를 포함한 등록 물품명을 가진 등록물품으로 교환을 생성하게 되면 해당 키워드를 '관심 키워드' 로 등록한 모든 회원들에게 이벤트 정보를 전달하도록 구현되어 있습니다. 하지만 '동일한 키워드를 갖는 회원의 수' 가 많으면 많아질 수록 '교환 생성 요청' 의 수행시간이 길어져 서비스 사용자는 요청에 대한 응답을 받기까지 오랜 시간을 기다려야 합니다. 이는 사용자가 느끼기에 불쾌한 경험으로 이어질 수 있기에 사용자의 교환 생성 요청에 대한 응답을 빠르게 전달할 수 있도록 할 필요가 있습니다. 2. 테스트 내용 테스트용 회원 정보와 키워드 정보, 회원별 관심 키워드 정보를 생성해 교환 생성 요청후 응답을 받기까지의 시간을 확인하고자 합니다. '..
2024.12.30 -
[니꺼, 내꺼] 4주차 - 알림 개선에 Redis pub/sub 를 선택한 이유
1. 배경 현재 프로젝트에 구현된 '실시간 알림 서비스' 는 '단일 서버' 에서는 잘 작동하지만 '다중 서버' 환경에서는 원래 의도와는 다르게 작동할 것이라는 생각이 들었습니다. '다중 서버' 환경에 대해서 생각하게 된 이유는 하나의 서버로는 수 많은 사용자들에게 서비스를 제공하는 것에 무리가 있다 생각했기 때문입니다. 아무리 일 잘하는 은행원이 있어도 해당 은행원이 은행에 찾아오는 모든 고객들의 상대할 수는 없습니다. 그렇기에 여러 은행원들을 고용해 여러 창구를 열어 은행에 찾아오는 고객들에게 서비스를 제공합니다. 마찬가지로 웹 서비스 또한 아무리 성능이 좋은 서버가 있다고 한들 결국 물리적인 한계에 도달하기에, 같은 기능을 하는 서버 여러대를 두고 수 많은 사용자들을 상대해야 할 것 입니다. 2. 요..
2024.12.26 -
[니꺼, 내꺼] 3주차 - 왜, 추가 API 가 필요한가?
1. 배경 통합테스트 전 미리 서비스 흐름에 따라 API 테스트를 진행하던 도중 교환 생성 or 제안 생성(신청) 페이지에서 사용자에게 제공해야 할 사용가능한 등록 물품 목록 및 제안 물품 목록을 조회하는 기능이 필요하다는 것을 깨닫게 되었습니다. 2. 요구사항 사용자에게 교환 생성 or 제안 생성(신청)시 사용가능한 물품 목록을 조회하는 기능이 필요 3. 선택지 기존의 '물품 다건 조회 기능' 을 수정하여 요구사항을 만족하게 하거나 별도로 '사용 가능한 물품 다건 조회 기능' 을 구현하는 2가지 방법이 있습니다. 4. 의사결정/사유 선택지 중 별도로 API 를 구현하는 방법을 사용했습니다. 이러한 선택을 하게된 이유는두 기능이 사용 목적이 달라 응답해야 할 정보가 다름기존의 API 를 수정할 경우 당..
2024.12.20 -
[니꺼, 내꺼] 2주차 - 문제 해결 과정 설명
해당 게시글은 2주차에 '제안물품생성(등록물품→제안물품), 등록물품생성(제안물품→등록물품)' 기능을 구현하면서 마주한 문제를 해결한 과정을 작성한 글입니다. 1. 문제 인식 팀 회의에서 "사용자가 본인이 등록한 '제안물품' 을 바로 '등록물품' 으로(또는 '등록 물품' 을 '제안 물품으로') 변경할 수 있으면 어떨까?" 라는 의견이 나와 해당 기능을 구현할 때 "어? API URL 을 어떻게 작성하는게 좋을까?" 라는 생각이 들었습니다. 구현하고자 하는 기능에 '생성, 삭제' 라는 2가지 키워드가 들어가 있다보니 API URL 은 물론 코드 작성전에 이를 정리할 기준을 정할 필요성을 느꼈습니다. 2. 해결 방안 "등록물품(or 제안물품) 정보를 생성하는 또 다른 방식으로 보면 되지 않을까?" 라는 생각..
2024.12.13 -
[니꺼, 내꺼] 2주차 - 의사결정 과정 설명
해당 게시글은 2주차에 '알림' 이란 도메인 구현시 SSE 를 사용하게 된 과정을 작성한 글입니다. 1. 배경 현재 진행 중인 프로젝트는 '물물교환' 이 중심이기에 사용자에게 자신의 교환이 어떻게 진행되고 있는지 알릴 필요가 있다고 판단해 구현하게 되었습니다. 하지만 단순하게 사용자가 찾아가는 알림이 아니라 사용자가 접속해있다면 실시간으로 서버에서 알림 메시지를 전달해주는 것이 사용자 서비스 만족이 더 높을 거라 판단해 팀원들과 상의하에 '실시간 알림 전송' 이라는 부분도 해당 도메인 구현시 포함하게 되었습니다. 2. 요구사항 '물물교환' 의 상태가 변경되면 해당 행위를 이벤트로 보고 DB 의 NOTIFICATIONS 테이블에 저장해야하고 사용자가 접속해있다면 해당 이벤트 정보를 전달해주어야 합니다. 3..
2024.12.13