15 herramientas que los desarrolladores Java deben usar tras la salida de una nueva versión - Educa Sistemas

Breaking

Post Top Ad

Post Top Ad

viernes, 4 de octubre de 2019

15 herramientas que los desarrolladores Java deben usar tras la salida de una nueva versión

El maletín definitivo de supervivencia para nuevas implementaciones

02 (1)
A diferencia de lo que ocurre al divertirse jugando con escenarios apocalípticos de zombis, debatiendo sobre si es más efectivo el machete o la escopeta, los problemas en los entornos de producción de Java son reales, y esto es particularmente cierto tras nuevas implementaciones (aunque igual es buena idea estar listo para los zombies). Yendo aún más allá, hoy en día es mucho más fácil que antes tener problemas pues los tiempos en que los códigos son realizados son reducidos a semanas, a veces días, e incluso varios en un día. Para evitar ser atropellado por los zombis, he aquí la configuración de tu maletín de supervivencia, necesario para entender el impacto del nuevo código en tu sistema. ¿Algo falló? ¿Te está enlenteciendo? ¿Y cómo resolverlo? A continuación: el conjunto de herramientas y la arquitectura que precisas para presionar el acelerador de una vez por todas.

Logs

En vez de reducir las fases de desarrollo, otra característica de la programación moderna es la de expandir indefinidamente los archivos de log, que terminan alcanzando cifras en gigabytes cada día. Supongamos que aparece algún incidente tras una nueva implementación: si tu objetivo es generar una respuesta rápida, trabajando con gigabytes de datos que carecen de estructura alguna, procedentes de varias fuentes y máquinas diferentes, eso será casi imposible sin las herramientas apropiadas. En estas líneas, básicamente podemos dividir dichas herramientas: Splunk con la “carga pesada” corporativa on-premise, y sus competidores, Sumo Logic, Loggly y otros, con las soluciones SaaS. Lo cierto es que existen muchas alternativas que ofrecen prestaciones similares, así que escribimos un análisis más profundo sobre el manejo de logs, que puedes leer por aquí.
Clave #1: Configurar una estrategia de manejo sonoro de logs que te ayude a ver más allá de las insípidas líneas de archivos de log desnudos, para así poder reaccionar con velocidad tras nuevas implementaciones.
The ELK stack
Una arquitectura de logs que hallamos sumamente ventajosa tras implementar nuevo código es el conjunto de soluciones ELK de código abierto. Además, vale la pena mencionarlo, pues es de código abierto y gratuito.
El conjunto de soluciones ELK: ElasticSearch, Logstash y Kibana
Así que ¿de qué se trata este ELK del que estamos hablando? Una combinación de la capacidad de búsqueda y análisis de ElasticSearch, Logstash como el agregador de logs, y Kibana para la sofisticada visualización del panel de administración. Lo hemos estado usando desde hace un tiempo, alimentándolo desde Java por medio de nuestros logs y Redis, y está siendo utilizado tanto por nuestros desarrolladores como por nuestro departamento de inteligencia empresarial. Actualmente, ElasticSearch está prácticamente incluido con Logstash, y Kibana también es un producto de ElasticSearch, todo lo cual contribuye a que la integración y la configuración sean más simples.
Cuando se realiza una nueva implementación, el panel de administración sigue indicadores personalizados, sobre la salud de nuestras aplicaciones, que nosotros configuramos. Estos indicadores se actualizan en tiempo real, permitiendo un seguimiento de cerca cuando el nuevo código da sus primeros pasos, tras ser cargado a producción.
Clave #2: La búsqueda, la visualización y la facilidad de agregar logs desde múltiples fuentes son factores clave para determinar tu estrategia de manejo de logs.
Clave #3: Desde la perspectiva de un desarrollador, la evaluación del impacto de una nueva implementación también puede incluir aspectos de inteligencia empresarial.

Herramientas dignas de consideración:

  1. On-premise: Splunk
  2. SaaS: Sumo Logic
  3. SaaS: Loggly
  4. De código abierto: Graylog2
  5. De código abierto: Fluentd
  6. Conjunto de soluciones ELK (de código abierto): Elasticsearch+ Logstash+ Kibana

Monitoreo del desempeño

Así que las fases de desarrollo se están acortando y los archivos de log se están volviendo más extensos, pero eso no es todo: el número de solicitudes de usuarios está creciendo exponencialmente, y todos ellos esperan el mejor desempeño. A menos que trabajes duro en la optimización, con unos simples logs no vas a llegar muy lejos. Ahora que ya aclaramos eso, las herramientas de gestión del rendimiento de aplicaciones (APM) ya no son consideradas un lujo, sino que rápidamente se están convirtiendo en el estándar. Esencialmente, el APM implica controlar cuánto tiempo toma ejecutar ciertas áreas de código y completar transacciones. Esto puede ser realizado instrumentando el código, monitoreando los logs o incorporando mediciones de hardware/de red, tanto en tu backend como en los dispositivos de los usuarios. Las dos primeras herramientas modernas de APM que vienen a la mente son New Relic, que acaba de realizar una oferta pública de ventas, y AppDynamics.
AppDynamics VS New Relic
AppDynamics a la izquierda, New Relic a la derecha: pantalla del panel principal
Cada una de ellas tradicionalmente se ha enfocado en distintos perfiles de desarrolladores, desde grandes corporaciones hasta pequeñas nuevas compañías. Pero, mientras ambas se encaminan a sus respectivas ofertas públicas de venta y tras experimentar un enorme crecimiento, las líneas ahora se están volviendo menos claras. La elección no es tan obvia, pero no puedes equivocarte: on premise = AppDynamics, de otro modo será una decisión individual que dependerá de que cuál se adapte mejor a tu propio conjunto de soluciones (y cuáles de las funcionalidades que cada una ofrece tú crees que realmente vas a usar). Puedes leer más al respecto en el análisis comparativo que recientemente realizamos a estas dos herramientas frente a frente.
Otras dos herramientas muy interesantes que fueron lanzadas hace poco son Ruxit (de Compuware) y DripStat (de Chronon Systems). Ambas provienen de grandes compañías que realizan su propio intento de suplir el mercado del monitoreo SaaS, del cual New Relic ha sido pionera. Mirando en lo más interno de la JVM, jClarity y Plumbr también, definitivamente, merecen tu atención.
Clave #4: Ya que las nuevas implementaciones pueden llegar a afectar el rendimiento de la aplicación, enlenteciéndola, las herramientas de APM pueden brindarte una vista general de la salud de tu aplicación.

Herramientas dignas de consideración:

  1. AppDynamics
  2. New Relic
Nuevos jugadores:
  1. jClarity
  2. Plumbr
  3. Ruxit
  4. Dripstat

Depuración en producción

Las fases de desarrollo se reducen, los archivos log se agigantan, las solicitudes de usuario explotan, y… el margen de error simplemente ya no existe. Cuando un error aparece, es necesario que lo resuelvas en el momento. Los entornos de producción a gran escala pueden producir millones de errores por día que surgen de cientos de secciones distintas del código. Si bien puede que algunos errores sean triviales, otros pueden hacer fallar funcionalidades críticas de la aplicación y afectar a los usuarios finales sin que tú te enteres. Tradicionalmente, para identificar y resolver estos problemas, tenías que confiar en tus archivos log, o bien en una herramienta de administración de logs para al menos saber si ocurría algún error, y ni hablar de solucionarlo.
Con OverOps, puedes averiguar cuáles errores presentan mayor riesgo, por lo cual deben ser priorizados, y recibes información procesable sobre cómo resolver cada error.
OverOps demo
Cuando se encuentra con errores que aparecen tras nuevas implementaciones, OverOps aborda 3 asuntos relevantes:
  1. Saber qué errores te afectan más: Detecta 100 % de los errores del código en producción, incluyendo excepciones de la JVM y errores de log. Usa un filtrado inteligente para dejar de lado al ruido y centrarse en los errores más importantes. Más del 90 % de los usuarios de OverOps informó haber hallado al menos un error crítico en producción durante su primer día de uso.
  2. Gastar menos tiempo y energía depurando: OverOps reproduce automáticamente cada error y muestra el código y las variables que condujeron a dicho error, aún entre diferentes servidores. Esto elimina la necesidad de reproducir los errores de forma manual, ahorra tiempo de ingeniería y reduce dramáticamente los tiempos de resolución.
  3. Implementar sin riesgos: OverOps te notifica cuando una nueva versión introduce errores, así como cuando algún antiguo error, ya solucionado, reaparece para molestarte.
Clave #5: Con OverOps, puedes actuar prontamente para resolver cualquier incidente y ya no sentirte en la oscuridad al lanzar una nueva versión.

Herramientas dignas de consideración:

  1. OverOps
Regístrate en OverOps desde este artículo y obtendrás un período de prueba extendido por 2 meses:
[IMAGE TRANSLATION: (from left to right):
Detecta el 100 % de los errores en producción
Encuentra las variables detrás de cada error
Depuración a escala mucho más simple (¡por fin!)
In the 2nd line:
Ingresa tu correo electrónico
Comienza a usar OverOps

Notificación y seguimiento

Fases de desarrollo, archivos log, solicitudes de usuarios, ningún margen de error y… ¿cómo vas a hacer seguimiento de todo eso? Puede que creas que esta categoría se superpone a las otras y la verdad es que puede que tengas razón, PERO cuando todas estas herramientas tienen sus propios canales para hacerte saber qué salió mal, todo se vuelve bastante entreverado. Mucho más en el momento delicado que sigue a una nueva implementación, cuando tienden a pasar todo tipo de cosas inesperadas (palabras dulces para decir… se arma un lío de aquellos).
Una de las herramientas destacadas de administración de incidentes que encara esto es PagerDuty: busca y recoge las alertas procedentes de tus herramientas de monitoreo, organiza la coordinación de tu equipo y envía cada alerta a la persona adecuada, por medio de texto, correo electrónico, sms o notificaciones push.
Clave #6: Considera la opción de usar un sistema de administración de incidentes para manejar la sobrecarga de información.
Una herramienta especializada que nos encanta usar en este campo es Pingdom (que también se integra con Pagerduty). Lo que hace es bastante simple y funciona a la perfección: seguimiento y alertas de los tiempos de respuesta de nuestro sitio web 24/7. Así, responde una pregunta crucial que puede parecer trivial: ¿El sitio web está disponible? Prueba accederlo desde diferentes ubicaciones alrededor del mundo.
Pingdom
¡Todos los sistemas listos!
Otro ángulo por el cual abordar la sobrecarga de información es el seguimiento de errores que va más allá de lo que ofrecen las herramientas de análisis de logs: paneles de administración elegantes para manejar tus excepciones y errores de log. El agregado de datos provenientes de todos tus servidores y máquinas a un único lugar, ya sea por medio de tus eventos de log o por otros puentes tendidos por tu código. Si quieres saber más sobre el panorama de las herramientas de rastreo de errores, puedes leer este artículo que analiza las opciones más populares.
Clave #7: Ya que los errores en el código vienen de todas las formas y tamaños, vale la pena darles un trato especial con una herramienta de rastreo de errores.

Herramientas dignas de consideración:

  1. PagerDuty
  2. Pingdom

Conclusión

Hemos visto de primera mano cómo el desarrollo moderno de software se ve afectado en los tiempos de sus respectivas fases y nos acercamos para apreciar cómo puedes evaluar el impacto de nuevas (y rápidas) implementaciones, cuando el nuevo código entra en escena antes que te sea posible aún entender por completo el impacto de la última actualización. En general, cualquier herramienta que pienses usar debería abordar estos 5 aspectos:
  1. Fases de desarrollo más reducidas
  2. Archivos log en expansión
  3. Solicitudes de usuarios multiplicándose
  4. Márgenes de error más diminutos
  5. Sobrecarga de información
Y lo más importante: piensa en cómo estás manejando estos aspectos hoy en día, y en qué consume la mayor parte de tu tiempo. Lo más probable es que ya exista una herramienta que lo solucione.

Post Top Ad

Responsive Ads Here