힘전소

2024.07 - 2025.02

휠체어 사용자를 위한 전동보장구 충전소 정보 / 커뮤니티 서비스

Spring Boot 3.2 MySQL Redis AWS S3 Docker CloudWatch / Lambda JPA / QueryDSL

핵심 성과

7,545ms → 1,212ms 파일 업로드 평균 응답 시간, 약 6배 단축 S3 Presigned URL + 이미지 API 분리
171초 → 1.3초 50명 동시 업로드 평균 시간, 약 130배 단축 서버 I/O 제거로 동시성 병목 해소

아키텍처

힘전소 아키텍처 다이어그램

주요 구현 내용

  • S3 Presigned URL 도입: 이미지 / 게시글 API 분리 후 클라이언트가 S3에 직접 업로드하도록 변경해 서버 I/O 부하를 근본 제거. 파일 업로드 평균 응답 7,545ms → 1,212ms (약 6배 단축)
  • 동시 업로드 병목 해소: 50명 동시 업로드 시 서버 I/O 경합이 사라져 평균 응답 171초 → 1.3초 (약 130배 단축)
  • 고아 이미지 자동 정리: CloudWatch Events + Lambda 스케줄러로 DB에 없는 S3 객체를 주기적으로 삭제, 스토리지 비용 낭비 방지
  • Cursor 페이지네이션 전환: Offset → Cursor 방식으로 무한 스크롤 성능 향상, 복합 커서(created_at + id)로 정렬 모호성 제거
  • QueryDSL 조회 레이어 분리: Repository를 조회 전용(QueryDSL)과 커맨드 전용(JPA)으로 분리해 복잡 조회 로직을 캡슐화하고 유지보수성 향상
  • 전역 예외 처리 통합: Enum 기반 에러 코드 체계 + @RestControllerAdvice로 일관된 에러 응답 보장

GitHub

jinho7/FIll_Energer_BackEnd_Server