Logo-Kirey-group

Qué es el APM y por qué es importante

Kirey-monitorización-y-ciberseguridad-4

Comparte este artículo

La informática del siglo XXI se puede resumir en tres pilares básicos: capacidad, precisión y velocidad. Basándose como se basa la informática en conceptos matemáticos la precisión es algo que se da por sentado, siempre y cuando se eviten los fallos humanos. La capacidad es cada vez un problema menor gracias a la aparición del almacenamiento en la nube, el escalado horizontal —utilizado sobre todo en Big Data— y la mejora generalizada de discos duros y servidores.

Pero en un mundo donde realizar una compra por Internet, consultar el saldo de la tarjeta de crédito o generar una factura implican millones de operaciones subyacentes la velocidad sigue siendo el punto focal de la mayoría de aplicaciones. Un retraso de apenas unos microsegundos multiplicado por decenas de miles de accesos a una base de datos puede generar una demora de segundos o incluso de minutos. Detectar y corregir estos cuellos de botella puede ser la diferencia entre que un usuario termine de realizar una compra online o que se aburra y pase a hacer otra cosa. Y aquí radica la importancia del APM, o Monitorización del rendimiento de las aplicaciones.

¿Qué es el APM?

La Monitorización del rendimiento de las aplicaciones —conocida también por sus siglas en inglés APM o Application Performance Management— es el nombre dado al conjunto de herramientas encargado de analizar el comportamiento de las aplicaciones, comprobar su rendimiento, detectar aquellas partes en las que este pueda estar afectado y, en definitiva, aportar las soluciones necesarias para garantizar la mejor experiencia de usuario final.

Este análisis de aplicaciones se realiza en todos los ámbitos, desde los más genéricos —tiempo de máquina consumido, uso de memoria, lecturas y escrituras en disco— a los más específicos como accesos concretos a bases de datos o llamadas a procedimientos externos fuera del entorno de ejecución.

La máxima «el conocimiento es poder» se aplica de manera literal con la información que aporta un buen APM. Poder relacionar métricas clave a nivel de negocio —como puede ser el porcentaje de conversiones— con el nivel de rendimiento que ofrece la máquina en ese momento es poder, puesto que nos permite resolver los problemas que afectan a dicho rendimiento antes de que lleguen a alcanzar al usuario final. Comprender qué punto concreto del diagrama de flujo de una aplicación es el que se está «comiendo» el 80% de los recursos es poder, ya que nos permite hacer una reingeniería del proceso concreto que está ralentizando toda la aplicación.

Conocer los posibles ataques informáticos que hemos sufrido, su rango de criticidad y si han sido bloqueados permite mejorar nuestra seguridad y destinar recursos a tareas más prioritarias.

Conocimiento es poder, y en el mundo actual el poder equivale también a dinero. La compañía que haga un buen uso de su APM verá recompensada su inversión inicial en él en muy poco tiempo.

Si nos preguntamos cuál sería la tarea prioritaria a acometer por un APM la respuesta mayoritaria sería, sin duda, la experiencia de usuario final. Y, aunque ciertamente esta va a ser la punta de lanza donde más va a incidir la aplicación de soluciones aportadas por el APM, no es menos cierto que existen otros ámbitos donde el uso de los informes y métricas generados nos permitirá mejorar tiempos, aprovechar recursos y, en definitiva, garantizar que nuestro software y hardware se comporten de manera óptima y se pueda garantizar un suministro ininterrumpido del servicio. Veremos a continuación cada uno de estos ámbitos, sus actores principales y la manera en que el APM puede ayudar a mejorar la productividad y satisfacción de personal y usuarios, respectivamente.

Servidores e infraestructura

La piedra angular de cada conjunto de aplicaciones software siempre será la infraestructura que soporta su correcta ejecución. En un entorno de desarrollo siempre cambiante, una arquitectura del software que no se asiente sobre unos buenos cimientos de hardware no será capaz jamás de presentar las cotas de excelencia que un público habituado a la inmediatez le va a exigir, por bueno que sea el equipo de desarrollo que se vaya a encargar de la programación. Es por ello que un buen APM ha de presentar información sobre cada uno de los elementos críticos del hardware y los diversos procesos en vuelo inherentes al SO que puedan entorpecer la correcta ejecución de nuestras aplicaciones.

Algunos de los elementos que deben ser analizados por el APM para asegurar un funcionamiento ideal son:

  • Carga de CPU y memoria de la(s) máquina(s). Un procesador que esté corriendo siempre al 99% o una RAM o memoria virtual que roce siempre el límite de su capacidad es un claro síntoma de falta de recursos o de mal uso de los mismos.
  • Tiempos de lectura y escritura en disco. Del mismo modo, un alto número de lecturas y/o escrituras en disco puede demorar en gran medida la ejecución de un programa. No sirve de mucho que una consulta se realice en milésimas de segundo si posteriormente se ha de acceder a un sistema de gestión de discos mal montado que multiplique por cien ese tiempo.
  • Carga de la red. Aunque nuestro mainframe se encuentre lejos de su máxima capacidad de cálculo, si la red que tiene que soportar el envío y recepción de datos en el servidor se encuentra sobrecargada tendremos un pequeño «paso de las Termópilas» en el flujo de información que inevitablemente demorará la ejecución de nuestro programa o, en los casos más graves, puede incluso generar errores por timeout.
  • Procesos del SO o de apoyo al software. Un kernel mal compilado, un antivirus que hace un barrido completo justo en el pico de transacciones de nuestra aplicación o programas de uso esporádico pero que arrancan con el sistema operativo —y gastan recursos— son algunos de los males que puede detectar nuestro APM.

Por todos estos motivos es necesaria una correcta gestión y mantenimiento de la infraestructura base y los servidores de nuestra organización. Para un análisis exhaustivo de ello, el APM se antoja como una herramienta indispensable.

DevOps (Desarrollo y Operaciones)

Si la infraestructura y servidores equivalen a los cimientos necesarios sobre los que construir nuestras aplicaciones, el escenario de DevOps constituye el edificio en sí. Son los obreros, los materiales y la arquitectura sobre la que edificar nuestro software, y si los materiales son pobres o los planos están mal trazados el edificio será una ruina. El APM nos ayudará a detectar estos puntos defectuosos, ver cuál es el problema concreto que hay que solucionar en el punto exacto donde hay que hacerlo y —si es un buen APM— con una incidencia mínima o incluso inexistente en el código del programa.

En muchas ocasiones los «ladrillos» (bloques de código, funciones, bases de datos, etc.) estarán bien construidos, pero mal alineados o en el sitio incorrecto (accesos sin índices, recolectores de basura o pilas que se llenan sin borrarse nunca, llamadas a servicios externos sin control de timeout…). La misión del APM en esta capa será proporcionar las herramientas necesarias al equipo de desarrollo y de operaciones para acotar y dar solución a estos problemas.

Aunque la localización y resolución de fallos es una parte del desarrollo de software que siempre se lleva un porcentaje muy grande del tiempo (llegando en algunos casos a superar la parte de diseño y construcción), es en los canales de prestación continua donde resulta vital acotar tanto los fallos como el tiempo de resolución de los mismos. En aplicaciones web disponibles las 24 horas del día —y, a menudo, en constante actualización— una demora en la resolución de estos fallos puede provocar quejas o incluso abandonos por parte del usuario final.

Una buena monitorización del rendimiento de las aplicaciones puede aislar las transacciones que están produciendo errores o retardos, identificar las partes de código afectadas y reducir enormemente el tiempo empleado en la resolución de fallos. Los equipos de DevOps apoyados en un buen APM tendrán una mejor gestión de incidencias, mejor comunicación entre ellos —al eliminar los problemas que pueden darse al cruzarse datos y llamadas entre programas o departamentos— y, en general, más y mejor tiempo efectivo de desarrollo.

Experiencia de cliente final

Una vez vista la importancia del APM en los escenarios de infraestructura y DevOps pasamos al auténtico quid de la cuestión: el usuario final. Siguiendo con el símil del edificio, si la infraestructura equivalía a los cimientos y los DevOps al edificio en sí, los usuarios se asemejarían a los inquilinos que van a hacer uso del edificio. Nuevamente, importa poco si el edificio está construido con los mejores materiales y por los mejores arquitectos; si el inquilino tiene problemas con el suministro de agua o luz (llamadas a servicios web o procesos externos), tiene que desplazarse en coche para hacer la compra (problemas en el acceso a datos) o tiene que esperar varios minutos cada vez que llama al ascensor (demoras en tiempos de ejecución) el resultado va a ser el mismo: un inquilino/cliente descontento y con ganas de «mudarse» de aplicación.

Satisfacer la demanda del cliente de manera óptima es el fin último del desarrollo de aplicaciones. Por suerte, es en este punto donde más brilla la resolución de conflictos que ofrece el APM.

Para asegurar que tanto el sistema como las aplicaciones puedan gestionar sin problemas la carga de trabajo de los usuarios finales, los APM utilizan la técnica conocida como monitorización de transacción sintética que registra, categoriza y por último imita las interacciones de los clientes con nuestras aplicaciones web para ver cómo se comportan y si son capaces de gestionar dicha carga sin retrasos evidentes. Esta monitorización permite:

  • Comprobar el rendimiento de las aplicaciones antes de que estén en vivo
  • Ofrecer estadísticas e informes de dicho rendimiento.
  • Alertar cuando se están sobrepasando los límites «normales» de funcionamiento de las aplicaciones, límites que el propio APM ha sido capaz de asignar basándose en las medias de rendimiento evaluadas.
  • Identificar problemas antes de que lleguen al cliente final.
  • Medir cómo afectan los elementos externos (web services, APIs, proveedores de servicios, etc.) a nuestro rendimiento.
  • Por último, garantizar la mejor experiencia digital para nuestro cliente.

AppDynamics nos asegura integrar de manera sencilla todas estas funcionalidades en cada uno de los tres niveles, ofreciendo un conjunto de herramientas para la monitorización del rendimiento de aplicaciones que nos permitirá elevar el grado de satisfacción tanto de equipo como de clientes hasta su punto más alto.

Suscríbete a nuestra newsletter

Entérate antes que nadie de los mejores contenidos.

Quizás también te interese

¿Quieres que mejoremos la rentabilidad de tu empresa?

Escríbenos para recibir una propuesta personalizada.