Postgres 워크플로우 엔진 구축, Temporal 없이 내구성 잡는 법
Temporal 붙이기 전에 Postgres로 어디까지 되는지 궁금해서 직접 짜봤다. SKIP LOCKED 한 줄이 절반 이상을 해결해줬고, 나머지는 트랜잭션 경계를 잘 긋는 문제였다.
Temporal 붙이기 전에 Postgres로 어디까지 되는지 궁금해서 직접 짜봤다. SKIP LOCKED 한 줄이 절반 이상을 해결해줬고, 나머지는 트랜잭션 경계를 잘 긋는 문제였다.
코드 리뷰에서 f-string으로 조립된 SQL 쿼리를 본 적이 있다. SQL Injection 방지 실전을 parameterized query, ORM, 입력 검증 세 축으로 정리한다. Python과 Node.js 예제 기반.
5천만 행 주문 테이블이 점점 느려졌다. 인덱스 문제인 줄 알고 한 달을 헤맸는데 범인은 autovacuum이었다. 파라미터를 어떻게 잡았는지 시간순으로 풀어본다.
PostgreSQL 커넥션 풀 설정으로 PgBouncer를 도입했다가 Transaction 모드에서 prepared statement 충돌을 만났다. 3개월 동안 어떻게 잡았는지 시간순으로 풀어본다.
Redis를 캐시로 도입할 때 흔히 저지르는 실수와 Cache-Aside, Write-Through, TTL 설계 기준을 실무 관점에서 정리한다. 캐싱 전략 없이 Redis를 붙이면 오히려 장애 원인이 된다.
프론트엔드에서 백엔드로 전환한 지 2년. 벡터 검색이 필요해졌을 때 별도 벡터 DB를 붙일지 PostgreSQL pgvector로 해결할지 고민했고, pgvector를 선택한 뒤 겪은 설정·인덱싱·쿼리 최적화 과정을 기록한다.
PostgreSQL과 MySQL 중 뭘 골라야 하는지, JSON 쿼리 성능·확장성·AI 인프라 연동까지 직접 써보고 비교한 기록이다. 통념과 다른 부분이 꽤 있었다.
GraphQL resolver 구조 때문에 주문 20건 조회에 SELECT가 62개 실행되는 상황을 겪었다. DataLoader를 적용해 쿼리를 4개로 줄인 전체 과정과 실무에서 빠지기 쉬운 함정, 운영 체크리스트를 다룬다.