Personal · 라자봉

중복 신청과 운영 비용을 줄인 봉사활동 커뮤니티

봉사활동 모집과 신청 흐름에서 동시성 문제와 이미지 비용 문제를 함께 방어했습니다.

역할개인 프로젝트 전체 설계 및 구현
기간개인 프로젝트
기여서버 액션 검증, 이미지 압축, 운영 비용 관리
문제 유형Concurrency

01

문제와 배경

봉사활동 참여 신청 시 주최자에게 승인 요청이 가는 구조였습니다. 통신 지연, 버튼 연타, 마감 기한 경과, 모집 인원 초과가 동시에 얽히면 모집 상태와 사용자 액션이 불일치할 수 있었습니다.

02

중요하게 본 지점

신청 버튼을 막는 것만으로는 동시성 문제를 해결했다고 보기 어려웠습니다. 사용자는 빠르게 반응을 받아야 하지만, 최종 판단은 서버와 DB 기준으로 다시 확인해야 했습니다.

03

실행한 일

  1. 신청 버튼에 디바운스와 요청 중 클릭 제한을 적용했습니다.
  2. 클라이언트에서 마감 시간과 현재 인원을 먼저 확인하고, 서버 액션에서 DB 기준으로 한 번 더 검증했습니다.
  3. 업로드 전 이미지를 300KB 이하로 압축하고 Supabase Storage 직접 서빙 구조를 적용했습니다.
  4. 부적절한 텍스트는 클라이언트 제출 단계에서 정규표현식 기반으로 선제 차단했습니다.

04

결과

  • 중복 신청과 마감 후 신청 같은 잘못된 사용자 액션 케이스를 0건으로 방어했습니다.
  • 무료 티어 내에서 이미지 2,500건 이상을 처리할 수 있는 저장 구조를 마련했습니다.
  • 운영자의 사후 모니터링 부담을 줄이고 커뮤니티 품질 관리 기준을 만들었습니다.