Skip to content

leeseunghee00/pov-backend

 
 

Repository files navigation

POV: Point Of View

본 리드미는 본인(이승희)이 기술적으로 기여한 기능 중심으로 작성되었습니다.
개발기간: 2024.11.12 ~ 2024.12.19 (6주)

image 🔗 Click! POV 발표 영상 보러가기

Contents.


Intro.

영화의 다양한 관점을 공유하는 플랫폼 POV 에서 담당한 기능은 다음과 같습니다:

  • 시사회 응모 및 결제
    • 일정 시간에 열리는 한정된 인원의 영화 시사회에 응모 및 결제할 수 있습니다.
  • 영화 리뷰 조회
    • 모든 영화의 리뷰 목록과 상세 정보를 조회할 수 있습니다.
    • 자신이 작성한 리뷰 목록과 상세 정보를 조회할 수 있습니다.
    • 가입한 클럽별 리뷰 목록과 상세 정보를 조회할 수 있습니다.
  • 관리자 기능
    • 좋아요 관리: 일일 단위로 하루에 좋아요를 가장 많이 받은 상위 10개의 영화와 좋아요 수를 조회할 수 있습니다. 해당 데이터는 큐레이션을 생성하는 데 참고 자료가 됩니다.
    • 리뷰 관리: 백오피스에서 리뷰 검색을 통해 특정 리뷰를 숨김 처리하여 리뷰를 관리합니다.
  • 시사회 CRUD
    • 관리자는 영화 시사회를 CRUD 할 수 있습니다.
    • 사용자는 영화 시사회 조회할 수 있습니다.

Documents.


Stack.

image

SW Architecture.

image


Challenges & Solutions.

1. Redisson 분산 락을 적용한 트랜잭션 충돌 해결

문제: 시사회 응모는 선착순으로 진행되는데, 수 천/만 명이 동시 접속 시 트랜잭션 충돌로 인한 데이터 정합성 깨짐
관련 문서: 선착순 응모 시스템의 DB 정합성 보장을 위한 트러블 슈팅


해결 방안

  • 응모부터 결제까지의 구간에 Redisson 기반 분산 락을 적용하여 동시성 제어 및 데이터 정합성 보장
  • 결제 실패 시, ExponentialBackOffPolicy 전략을 통해 최대 3회까지 재시도
  • 모든 실패는 로그로 기록하고, 슬랙 알림을 통해 실시간 오류 대응 가능
image

1-1. 테스트 진행

시나리오: 선착순 100명 대비 1,000명의 동시 응모 요청
목표: 100건의 응모 데이터 저장 & 최소 500 TPS 보장

  • 분산 락의 동시성 제어 안정성을 검증하기 위해 별도의 테스트 프로젝트(fcfs-entry-test)에서 시나리오 기반 테스트를 진행
  • DB Lock, Redis Lua Script 등 다양한 동시성 제어 방식을 비교 및 검토
  • 테스트 도구: JMeter, nGrinder

1-2. 테스트 결과

아래 결과는 일부 Redisson 과 Lua Script 의 테스트 결과입니다. 자세한 내용은 관련 문서를 참고하세요!

  1. Redisson 결과
    • TPS 160~200 사이를 유지
    • 에러 발생 없이 데이터 정합성 보장
    • 두 결과 평균 응답 시간은 4.5s 로 느린 편

image image

  1. Lua Script 결과
    • TPS 470~865 사이를 유지, 목표 TPS 충분히 달성
    • 에러 발생 없이 데이터 정합성 보장 & 완만한 TPS 제공으로 안정성 확보
    • 두 결과 평균 응답 시간은 1.3s 로 양호한 편

image
image


2. 안전한 결제 처리를 위한 아키텍처 설계

문제: 결제 과정에서 발생할 수 있는 예외 상황(ex. 중복 결제, 결제 실패)에 대한 대응 필요
관련 문서: 안전한 결제 서비스를 제공하기 위한 고민들

해결 방안

  • 중복 결제 방지: 응모 요청 시 멱등키를 생성하여 결제 요청 시 헤더에 포함. TTL을 설정을 통해 중복 처리 차단
  • 결제 실패 대응: ExponentialBackOffPolicy 전략을 활용해 최대 3회 재시도
  • 모니터링 및 알림: 재시도 실패 시 에러 로그 기록 및 슬랙 알림으로 실시간 대응 체계 구축

image

About

LG U+ 유레카 1기 백엔드 비대면 융합 프로젝트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.4%
  • Other 0.6%