재상영 영화 크라우드 펀딩 서비스
- “다시 보고 싶은 영화를, 영화관에서”
영화를 한 번 이상 보는 N차 관람에서 출발하여 펀딩의 요청부터 대관, 영화 재상영까지 어어질 수 있는 서비스를 제공합니다.
기술 | 선정 이유 |
---|---|
Spring Boot | Spring과 비교했을 때 환경 설정을 쉽게 할 수 있어서 개발 생산성 증가 |
MySQL | 구조화 된 데이터 관리 및 오픈 소스 라이센스를 따르기 때문에 무료 사용 가능 |
Docker | 컨테이너 기반으로 여러 서버들을 쉽게 관리 |
Redis | 캐싱 및 분산락 구현을 위한 사용 |
ELK | 실시간 인기 순위 구현 시 검색 성능 최적화를 위해 사용 |
Prometheus | 매트릭 수집 |
Grafana | Prometheus로 수집한 매트릭 데이터를 시각화 |
- 소셜로그인을 이용한 간편로그인

- 정렬을 이용한 영화목록 조회 !
- Infinite Scoll을 이용한 빠른 영화목록 제공 !

- 무딩중, 무딩 요청 랭킹으로 현재 진행중인 펀딩과 펀딩요청이 많은 순위 제공!!
- 참여하고 싶다면 시간, 날짜 확인 후 가능하면 참여하기! 펀딩성공하면 영화상영 오픈!
- 터치 한 번에 결제 끝! 토스페이먼츠
API
를 이용한 쉽고 빠른 결제!

- 아직 펀딩이 열리지 않았다면 원하는 장소와 시간을 고르고 요청하기!
- 200명 이상 요청시 내부심사 후 펀딩오픈!! 공유하면 펀딩 오픈 속도 UP!!


- 영화제목, 배우명을 이용한 검색기능 제공!
- ElasticSearch를 이용한 실시간 영화 검색 순위 확인까지!

- 좌석 오픈 날짜 확인하고 기다리기
- N명이 보고 있어요! 동시 접속자 수를 볼 수 있는 좌석 예매
- 자리 예매완료하고 모바일 티켓까지 GET !!


- MSA 기반의 Modern 아키텍처 및 DDD 중심 개발
- MSA에
HA
도입 및 확장 가능한 시스템을 설계 - ElasticSearch 및 Redis를 활용해 1시간 단위로 실시간 랭킹 업데이트
- Redisson 분산락 AOP를 이용한 결제 및 좌석 예매 동시성 제어
- 서비스
DB
와 결제DB
분리를 통한 보안 향상 - transaction 처리 및
publisher
/subscriber
관련 구현 Proxy
에서WAS
단에 전달할 수 있는 Max Connection 제한멀티 모듈
구조로 공통 모듈 분리
Keep
- 민정: MSA 설계, Redis
HA
, 모니터링 구축, 운영 환경별로 스프링 프로필을 다르게 분리 - 승연: Git 컨벤션, 기술적으로 새로운 도전,
디버깅
사용 - 태윤: 공통(
컴포넌트
,API
,Type
)을 파일로 분리하여 재사용, 상태 관리 라이브러리 Recoil을 활용하여 필요한컴포넌트
에 변수 사용 - 자영: Jira, Git 컨벤션, 모듈화 사용, 타입사용
- 승경: Jira 컨벤션을 미리 정하여 번업 차트로 가지 않은 것, Git 컨벤션, MSA 설계,
디버깅
사용
Problem
- 민정:
mock data
를 대충 넣어서 문제 발생, 일부 코드(공통 에러 코드, 모듈 간 통신 시 요청DTO
및 응답DTO
) 중복 - 승연: 미흡한 예외 처리, 동적 쿼리 작성 시
디버깅
어려움, 반복되는 쿼리 수정 - 태윤: 사용하지 않는
import
나 변수 등을 지우지 않아 빌드 시 오류 발생 - 자영: 전체리스트에 대한 최적화 미흡
- 승경: 중간에
DB
설계 변경,API
문서화를 하지 않음, 중복 있는 로직 구현
Try
- 민정: 중요한 비즈니스 로직은 테스트 코드 작성하기
- 승연: Java
stream
,filter
,map
적극 사용하기 - 태윤: 사용하지 않는 것은 주석 처리 또는 바로 지우기
- 자영: react-query 캐싱처리 및 다른 기능 사용하기
- 승경:
Cache
적용 후 JMeter로 성능 테스트하기