MySQL(52)
-
[니꺼, 내꺼] 키워드 알림 - 성능 테스트 (2)
1. 시작 현재 비동기 처리된 '키워드 알림 처리' 의 수행 속도가 '동일한 키워드를 갖는 회원수' 에 따라 느려지고 있어 최적화가 필요하다고 생각했습니다. 그 이유는 관심 키워드를 등록한 회원들에 대한 알림 정보를 저장과 전달을 완벽하게 동시에 할 수는 없어도 그 차이가 적어야 한다고 생각했기 때문입니다. 현재 프로젝트에는 특히 '나눔' 이라는 교환 서비스가 존재하는데 다른 회원보다 알림 정보를 늦게 받게 될 경우 이미 소진된다면 이 또한 사용자에게 불쾌한 경험이 될 수 있을거라 생각했기 때문입니다. 2. 테스트 내용 이전 게시글을 통해 추가해둔 테스트 정보를 활용할 생각이며, 현재 비동기 처리가 되어있는 TradeNotificationEventListener 클래스의 sendNotificationT..
2025.01.02 -
[니꺼, 내꺼] 키워드 알림 - 성능 테스트 (1)
1. 시작 현재 '키워드 알림 서비스' 의 경우 회원의 관심 키워드를 포함한 등록 물품명을 가진 등록물품으로 교환을 생성하게 되면 해당 키워드를 '관심 키워드' 로 등록한 모든 회원들에게 이벤트 정보를 전달하도록 구현되어 있습니다. 하지만 '동일한 키워드를 갖는 회원의 수' 가 많으면 많아질 수록 '교환 생성 요청' 의 수행시간이 길어져 서비스 사용자는 요청에 대한 응답을 받기까지 오랜 시간을 기다려야 합니다. 이는 사용자가 느끼기에 불쾌한 경험으로 이어질 수 있기에 사용자의 교환 생성 요청에 대한 응답을 빠르게 전달할 수 있도록 할 필요가 있습니다. 2. 테스트 내용 테스트용 회원 정보와 키워드 정보, 회원별 관심 키워드 정보를 생성해 교환 생성 요청후 응답을 받기까지의 시간을 확인하고자 합니다. '..
2024.12.30 -
[니꺼, 내꺼] 알림 기능 구현을 위한 학습
현재 프로젝트에서 '알림 기능' 을 구현할 필요가 생겼다. Spring 에서 '알림 기능' 을 구현하는 방법에 대해 찾아보았는데 그 내용이 적지가 않아 찾아본 정보와 어떠한 방식을 선택하게 되었는지 정리해보려 한다. 0. 대략적인 목표 우선 구현하고자 하는 '알림 기능' 은 사용자에게 '실시간으로 서버의 변경 사항' 을 웹 브라우저에 갱신해주는 서비스이다. 가령 해당 프로젝트의 주 목적인 '물물 교환' 에 대한 상태가 변경되었다면 사용자에게 교환 상태 변경에 대한 알림을 실시간으로 알려주는 것이다. 물론 대략적인 목표로 실제 팀 프로젝트에 적용전에는 좀 더 명확한 목표나 기준을 설정할 필요가 있다. 1. 실시간 통신 방법 파악 해당 프로젝트는 '웹 애플리케이션' 을 구현하는 것이므로 'HTTP 통신' ..
2024.12.09 -
[니꺼, 내꺼] 5분 기록 테이블
최종 프로젝트간 사용할 '5분 기록 테이블(보드)' 을 기록하는 게시글입니다. 프로젝트를 진행하면서 어떠한 부분을 책임지고 구현/작성했는지, 어떤한 문제를 마주해서 어떻게 해결했는지 간략하게 기록하기 위해 작성하게 되었습니다. 최종 팀 프로젝트의 5분 기록 테이블은 아래와 같은 정보로 작성됬습니다.분류 : 기획, 기능 구현, 트러블 슈팅, 오류 해결, 리팩토링, 테스트 작성 등 작업의 분류를 작성기능 : 기획을 제외한 분류일 경우 어떤 기능(API)에 대한 작업인지, 작업 대상 기능을 작성기록 : 작업 내용을 간략하게 작성날짜 : 작업 날짜(또는 기간) 작성링크 : 작업한 내용에 대한 블로그 게시물 또는 Github 커밋 내역을 링크분류기능기록날짜링크프로젝트 기획-프로젝트 기획(요구사항 정의서, 와이어프..
2024.12.04 -
[Able - shopping mall] DB vs Cache 성능 테스트
프로젝트간 구현한 '상품 검색 조회' 요청을 검색어를 DB 에 저장하는 것 하나, Cache 에 저장하는 것 하나 총 2개를 작성하였다. 두 요청의 부하 테스트를 진행해 과연 성능 개선이라는 것이 어느정도 차이가 있는지 확인해 보았다. 부하 테스트는 Jmeter 를 사용했으며 1초에 50번의 부하를 100번 반복하는 것으로 부하를 설정하였다. 1. GET /api/products/search-v1 2. GET /api/products/search-v2 3. 결과 DB에 검색어를 저장하는 경우 1초에 100개의 요청을 처리할까 말까였지만 Cache 에 검색어를 저장하는 경우에는 1초에 수백건의 요청을 처리하는 것을 볼수 있었다. 이 때까지 말로만 혹은 글로만 "Cache 를 활용하면 성능 개선을 꾀할 ..
2024.11.29 -
[Able - shopping mall] 5분 기록 테이블
이번 과제는 '동시성 제어' 와 '캐싱' 이 목표인 미니 팀 프로젝트로 나의 경우 '캐싱' 에 대한 요구사항을 맡게 되었으며, 추가적으로 주문 및 상품에 관한 일부 CRUD 구현 또한 맡게 되었다. 이번 팀 프로젝트의 5분 기록 테이블을 작성한다. 프로젝트의 성격에 맞추어 테이블에는 아래와 같은 정보를 작성했다.기능 : 작업한 기능을 작성기록 : 작업 내용을 간략하게 작성분류 : 구현, 트러블 슈팅, 오류 해결, 리팩토링(코드수정), 테스트 작성/수정 등 작업의 목적을 작성날짜 : 작업 날짜 작성링크 : 작업한 내용에 대한 블로그 게시물 또는 Github 커밋 내역을 링크기능기록분류날짜링크-프로젝트 발제 내용을 확인 후 팀원과 기획서 작성프로젝트 기획2024.11.22Team Notion주문 요청회원이 ..
2024.11.25