Untitled

🏗 아키텍쳐

Untitled

🔧 기술적 의사결정

사용 기술 기술 사용 이유
Redisson Lock 하나의 공유자원에 다수의 사용자가 동시에 접근할 때 발생할 수 있는 동시성 문제를 방지하기 위한 기술입니다.
데이터의 일관성과 무결성을 유지하며, 시스템의 안정성과 신뢰성을 보장합니다.
Redis는 싱글스레드이기 때문에 동시성 제어에 적합했고 이미 내부 구현체가 있어서 Lock을구현하기도 좋았습니다.
Redis cache In-memory 기반으로 매우 빠른 응답을 제공하기 때문에 인기 검색어와 자주 찾는 이벤트리스트를 읽고 쓰는데 사용하였습니다.
특히 다른 캐시 시스템에 비해 다양한 데이터 구조를 지원하기 때문에 복잡한 구조의 Entity를 사용하는 이번 프로젝트에서 데이터 처리가 유리한 점이 있었습니다.
추후 서비스가 커지면 Scale-out 의 측면에서도 클러스터링을 통해 안정적인 서비스 제공을 기대할 수 있습니다.
Social Login 소셜 로그인 사용시, 개인 정보를 입력하지 않아도 회원가입 및 로그인에 대 인증이 가능하여, 로그인 정보를 기억하지 않아도 편리하게 접근할 수 있어 서비스 접근성이 향상되어 사용자 경험을 향상시키게 됩니다.
QueryDSL QueryDSL 사용시, 컴파일 단계에서 조기에 오류를 발견할 수 있고 코드를 통해 작성하기 때문에, 복잡한 쿼리나 동적쿼리 작성이 편리하고, 객체 지향적으로 개발 가능하며, 협업시 무슨 기능을 하는지 읽기 쉽습니다.
Postgres Postgres는 ACID 트랜잭션을 지원하여 데이터의 일관성과 안전성을 보장하기 때문에 많은 이용자들이 동시에 접속하여 티켓을 예매하고 결제하는 과정에서 데이터 손실이나 일관성에 대한 우려를 줄일 수 있습니다.
또한 이용자 정보, 이벤트 정보, 예매 내역 등 다양한 데이터를 관리해야 하기 때문에 다양한 데이터 모델링을 지원하고 복잡한 쿼리를 수행할 수 있어 유리합니다.

🍀 주요 기능

Redisson을 이용한 동시성 제어 (테스트 코드, 테스트 조건, 결과 등등)

테스트 조건

  1. 총 스레드 개수는 100, 동시 실행 갯수 25
  2. 모든 createTicket은 좌석 R1으로 신청
  3. 성공 1 토탈 100이 나와야 함

🛠 트러블슈팅