- El artículo analiza la experiencia del autor gestionando el rendimiento de Postgres en una aplicación SaaS, donde la base de datos tenía dificultades para soportar la carga.
- El equipo del autor escaló verticalmente reemplazando la base de datos por una instancia más grande cada vez que estaba demasiado ocupada. Sin embargo, ya estaban usando la instancia más grande y estaban a punto de entrar en una situación de sobrecarga.
- Se propusieron dos posibles soluciones: hacer sharding de las escrituras en clústeres de bases de datos independientes y dividir el monolito en varios servicios conectados entre sí (microservicios).
- Ambas soluciones aumentarían la capacidad y ofrecerían opciones interesantes de tolerancia a fallas y resiliencia operativa, pero también incrementarían mucho la complejidad.
- El autor sostiene que el costo real de aumentar la complejidad es la atención, y que eso complica todas las decisiones técnicas posteriores.
- El autor sugiere que, antes de aumentar mucho la complejidad, por lo general existe la oportunidad de “exprimir” un poco más de rendimiento del sistema actual ajustando la carga de trabajo, afinando el rendimiento o complementando el sistema de alguna manera.
- En su caso, al optimizar consultas pesadas, ajustar la configuración de Postgres y descargar algunas consultas costosas de solo lectura a una base de datos réplica, redujeron el uso máximo semanal de CPU de la base de datos de 90% a 30%.
- El autor concluye que la complejidad es necesaria e inevitable, pero que es preferible posponer su aumento durante el mayor tiempo posible y primero exprimir al máximo el rendimiento del sistema existente.
1 comentarios
Opiniones de Hacker News