Skip to content

kitechoi/dnd-12th-5-backend

 
 

Repository files navigation

PICKTORY Backend Repository 🎁

👉🏻 www.picktory.net 접속하기


📝 프로젝트 소개

KakaoTalk_Photo_2025-03-15-13-21-31 006

PICKTORY선물 후보에 대한 상대방의 생각을 확인할 수 있는 서비스입니다.

  • 사용자는 선물 보따리를 만들어 선물 후보(2~6개)와 메시지를 기록할 수 있습니다.
  • 보따리는 임시저장 또는 바로 생성이 가능하며, 링크를 통해 공유할 수 있습니다.
  • 링크를 받은 상대방은 선물 후보를 확인하고 응답을 남길 수 있습니다.
  • 응답을 통해 선물 고민의 과정을 줄이고, 더 좋은 선물을 선택할 수 있습니다.

KakaoTalk_Photo_2025-03-15-13-21-31 011
KakaoTalk_Photo_2025-03-15-13-21-31 010
KakaoTalk_Photo_2025-03-15-13-21-31 009
KakaoTalk_Photo_2025-03-15-13-21-31 008 KakaoTalk_Photo_2025-03-15-13-21-31 007

👥 프로젝트 팀원

  • 개발 기간: 2024.12 ~ 2025.02 (3개월)
  • 팀 구성: 6인 (백엔드 2, 프론트엔드 2, 디자이너 2)
  • 백엔드 팀 레포지토리: 👉🏻 백엔드 팀 레포지토리 보기

📜 API 문서

👉🏻 API 문서 보기


⚙ 기술 스택

Back-end

Java Spring Boot Spring Data JPA JdbcTemplate MySQL

Infra

AWS EC2 AWS S3 CloudFront Route 53 CloudWatch Nginx

DevOps & Tools

GitHub Actions Slack Notion


🛠️ 프로젝트 아키텍처

dnd-picktory-백엔드-아키-최종

🤔 기술적 이슈와 해결 과정

1. 트랜잭션 정합성 유지 및 REST API 트레이드오프

  • 보따리, 선물, 선물 이미지를 개별 API로 처리하면 네트워크 요청 증가 및 트랜잭션 관리 복잡성 발생.
  • REST 원칙을 일부 포기하고 한 번의 요청에서 보따리, 선물, 선물 이미지를 순차적으로 트랜잭션 처리.
  • 결과: API 호출 최소화 + 데이터 정합성 보장.

2. Batch Insert를 활용한 4배 성능 개선

  • JPA saveAll()이 개별 INSERT 실행 → 성능 저하 발생 가능.
  • JdbcTemplate batchUpdate() 활용하여 Batch Insert 실험 → 4배 성능 개선 가능성 확인.
  • 현재 서비스 규모에서는 필요성 낮아 향후 확장성을 고려한 옵션으로 유지.

About

선물을 보다 더 의미 있게 전달하기 위한 서비스

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%