Backend·0 views·2026. 7. 4.
트랜잭셔널 아웃박스로 이벤트 유실 막기: dual-write 문제와 데드레터 격리
DB 커밋과 이벤트 발행이 따로 노는 dual-write 문제를 아웃박스 테이블과 지수 백오프 재시도, 데드레터 격리로 막은 실제 NestJS 구현 회고.

tag/PostgreSQL
7개
DB 커밋과 이벤트 발행이 따로 노는 dual-write 문제를 아웃박스 테이블과 지수 백오프 재시도, 데드레터 격리로 막은 실제 NestJS 구현 회고.

입찰 마감 탭 목록이 9초 걸리던 원인을 EXPLAIN으로 두 곳으로 좁히고, covering 인덱스로 Index Only Scan(9,367ms→15.95ms)과 bucket pagination lazy count로 count 3발을 1발로 줄인 회고입니다.

Pinecone 같은 전용 벡터DB를 새로 붙이지 않고, 이미 쓰던 PostgreSQL에 pgvector·HNSW만 얹어 사내 지식 RAG 어시스턴트를 만든 실전 회고. Gemini 임베딩 768차원, 함수콜 에이전트, JOIN 검색, 유사도 컷 튜닝까지.
Supabase Client와 전통적 쿼리 빌더가 통신 프로토콜부터 보안 모델까지 어떻게 다른지 비교합니다.
Prisma에서 임베디드 엔티티 대신 1:1 관계와 JSONB 타입으로 복합 객체를 다루는 방법을 비교합니다.
Supabase의 anon key 노출 위험을 RLS(행 수준 보안) 정책으로 막는 원리와 실무 패턴을 정리합니다.
Supabase와 PostgreSQL의 관계를 이해하고, SQL 직접 사용과 Prisma ORM 활용을 비교해 프로젝트에 맞는 데이터베이스 전략을 고르는 기준을 정리합니다.