전체 글(203)
-
[니꺼, 내꺼] 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 -
[니꺼, 내꺼] 알림 기능 구현을 위한 학습
현재 프로젝트에서 '알림 기능' 을 구현할 필요가 생겼다. 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