Una tienda de comercio electrónico está utilizando SQLite como su sistema de producción, una elección facilitada por Rails 8, lo que simplifica las implementaciones y elimina la gestión de servidores de bases de datos. La configuración implica cuatro bases de datos SQLite (principal, caché, cola y cable) dentro de un único volumen Docker compartido. Si bien WAL (Write-Ahead Logging) permite una gestión eficiente de la concurrencia, un incidente reciente reveló una vulnerabilidad: durante implementaciones rápidas y superpuestas, se perdieron dos pedidos a pesar de que los pagos se procesaron correctamente a través de Stripe. Esto ocurrió debido a la contención de escritura en el archivo WAL cuando múltiples contenedores intentaron escribir simultáneamente. La solución fue simple: reducir la frecuencia de las implementaciones y agrupar los cambios. El incidente destaca una limitación de SQLite en entornos con implementaciones rápidas y múltiples escritores, en comparación con sistemas como PostgreSQL. A pesar de esto, la empresa considera que SQLite sigue siendo una opción valiosa para implementaciones de servidor único con un volumen de escritura moderado, ofreciendo simplicidad y facilidad de gestión, aunque con la comprensión de que la migración a PostgreSQL será necesaria a medida que crezcan las necesidades de escalabilidad.
