- Filas com Postgres são boas, mas não são populares principalmente por causa da percepção geral de que outras tecnologias de fila oferecem maior escalabilidade
- Empresas como a webapp.io escolheram filas com Postgres por valorizarem mais a simplicidade operacional, a facilidade de manutenção e a familiaridade do que a escalabilidade
- Componentes de uma tecnologia de fila com Postgres
- notificar e escutar novos trabalhos (
pub/sub) e exclusão mútua (row locks)
- esses dois recursos estão disponíveis desde o Postgres 9.5, lançado em 2016
- O autor rebate a visão comum na indústria de que usar Postgres dessa forma seria um “hack” e argumenta que Postgres não é uma tecnologia de fila inferior
- Redis, Apache Kafka, RabbitMQ e Amazon SQS têm sido escolhidos como ferramentas de fila para lidar com trabalhos de longa duração
- O autor critica a obsessão do setor de tecnologia com “escala” e critica o sacrifício da simplicidade, da facilidade de manutenção e da redução da carga cognitiva dos desenvolvedores
- Ao tomar decisões técnicas, a sugestão do autor é considerar as tecnologias que você já usa e entende bem
- Ele recomenda escolher a “tecnologia chata” que já está em uso e é bem compreendida
- Introdução ao conceito de “construir uma rota de fuga”, que significa que o código da aplicação para processamento de tarefas deve ser indiferente à fila
- O autor conclui incentivando outras pessoas a considerar a tecnologia de fila com Postgres e a adotar a “tecnologia chata” como escolha padrão
1 comentários
Comentários do Hacker News
SELECT FOR UPDATE SKIP LOCKEDé uma abordagem simples que funciona em todos os frameworks ORM/Query DSL.LISTEN/NOTIFYpara utilizar o PostgreSQL como barramento pub/sub é queLISTENé um recurso de sessão, portanto não é compatível com pool de conexões em nível de instrução.SKIP LOCKEDparaVACUUM, jobs atrasados, retries, atualizações de estado e índices para implementar padrões caros como "pelo menos uma vez".