피드로 돌아가기
What I learned shipping a 5-day auction marketplace in 30 days (Cloudflare Pages + Supabase)
Dev.toDev.to
Backend

월 $25 인프라로 30일 만에 구축한 Serverless 경매 시스템

What I learned shipping a 5-day auction marketplace in 30 days (Cloudflare Pages + Supabase)

Jason2026년 4월 29일7intermediate

Context

빠른 MVP 출시를 위해 복잡한 서버 인프라를 배제한 초경량 아키텍처 지향. 초기 Client-side 연산 방식의 입찰가 계산으로 인한 확장성 한계와 Realtime 구독 범위 설정 오류로 인한 Disk I/O 부하 발생.

Technical Solution

  • Database Trigger를 통한 current_bid 컬럼 Denormalization으로 Read 부하 최적화
  • GREATEST 함수를 활용한 Trigger 로직 구현으로 데이터 입력 순서와 무관한 Monotonic Timestamp 보장
  • RLS(Row-Level Security) 기반의 Direct Database Access 설계로 API 레이어 제거
  • SECURITY DEFINER RPC를 도입하여 권한 상승이 필요한 서버 사이드 로직을 DB 내부에서 처리
  • Realtime Publication 대상 테이블을 최소화하여 WAL(Write Ahead Log) 디코딩 오버헤드 감소
  • pg_cron을 통한 내부 스케줄링으로 외부 Cron Runner의 의존성 및 실패 지점 제거

1. Supabase Realtime 사용 시 불필요한 테이블을 Publication에서 제거하여 I/O 부하 확인

2. 서버리스 환경의 주기적 작업은 외부 도구보다 DB 내부 스케줄러(pg_cron) 우선 검토

3. 보안이 중요한 업데이트 로직은 RLS를 우회하는 SECURITY DEFINER 함수로 캡슐화

4. 실시간 대시보드 구현 시 Aggregation 쿼리 대신 Trigger 기반의 Summary 테이블 활용

원문 읽기