▲GN⁺ 2023-09-25 | parent | ★ favorite | on: Postgres 큐 기술 선택(adriano.fyi)Hacker News 의견 Kafka의 간결함, 지속성, 고장 허용성이 인정받지만, 분산된 특성은 대부분의 사용 사례에서 복잡성을 더할 수 있다. Postgres 큐는 Redis 큐를 대체할 수 있지만, SQS 큐를 대체할 수는 없다. Postgres는 시스템이 가동된 이후 4억 이상의 이벤트를 처리하며, 하루에 약 100만 개의 이벤트를 처리하는 데 사용되었다. 일반 테이블을 사용하여 SELECT FOR UPDATE SKIP LOCKED를 사용하는 것은 모든 ORM/Query DSL 프레임워크에서 작동하는 간단한 접근 방식이다. LISTEN/NOTIFY를 사용하여 PostgreSQL을 pub/sub 버스로 사용하는 주요 단점은 LISTEN이 세션 기능이므로, 문장 수준의 연결 풀링과 호환되지 않는다. Postgres를 애플리케이션 큐로 사용하는 것은 트랜잭션성의 이점이 있어, 예약된 비동기 작업이 이로부터 혜택을 받는다. Postgres는 큐를 위해 확장할 수 있지만, AWS, GCP, Azure에서 SQS 또는 다른 큐 스택을 설정하는 것이 더 간단하고 목적에 맞게 제작되었다. Postgres는 github CI 인스턴스에서 1200jobs/s로 벤치마크를 실행하며, 추가 작업자를 통해 5000jobs/s로 확장되었다. Elixir의 Oban을 사용한 Postgres는 백그라운드 작업 주변의 트랜잭션 의미론이 편리하게 증명된 수십만에서 수백만 개의 작업을 일일이 처리하는 데 사용되었다. 47M 작업이 처리된 구현은 VACUUM을 위한 SKIP LOCKED, 지연된 작업, 재시도, 상태 업데이트, "적어도 한 번"과 같은 비싼 패턴을 구현하기 위한 인덱스가 있는 내구성 있는 저장의 이점을 강조한다.
Hacker News 의견