- Las colas con Postgres son buenas, pero no son la opción dominante debido a la idea generalizada de que otras tecnologías de colas ofrecen mayor escalabilidad
- Empresas como webapp.io eligieron colas con Postgres porque priorizan la simplicidad operativa, la facilidad de mantenimiento y la familiaridad por encima de la escalabilidad
- Componentes de la tecnología de colas con Postgres
- notificar y escuchar nuevos trabajos (
pub/sub) y exclusión mutua (row locks)
- estas dos funciones están disponibles desde Postgres 9.5, lanzado en 2016
- El autor rebate la percepción común en la industria de que usar Postgres de esta manera es un “hack” y sostiene que Postgres no es una tecnología de colas de segunda categoría
- Herramientas de colas como Redis, Apache Kafka, RabbitMQ y Amazon SQS han sido las elegidas tradicionalmente para procesar trabajos de larga duración
- Se critica la obsesión de la industria tecnológica con la “escala” y el sacrificio de la simplicidad, la mantenibilidad y la reducción de la carga cognitiva de los desarrolladores
- El autor propone que, al tomar decisiones tecnológicas, se considere la tecnología que ya se usa y se comprende bien
- Recomienda elegir una “tecnología aburrida” que ya esté en uso y sea bien entendida
- Se presenta el concepto de “construir una ruta de escape”, es decir, que el código de la aplicación para procesar trabajos debe ser independiente de la cola
- El autor concluye animando a otros a considerar la tecnología de colas con Postgres y a tomar como opción predeterminada una “tecnología aburrida”
1 comentarios
Opiniones de Hacker News
SELECT FOR UPDATE SKIP LOCKEDes un enfoque sencillo que funciona en todos los frameworks ORM/Query DSL.LISTEN/NOTIFYes queLISTENes una función de sesión, por lo que no es compatible con connection pooling a nivel de sentencia.SKIP LOCKEDparaVACUUM, trabajos diferidos, reintentos, actualizaciones de estado y "al menos una vez".