본문으로 건너뛰기
포트폴리오 목록으로
React NativeNext.jsNode.jsMySQLRedis

LocalMart — 지역 소상공인 O2O 플랫폼

기여도
95%
기간
5개월
LocalMart — 지역 소상공인 O2O 플랫폼 프로젝트 화면

프로젝트 개요

지역 소상공인의 디지털 전환을 지원하는 O2O(Online to Offline) 플랫폼입니다. 고객용 앱(상품 탐색, 예약, 결제)과 사장님용 앱(재고/주문 관리), 웹 어드민(정산, 통계)을 동시에 개발했습니다. 40개 이상의 지역 상점이 입점하여 월 500건 이상의 거래를 처리하고 있습니다.

상세 기술 스택

  • React Native (Expo) — 고객/사장님 앱
  • Next.js 14 — 웹 어드민
  • Node.js (Express) — API 서버
  • MySQL 8 + Prisma ORM
  • Redis (세션, 캐싱)
  • Toss Payments
  • GitHub Actions
  • PM2 + Nginx

기술적 문제 해결 과정

Problem 1

사장님이 재고를 '0'으로 설정했음에도 고객 앱에서 '재고 있음'으로 표시되는 문제. MySQL 레플리카 지연(평균 800ms~2s)으로 인한 Read Replica 정합성 문제였습니다.

Solution

재고 관련 읽기 쿼리를 Primary DB로 강제 라우팅하고, 재고 변경 이벤트 발생 시 Redis 캐시를 즉시 무효화(Cache Invalidation)하도록 수정했습니다.

Result

재고 불일치 문제 100% 해소, 사장님 CS 문의 주 15건 → 0건.

Problem 2

인기 상점 상품 목록 API가 점심 피크 타임에 RPS 200을 넘기며 MySQL Connection Pool 고갈 발생. 일부 요청이 타임아웃으로 실패했습니다.

Solution

Redis 캐싱 레이어를 도입하여 상품 목록 응답을 60초 TTL로 캐싱. 동일 요청이 폭증할 때를 대비해 Stampede 방지를 위한 Probabilistic Early Expiration 알고리즘을 적용했습니다.

Result

피크 타임 에러율 12% → 0%, API 응답 시간 중앙값 320ms → 18ms.

유사한 프로젝트가 필요하신가요?

무료 상담을 통해 견적과 일정을 확인하세요.

프로젝트 문의하기