안홍준
λ 500 NM · PLATFORM / APP
케이스 04 / 09English3D로 보기

문제

병·의원과 딜러가 검수된 중고 의료장비를 경매·직거래로 사고팔고, 이 플랫폼을 한·태 양방향 무역으로 넓힙니다. 입찰은 한꺼번에 몰릴 수 있습니다.

결정

  1. 경매 단위 advisory lock을 잡는 SECURITY DEFINER RPC 하나에서 판정·가격·마감·알림을 원자적으로 만들고, 최대 입찰가는 본인 전용 RLS 테이블에만 저장합니다.
  2. "두 사이트, 하나의 시스템" — 경매 사이트와 무역 사이트가 회원·관리자·상품등록·다국어·보안을 공유하는 구조로 내부 의견 충돌을 정리했습니다.
  3. 정렬 기준을 배지와 같은 실시간 계산식으로 바꿔, 저장된 할인율과 실시간 값이 어긋나지 않게 했습니다.

부서진 곳과 고친 방법

  1. 모든 페이지가 402로 멈췄습니다. 루트 레이아웃이 모든 URL에서 카테고리 127행과 경매 28행×35컬럼을 캐시 없이 조회해 하루 약 60만 REST가 나갔습니다. 한도만 풀면 다시 터지므로 코드부터 고쳤습니다.
  2. 예시 매물 60건이 마감 자동 연장 없이 한날 일괄 종료될 상황이었습니다. 마감 10분 전인 예시 로트만 7~14일 뒤로 미는 크론을 넣었고, 입찰·조회가 있는 로트는 건드리지 않습니다.

AI 지휘

Claude Code가 하단 탭 라벨이 안 보이는 것을 "캡처 착시"로 보고하자, 기각하고 재측정을 요구했습니다.

결과

  • 입찰 RPC 110 PASS / 0 FAIL — 동시성 20파도 · RLS 역검증 · 롤백 왕복
  • 게이트 25종 그린
  • 데스크톱 LCP 중앙값 1,151ms(Lighthouse 5회 중 4회 같은 요소)
  • 4개국어 번역 1,434키
  • 12대분류 × 65세부, 감사로 결함 130건 도출·원인별 분류
역할1인 풀스택
기간장기
상태정식 오픈 전
스택Next.js 16 · React 19 · Supabase · Realtime · pg_cron · Vercel