This was originally posted on Takipi blog. Takipi tells you when and why code breaks in production. Learn more.
New Relic VS AppDynamics: su rendimiento en cuanto a funcionalidades, integraciones, procedimientos de instalación y planes de pago, frente a frente, para ayudarte a decidir cuál herramienta te conviene usar
Cuando pensamos sobre rendimiento, AppDynamics y New Relic son las principales herramientas modernas que se nos vienen a la mente. Ambas surgieron de la misma compañía, Wily Technology, que también trabajó en el campo del monitoreo del rendimiento y fue adquirida por CA allá por 2006, dando paso a nuevas tecnologías. New Relic es un anagrama de Lew Cirne, su fundador y director ejecutivo. AppDynamics fue fundada por Jyoti Bansal, quien era arquitecto líder de software en la mencionada Wily Technology, también fundada por Lew.
El objetivo central de este análisis es ayudarte a entender las similitudes y diferencias entre estas dos aplicaciones, para que tú puedas decidir cuál de ellas se adapta más a las necesidades de tu compañía
Es el único argot que vas a leer en este artículo, te lo prometo. Bueno, tal vez también DevOps, pero nada más. Así que aquí vamos. La gestión del rendimiento de las aplicaciones (Application Performance Management o APM, por sus iniciales en inglés) ha existido desde hace mucho tiempo, aunque parece que muchos desarrolladores aún no se sienten cómodos con ella. La APM nos brinda estadísticas con respecto al rendimiento de nuestra aplicación. Básicamente, esto significa calcular el tiempo en que ciertas áreas de código se ejecutan y en que ciertas transacciones se completan. Esto se puede hacer instrumentando el respectivo código, monitoreando los logs o incorporando mediciones de hardware o en red.
Por encima de este concepto esencial, existen varias posibles implementaciones distintas, aun cuando podemos estar de acuerdo en ciertas verdades básicas: una solución moderna debería monitorear los ambientes de producción, y allí es donde su overhead (en lo que se refiere a la CPU y a la transferencia de datos) cobra relevancia. Asimismo, debería mostrar lo que los usuarios finales en la web y los móviles están experimentando, lo cual no formaba parte de las características de las APM tradicionales.
Lo que una vez supo ser un lujo, ahora se está convirtiendo en lo más común, pero tener nuevas implementaciones en producción de forma más rápida también implica más posibilidades de incorporar errores en la arquitectura de tus sistemas, enlentecerlos, y quizás aún hacerlos colapsar. Veamos qué es lo que AppDynamics y New Relic tienen para ofrecernos.
AppDynamics: Java, Scala, .NET, PHP, Node.js, iOS y Android, incluyendo la base de datos y la plataforma en la nube de tu preferencia.
New Relic: Java, Scala, .NET, PHP, Node.js, Ruby y Python. Puedes consultar las bases de datos, plataformas en la nube y otros complementos soportados aquí. Analizaremos en mayor profundidad el tema de las extensiones más adelante.
En el frente del monitoreo de usuarios, se incluye soporte para iOS, Android, y JavaScript en ambas herramientas.
En definitiva: La diferencia principal reside en el soporte de Ruby y Python ofrecido por New Relic, y los diferentes niveles de soporte para varias plataformas.
Tanto New Relic como AppDynamics pueden ser desglosados en 6 distintos productos, todos los cuales envían su información a la interfaz del panel principal de administración. Vamos a dividirlos entre los de backend, móvil y frontend para poder hacer un repaso rápido por lo que cada uno ofrece.
He aquí los artículos de primera necesidad de la gestión del rendimiento: reportes de estadísticas, gráficos e información procesable del rendimiento de tus aplicaciones, todo únicamente visible para ti. Cada una de estas aplicaciones (AppDynamics y NewRelic) ofrece 4 abordajes para ello:
Gestión del rendimiento de las aplicaciones (APM)
Mediciones de alto nivel, que incluso examinan a fondo hasta los datos al nivel del código, con relación al rendimiento de tu aplicación. Las mediciones de referencia obligatoria son el tiempo de respuesta de las transacciones, la tasa de errores, la transferencia de datos (solicitudes por minuto) en NewRelic y carga (llamadas/minuto) en AppDynamics.
El panel de administración de AppDynamics a la izquierda, el de New Relic a la derecha
Probablemente habrás notado que la pantalla principal de AppDynamics incluye un mapa de los servicios que la aplicación está usando, junto con sus respectivas cargas de llamado y sus niveles de salud, mientras que NewRelic muestra un gráfico de los tiempos de respuesta. Esta podría ser una manera de señalar las prioridades de cada herramienta en lo que hace al monitoreo, así como de la inclinación de AppDynamics hacia las grandes empresas. Bueno, ya fue suficiente con toda esta psicología sobre las herramientas de desarrollo, aunque vale la pena remarcar que también New Relic ofrece un mapa similar:
Mapa de aplicaciones de New Relic
Uno de los temas más escabrosos es: dentro de lo que son las alertas e informes, contando con tantas mediciones y partes dinámicas, ¿cómo podemos identificar qué es lo más importante? ¿Será una baja tasa de errores? ¿La capacidad de respuesta? ¿La transferencia de datos? AppDynamics y New Relic han tomado diferentes caminos a la hora de destilar los indicadores de rendimiento de estas mediciones. New Relic usa el índice Apdex, que emplea un umbral T del tiempo de respuesta definido por los usuarios para representar la satisfacción del usuario final. Dicho de manera simple, necesitan que tú estipules, de forma manual, dicho umbral.
He aquí un ejemplo de la forma en que este resultado es calculado:
Cálculo del Apdex, ahora súmale a esto todas las solicitudes durante un cierto lapso de tiempo y ahí tienes el resultado
AppDynamics, por otra parte, no cree en Apdex (tal como fuera explicado en un artículo -en inglés- denominado ”Apdex is fatally flawed” [“Apdex tiene fallas críticas”]). Por lo tanto, ellos presentaron su propia solución, que crea automáticamente puntos de referencia dinámicos para medir el rendimiento de las aplicaciones, con variaciones en el tiempo. Por ejemplo, la definición de lo que es una transacción lenta podría variar cuando el sistema recibe bajas o altas cargas.
En definitiva: Podemos ver que AppDynamics enfoca sus prioridades en ver el “todo”, de un extremo al otro, mientras que NewRelic se centra en los tiempos de respuesta definitivos. También hemos visto la diferencia entre alertar con Apdex y hacerlo con puntos de referencia dinámicos.
Monitoreo de servidores
Otra posibilidad de monitoreo ofrecida por ambas herramientas se centra en el hardware con que tus servidores están conformados: especificaciones, uso del procesador, utilización de la memoria, tasas de transferencia de datos de los discos y de la red.
AppDynamics a la izquierda, New Relic a la derecha, con algunos datos de muestra
En esta área, AppDynamics ofrece algunas funcionalidades más que New Relic, sobre todo en lo relacionado a la memoria: utilización y tamaño de montículo (heap), estadísticas sobre la recolección de basura, clasificadas según tipo de datos, y detección de fugas de memoria.
Monitoreo de servidores de AppDynamics: funcionalidades para la memoria
En definitiva: AppDynamics brinda una mirada más profunda a la recolección de basura y una detección de fugas de memoria más allá de las mediciones estándar.
Monitoreo de bases de datos
Ahora hablemos sobre otros componentes del conjunto, y lo primero que nos viene a la mente son las bases de datos. Aquí sí que tenemos diferencias importantes con un panel de administración de AppDynamics más rico, analizando cosas como el consumo de recursos, los estados de espera, las sesiones de usuario, las llamadas de consulta específicas y mucho más. Del lado de New Relic, la situación es algo distinta, con el panel de administración de bases de datos formando parte del producto básico de APM.
Ambas herramientas cuentan con mediciones específicas que monitorean las bases de datos, ofrecidas por medio de complementos que permiten ver datos desde servicios externos (hablaremos un poco más sobre las integraciones más adelante). En cualquier caso, tanto los conjuntos de funcionalidades nativas como los de las externas pueden presentar diferencias, dependiendo de qué base de datos se use.
AppDynamics a la izquierda con una base de datos Oracle, New Relic a la derecha con el complemento MySQL
En definitiva: Más allá de las mediciones de bases de datos en común, que indagan algo más profundo con AppDynamics, vale la pena analizar las funcionalidades disponibles con cada herramienta para tu base de datos en particular.
Análisis e información procesable
Este es un comodín, ya que va más allá de la APM tradicional, abriendo el campo hasta las mediciones de inteligencia empresarial. Ya que tanto New Relic como AppDynamics tienen acceso a los mensajes que fluyen en tu aplicación, ambos han creado esta base de datos adicional, que es opcional, para almacenar tus estadísticas y permitirte consultarlas.
AppDynamics a la izquierda, New Relic a la derecha, con algunos datos de muestra
En definitiva: Si aún no cuentas con una solución que te permita procesar tales consultas, puede que sea un buen momento para obtener una.
Dejando atrás el backend, demos un vistazo rápido para ver qué tenemos en el frente del monitoreo del usuario real. Tanto AppDynamics como New Relic cuentan con un producto diseñado para navegadores y otro para los móviles, con soporte para iOS y Android.
Por el lado de los móviles, las funcionalidades más destacadas incluyen información procesable sobre enlentecimientos y fallos, filtrados según región geográfica, dispositivo, sistema operativo y red operadora:
AppDynamics a la izquierda, New Relic a la derecha: monitoreo del usuario real (móvil)
En cuanto al análisis de los navegadores de usuarios finales, se ve muy similar a la visibilidad que tienes de los tiempos de carga de tus navegadores a través de las herramientas de desarrollo de Chrome, disponible para ver los usuarios reales de tu aplicación:
AppDynamics a la izquierda, New Relic a la derecha: Monitoreo de usuarios reales en navegadores
En definitiva: Nuevamente vemos cómo New Relic se centra más en los tiempos de respuesta definitivos, mientras que a AppDynamics parece importarle más el panorama global.
Para poder ir más allá de las alertas e informes de errores generados por AppDynamics y New Relic, muchos de nuestros usuarios añaden Takipi a su caja de herramientas. Esto les permite, no solo monitorear los errores y enlentecimientos de servidores por medio de New Relic o de AppDynamics, sino también resolverlos usando Takipi. En cualquier momento en que se arroja una excepción u ocurre un error de log, Takipi lo captura y te muestra el estado de variable que lo causó, a través de los diferentes métodos y máquinas. Takipi resaltará esto sobre el código que se ejecutaba al momento del error, de forma que puedas analizar la excepción, tal como si estuvieras allí cuando todo ocurrió.
El panel de administración enlaza cada error a una instancia registrada dentro de todo el código que se estaba ejecutando cuando ocurrió el error, y proporciona los valores de variable que causaron dicho error:
Takipi se entiende bien con AppDynamics, y ahora también tiene un nuevo complemento para Relic, que muestra un panel de administración de excepciones y errores de log:
Takipi para New Relic
En definitiva: Una cosa es identificar qué es lo que te está trancando, y otra muy distinta es resolverlo. ¿Desarrolladores Java o Scala? Sea que estén usando una herramienta APM o no: Comienza a usar Takipi.
Para conocer mejor la experiencia de usuario con cada herramienta, así como la forma de cada una de resolver los problemas, pienso que lo mejor sería mirar un video. Pero antes, vale la pena remarcar que AppDynamics usa un panel de administración basado en Flash, sí… Flash, resulta que todavía anda por ahí. Si bien eso puede parecer un retroceso, es probablemente la mejor aplicación Flash que yo haya visto:
[VIDEO1]
NewRelic en TypeSafe, un webinar que da un vistazo a New Relic para Play (es un poco largo pero verás que hace un buen repaso):
[VIDEO2]
En definitiva: Todavía no puedo creer que Flash no me haya espantado por completo. Y la verdad es que estuvo bien. Ambas herramientas brindan una linda experiencia, aunque todavía luzcan un poco embarulladas.
SaaS (en la nube)/On-Premise (en sitio): AppDynamics ofrece algunas alternativas en lo que hace a modos de operación: SaaS, en sitio, y también una opción híbrida, cada una de ellas con sus respectivas instrucciones de instalación. New Relic únicamente está disponible como SaaS.
Agentes: El monitoreo de tu aplicación es posible tras añadir agentes específicos para cada lenguaje a tus servidores. Por ejemplo, en Java hay dos maneras en que es posible instrumentar tu código con agentes, ya sea usando un agente Java o uno nativo. New Relic y AppDynamics usan un agente Java para recolectar la información sobre el rendimiento que ellos informan. Para reunir los datos de bajo nivel que hacen posible no solo identificar un error e informarlo, sino también ayudar a resolverlo, Takipi usa un agente nativo.
Cambios de configuración y código: Del lado del monitoreo de usuarios reales, serían necesarios cambios en el proyecto y la configuración -incluso incorporar algunas dependencias- si quisieras conceder capacidades de monitoreo a tu aplicación web o móvil. Esto incluye agregar agentes JS a tu sitio web y agentes móviles nativos a tu aplicación móvil.
Alertas: AppDynamics calcula los umbrales de tus tiempos de respuesta por sí solo y puede tomarse un tiempo para conocer tu sistema. New Relic confía en umbrales personalizados, definidos por ti, para su índice Apdex.
En definitiva: Si necesitas una versión en sitio, claramente la respuesta será AppDynamics. De otro modo, la simplicidad de instalación es pareja en ambas. Así y todo, ten en cuenta lo comentado sobre las alertas.
En lo que hace a su expansión, AppDynamics y New Relic ofrecen integraciones y complementos con cientos de servicios. Empecemos con NewRelic, ya hemos mencionado al programa Platform: una plataforma de complementos con 116 de ellos (la última vez que me fijé). Son complementos para servicios tales como Hadoop, RabbitMQ y Redis, que arrojan mediciones de sus datos para que tú puedas verlos en New Relic. Del lado de las integraciones, tenemos a Connect, que ofrece 53 integraciones con herramientas como Jira, HipChat, Takipi y PagerDuty.
AppDynamics Exchange ofrece 100 complementos y es, asimismo, una plataforma abierta para que los desarrolladores puedan crear más de ellos.
En definitiva: New Relic tiene integraciones más ricas y parecen ser más intuitivas, pero en cualquier caso es una decisión personal la de dónde y cómo las herramientas que tú hayas elegido se integran mejor.
Ambas herramientas cuentan con una versión gratuita con funcionalidades limitadas en todos sus productos, incluyendo una retención de datos de 24 horas con períodos de prueba de la versión “Pro” de 14 a 30 días. El precio de los programas Pro de AppDynamics varía en cada caso; tendrás que contactar con Ventas para obtener un plan personalizado basado en el número de agentes que necesites. El monitoreo móvil es algo diferente, cada agente es valuado por 5000 usuarios activos mensuales.
Con New Relic, los precios de la cuenta Pro van desde los 199 $ por mes y por host (149 $ en un plan anual), e incluye todo lo fundamental de APM, servidores, plataforma y navegadores. El monitoreo móvil cuesta 49 $ por mes (29 $ en un plan anual) con una semana de retención de datos. El producto Insights va desde 250 $ por mes para un máximo de 75 millones de eventos.
En definitiva: Los precios de New Relic se adaptan más a nuevos, pequeños y medianos emprendimientos, mientras que AppDynamics se centra en personalizar las soluciones para grandes empresas. Habiendo aclarado eso, cada herramienta se atreve a adentrarse en el terreno natural de la otra, y esta distinción ya no es tan clara hoy como lo era antes.
AppDynamics y New Relic son de las mejores herramientas de APM. Cada una de ellas, tradicionalmente, se enfocaba en un tipo distinto de desarrollador, desde grandes compañías hasta pequeños emprendedores. Pero mientras ambas avanzan hacia sus respectivas ofertas públicas de acciones, y tras experimentar un crecimiento exponencial, los límites se están volviendo borrosos. La decisión no es clara, pero no puedes equivocarte: en sitio = AppDynamics, de otra manera, será una decisión personal que dependerá de cuál se ajuste mejor a tu conjunto de herramientas de software (y de cuáles de estas funcionalidades piensas que vas a usar).