경기요 - 경기대학교 주변 맛집 모음 [ 배포 링크 ] [ 프로젝트 깃허브 ] 이용자들이 직접 추천하고 싶은 맛집 정보 등록을 요청하고 등록된 맛집에 대한 평가가 이루어질 수 있는 맛집 지도 플랫폼입니다. 개요 이번 프로젝트 개발을 진행하면서 리뷰 작성 기능에 대한 동시성 테스트를 진행하였습니다. 리뷰 작성 기능의 경우 많은 트래픽이 순간적으로 몰리는 경우가 드물지만, 리뷰 작성 이벤트 등 특수한 요구사항이 등장한다면 동시 요청이 많아질 수 있기 때문에 이를 대비하고자 테스트를 진행하게 되었습니다. 성능 개선을 위한 테스트를 진행하면서 Deadlock 문제도 마주하게 되었는데, 이를 발견하고 해결해 나가는 과정에 대해서 다뤄보도록 하겠습니다! 사전 지식 우선 Deadlock이란 무엇인지 이해하기 위해 M..
Steady - 개발 스터디 및 프로젝트 인원 모집 사이트 [ 배포 링크 ] [ 프로젝트 깃허브 ] 자체적으로 제공하는 폼과 유저 평가를 통해 외부 서비스에 의존하지 않고 검증된 스터디 인원을 모집할 수 있는 서비스입니다. 개요 보통 위 이미지와 같이 숫자로 페이지를 표시하는 방식(네비게이션)에는 Offset 기반의 페이징 기법이 사용됩니다. Offset 기반의 페이징 방식은 대용량 데이터를 처리하는 데에는 한계가 있다는 단점이 있는데, 이런 한계에 가로막혀 네비게이션을 포기하고 서비스 요구사항을 변경하기엔 자존심이 상했습니다. 그래서 떠올린 방안은 바로 Cursor 기반의 페이징 기법에 네비게이션을 적용하자는 것이었습니다. Cursor는 보통 무한 스크롤 방식의 페이지를 구현하기 위해서 사용되지만, 저..
Steady - 개발 스터디 및 프로젝트 인원 모집 사이트 [ 배포 링크 ] [ 프로젝트 깃허브 ] 자체적으로 제공하는 폼과 유저 평가를 통해 외부 서비스에 의존하지 않고 검증된 스터디 인원을 모집할 수 있는 서비스입니다. 개요 steady 테이블은 `steady_stacks, steady_positions, steady_likes` 테이블과 일대다 관계를 맺고있습니다. 위 테이블들을 활용하여 필터링 및 검색 기능에 대한 구현을 앞두고 사용자 입장에서 페이지 방식과 무한 스크롤 방식 중 어떤 방식으로 응답을 받는 것이 좋을지에 대한 회의를 진행하게 되었습니다. 회의를 진행하며 나온 의견 중 “무한 스크롤 방식은 내가 봤던 글이 어디쯤에 있었는지 파악하기 어렵다” 라는 의견이 가장 많은 공감을 얻어 페이지..