El dilema de la tala
Los registros pueden ser nuestro salvavidas cuando las cosas salen mal. Para resolver un problema, debemos reproducirlo y el registro de depuración puede ser invaluable. Pero hay un problema: los costos. A medida que las aplicaciones crecen, también lo hacen los costos de ingesta y almacenamiento de nuestros registros, y esto nos obliga a tomar una decisión entre registrar muy poco para ser útil o pagar por registros que no estamos usando.
Thom Shutt una vez argumentó a favor de registrar solo errores , sugiriendo que se descartaran los niveles de advertencia, información y depuración. ¿Su fundamento? La dificultad de cambiar los niveles de registro en producción:
Desechar niveles: ¿Cuándo fue la última vez que ejecutó Producción en algo que no fuera Información? ¿Cambiar de nivel es un proceso rápido que todos en el equipo saben cómo hacer?
Y, de hecho, la mayoría de nosotros no cambiamos los niveles de registro con frecuencia porque requiere una confirmación, una compilación y una implementación. Si cambiar el nivel de registro es un proceso tedioso, estas líneas adicionales se convierten en mero ruido.
El poder de la configuración dinámica
Ingrese a la configuración dinámica. Si bien es posible que muchos no estén familiarizados con él, quienes lo han adoptado no pueden imaginar la vida sin él. A diferencia de la configuración estática, donde las aplicaciones leen un archivo de propiedades o una variable de entorno, la configuración dinámica es, como su nombre indica, dinámica.
Ofrece la posibilidad de establecer nuevos valores a través de una interfaz de usuario, lo que garantiza que cada evaluación recupere la última versión.
Esta tecnología es la columna vertebral del registro dinámico. Al almacenar el mapeo Logger -> LogLevel en nuestro sistema de configuración y actualizar el registrador en función de los cambios, podemos pasar de advertir a depurar en milisegundos, no en horas.
Presentamos Prefab: El futuro de la tala
Prefab está revolucionando la forma en que abordamos la tala. Con Prefab, puedes:
- Cambios de nivel de registro en tiempo real : ajuste los niveles de registro sobre la marcha. No es necesario esperar a que se reinicie el servidor. Cambia y listo.
- Registro dirigido : el registro dirigido de Prefab le permite ver registros de depuración para un solo usuario, transacción o zona de disponibilidad, lo que mejora la precisión y reduce el ruido. Prefab le permite centrarse en el código, el trabajo o incluso en un usuario específico relevante.
- Integración con sistemas existentes : Prefab no es otra herramienta de registro. Se integra perfectamente con su proveedor de registro existente, ya sea DataDog, Sumo Logic o una pila ELK.
Ahorrar dinero al iniciar sesión
Los costos de la tala aumentan a gran escala y están todos ligados al volumen. Los agregadores están ofreciendo nuevas formas de intentar reducir este gasto, como Log Without Limits de Datadog, y Cribl es básicamente una empresa entera dedicada a este problema.
Pero todas estas soluciones le cobran según el uso. Al final del día, todavía estás pagando por los registros que envías.
Debido a que sus registros no pasan a través de Prefab, no se cobra según el volumen de registros, sino simplemente por ofrecer la configuración dinámica a sus servidores. Prefab simplemente controla los valores de un filtro, asegurando que solo registre lo necesario. Este enfoque puede generar ahorros significativos, especialmente para aplicaciones a gran escala.
Redefiniendo la cultura maderera
Adoptar el registro dinámico no se trata sólo de utilizar una nueva herramienta; es un cambio cultural. Al principio, puede parecer desalentador. Pero a medida que los equipos se acostumbran al poder del registro dirigido, se fomenta una mentalidad operativa más sólida. Los desarrolladores ahora pueden pensar: "Si esto sale mal, ¿qué información querría?" y prepararse en consecuencia.
Por ejemplo, considere este fragmento de código:
def charge(user, amount) balance = get_balance(user) min_balance = get_min_balance(user) do_charge = balance > min_balance logger.debug("charge decision", charge: do_charge, amount: amount, balance: balance, user_id: user.id, min_balance: min_balance) if do_charge charge_user(user, amount) else end
Anteriormente, muchos habrían visto la línea logger.debug
como mero ruido de desarrollo. Pero con el registro dinámico, estas líneas se convierten en herramientas invaluables, listas para activarse cuando sea necesario.
Conclusión
El panorama de la tala está experimentando un cambio sísmico. Con herramientas como Prefab , los desarrolladores ya no tienen que elegir entre registros detallados y rentabilidad. El registro dinámico ofrece lo mejor de ambos mundos, proporcionando información cuando es necesaria sin el elevado precio asociado.
¡Feliz depuración! 🚀