Skip to content
@Dealit-2026

Dealit-2026

배포링크 : www.dealit.site

팀 노션   |   시연 영상  

Main Repositories

Repository Description
Dealit 프로젝트 소개 및 문서
Backend Spring Boot Backend
Frontend Frontend Client
AI AI Recommendation Server

프로젝트 개요

Dealit은 AI 기반 실시간 중고거래 경매 플랫폼입니다. 사용자는 일반 중고거래 방식에서 발생하는 가격 책정의 어려움을 줄이기 위해 AI 가격 추천 기능을 활용할 수 있으며, 실시간 경매 시스템을 통해 시장 반응 기반의 합리적인 거래 가격을 형성할 수 있습니다.

또한 Redis Lua Script 기반 원자적 입찰 처리 구조와 SSE(Server-Sent Events) 기반 실시간 알림 시스템을 적용하여 동시 입찰 환경에서도 안정적인 경매 정합성을 보장하도록 설계하였습니다.

AI 추천, 실시간 경매, 검색 및 배포 인프라를 하나의 서비스 흐름으로 통합하여 실제 서비스 환경과 유사한 구조를 목표로 개발하였습니다.

핵심 기능

AI 기반 상품 분석 및 가격 추천

  • Gemini API 기반 AI 모델을 활용하여 상품 카테고리 및 예상 가격 추천
  • 사용자 입력 데이터를 기반으로 상품 등록 편의성 향상
  • FastAPI 기반 AI 서버와 Spring Boot 백엔드 연동

실시간 경매 시스템

  • SSE(Server-Sent Events)를 활용한 실시간 입찰 상태 반영
  • 최고 입찰가 및 경매 상태를 실시간으로 사용자에게 전파
  • Redis Pub/Sub 기반 이벤트 처리 구조 적용

Redis Lua Script 기반 동시성 제어

  • Redis Hash에 경매 상태를 저장하여 실시간 입찰 판단 처리
  • Lua Script를 통해 입찰 검증 및 최고가 갱신을 원자적으로 수행
  • 동시 입찰 상황에서도 데이터 정합성 보장

검색 기능

  • OpenSearch 기반 상품 검색 기능 구현
  • 상품명 및 키워드 기반 검색 지원
  • 검색 성능 향상을 위한 검색 엔진 분리 구조 적용

결제 및 예치금 시스템

  • 입찰 예치금 및 거래 금액 관리 기능 구현
  • 경매 종료 후 자동 정산 및 환불 처리 구조 설계
  • 트랜잭션 분리를 통한 안정적인 결제 흐름 관리

배포 및 운영 환경 구축

  • AWS EC2 기반 서비스 배포
  • Docker 및 Docker Compose 기반 컨테이너 환경 구성
  • NGINX Reverse Proxy 및 HTTPS 환경 적용
  • GitHub Actions 기반 CI/CD 자동 배포 구축

기술적 도전🧐

1. 실시간 경매 기능 구현

KakaoTalk_20260610_125158625
  • 실시간 경매 환경에서 동시에 여러 사용자가 입찰할 경우 현재가 조회, 입찰 금액 검증, 최고입찰자 갱신 과정 사이에 다른 요청이 개입하며 레이스 컨디션이 발생할 수 있었습니다.
  • 초기에는 DB 비관적 락으로만 설계를 해야하나 했지만, 입찰 요청이 몰리는 상황에서 락 점유 시간이 길어지고 응답 지연이 발생할 가능성이 있다고 판단하였습니다.
  • 이를 해결하기 위해 Redis Hash 기반으로 실시간 입찰 상태를 관리하고, Redis Lua Script를 활용해 종료 여부 확인, 최소 입찰 금액 검증, 최고 입찰자 갱신 과정을 원자적으로 처리하도록 설계하였습니다.
  • 이를 통해 현재가 검증과 최고입찰자 갱신 사이에 다른 요청이 개입하지 못하도록 하여 실시간 입찰 상태의 정합성을 안정적으로 보장할 수 있었습니다.

2. OpenSearch 인덱싱 지연으로 인한 상품 수정 API 응답 저하 개선

정상상태

OpenSearch 1s 지연상태 + 동기 처리

OpenSearch 1s 지연상태 + 비동기 처리

  • 상품명, 설명, 카테고리 등 검색 대상 데이터가 수정될 경우 PostgreSQL 원본 데이터와 함께 OpenSearch 검색 인덱스도 함께 갱신하고 있었습니다.
  • 기존 구조에서는 OpenSearch index/delete 요청이 상품 수정 API 요청 흐름 내부에서 동기적으로 처리되고 있어, OpenSearch 지연이 사용자 응답 시간에 직접 영향을 주는 문제가 있었습니다.
  • 실제로 OpenSearch 인덱싱에 지연이 발생하면 상품 수정 자체는 완료되었음에도 사용자는 API 응답이 늦어지는 현상을 경험할 수 있었습니다.
  • 이를 해결하기 위해 Spring Event 기반 비동기 이벤트 처리 구조를 적용하여 상품 수정 트랜잭션과 OpenSearch 인덱싱 작업을 분리하였습니다.
  • k6 부하 테스트 결과, OpenSearch 인덱싱에 1초 지연을 주입한 환경에서 상품 수정 API의 p95 응답 시간을 약 5.37초 → 59.6ms초 수준으로 개선하며 약 98.9%의 성능 개선을 확인하였습니다.

시스템 구조도

image

Pinned Loading

  1. Backend Backend Public

    Dealit 중고경매 어플의 백엔드 입니다.

    Java 1

  2. Frontend Frontend Public

    Dealit 중고경매 어플의 프론트엔드 입니다.

    TypeScript

Repositories

Showing 4 of 4 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…