Medición y visualización de performance para procesos batch

Sovos
abril 4, 2022

Conversemos de DevSecOps

En esta nueva sección de nuestro blog compartiremos la visión y experiencia de nuestro equipo de expertos en el ámbito del desarrollo de software y las tecnologías de información en general, quienes tocarán distintos temas relacionados con las tecnologías y metodologías utilizadas por Sovos para crear e implementar un mejor software, y entregarán tips y datos orientados a aportar valor a quienes deben trabajar en este ámbito, fundamental para las compañías que crean y utilizan soluciones para impulsar el negocio de sus clientes.


 

Pamela Ruiz, Senior QA Engineer

Medición y visualización de performance para procesos batch

Por lo general, al medir performance de nuestras APIs, en Sovos buscamos obtener distintas métricas, como tiempos de respuesta, cantidad de errores, transacciones procesadas por minuto, cuellos de botella en el flujo y recursos utilizados en los servidores, entre otros. La finalidad es realizar un análisis de los datos obtenidos y aplicar mejoras en nuestros productos, para proveer la mejor calidad a nuestros clientes.

Para ello utilizamos herramientas como JMeter y K6, entre otras, para la ejecución de pruebas; AppDynamics para el monitoreo en tiempo real y Grafana e InfluxDB para la recolección y muestra de datos.

En este caso, como base de datos para almacenar las métricas, se seleccionó InfluxDB, la que es utilizada específicamente para almacenar información de métricas y datos para análisis en tiempo real. Esta herramienta de almacenamiento es plenamente compatible con Grafana, utilizada para detallar los resultados mediante gráficos.

A diferencia de las API, al medir la performance de procesos batch -que por lo general corren en modo background como servicios o procesos de Windows/Linux- no es tan relevante el tiempo de respuesta de estos procesos (aunque a veces es útil tener el dato para saber la capacidad de procesamiento de nuestro sistema), ya que el cliente no se encuentra activamente esperando una respuesta, sino que se evalúan principalmente métricas como recursos utilizados durante el procesamiento.

Para este tipo de pruebas se realizan una serie de pedidos para encolar procesos batch, y analizar el comportamiento del sistema durante el procesamiento. En nuestro caso, utilizamos JMeter para simular a usuarios realizando los pedidos.

Para la medición de recursos utilizados en un servidor usamos Telegraf, un agente que se instala en los servidores (en nuestro caso Windows) y se comunica con InfluxDB.

Dentro de los productos de Sovos utilizamos los llamados batch processing. Estos son procesos tipo batch que toman desde unos pocos minutos hasta varias horas en completar su ciclo, dependiendo del volumen de datos a procesar. Por lo general son utilizados para importar, transformar, exportar o transmitir altos volúmenes de datos.

Para su funcionamiento, el cliente envía un pedido para iniciar este proceso y recibe un acknowledgment para saber que su pedido fue tomado con éxito.

Por detrás, comienza el proceso con un orquestador de procesos que maneja los pedidos, encolándolos y derivándolos al primer procesador que se encuentre disponible, asignándoles el estado de claimed.

Los batch processing trabajan como una máquina de estados, pasando por diferentes estados. En la imagen podemos observar un esquema simplificado de los mismos.

 

batch-processing-maquina-estados

 

Para nuestro equipo era esencial contar con métricas relacionadas con estos procesos de larga duración, que incluyen:

  • Utilización de recursos usados durante los procesos
  • Estimación de tiempos promedios de procesamiento
  • Análisis de la cantidad de jobs procesados en un determinado momento
  • Verificación de los jobs con fallas

Si bien no contábamos con ninguna herramienta para monitorear las métricas que necesitábamos en cuanto a tiempos y cantidades, notamos que durante el procesamiento se utiliza una tabla en la base de datos para registrar los distintos cambios de estado durante todo el proceso.

 

verificacion-jobs-fallas

 

El equipo de trabajo pudo tomar ventaja de ello y utilizar esta tabla como base para obtención de métricas.

Se crearon diferentes consultas a la base de datos para obtener datos tales como:

  • Tiempos de ejecución (para el calculo de cantidad de registros procesados por segundo)
  • Cantidad de jobs en procesamiento
  • Cantidad de jobs fallidos
  • Cantidad de jobs encolados

Se tomaron en cuenta los estados principales, como enqueued, running, failed y completed.

Este trabajo podía llevarse a cabo de forma manual y en el momento, pero no era un proceso eficiente a la hora de realizar un análisis de lo sucedido a lo largo del tiempo. Se requería una herramienta que pudiera procesar los datos y mostrarlos de forma amigable mediante gráficos.

De esta manera, para automatizar el proceso de análisis de los resultados y contar con un historial de información, se creó una aplicación con node.js en la que establece una conexión con la base de datos de Oracle, desde donde se extraen las métricas, y una conexión con InfluxDB, en donde se almacenan los datos una vez procesados.

 

automatizar-procesos-influxdb

 

Este proceso de node se realiza cíclicamente cada 20 segundos para recolectar los datos.

Se armó un dashboard en Grafana para mostrar los resultados, tal como muestra la siguiente imagen:

 

dashboard-grafana-resultados

 

Estos gráficos son totalmente configurables y es posible ajustar a diferentes fechas y horas, de acuerdo con lo que se necesite analizar.

Adicionalmente, esta aplicación se encuentra dockerizada para facilitar el deployment mediante Puppet. Si bien hoy en día está configurada para utilizar en un ambiente específico, en un futuro podríamos aplicar nuevas configuraciones para diferentes ambientes y base de datos según se necesite.

Además pueden agregarse nuevas consultas a la base de datos en caso de que se requieran nuevas métricas, incluyendo números de procesos cancelados por el usuario y número de procesos en algún estado en específico, entre otras.

A continuación se observa un dashboard en Grafana para monitoreo de utilización de recursos:

 

dashboard-grafana-monitoreo-recursos

 

En conclusión, se logró crear un framework de monitoreo para los procesos de larga duración basados en tecnologías open source.

Cada nuevo conocimiento y avance va sumando para tener una mejor base de monitoreo y mejor información al momento de realizar un análisis más profundo al encontrar errores o al realizar pruebas de carga, permitiendo encontrar con mayor facilidad los cuellos de botella, tanto para nuestras APIs como para nuestros procesos de batch.

Suscríbase para más información

Manténgase actualizado con las últimas noticias relacionadas a los impuestos y el cumplimiento de la normativa tributaria que pueden impactar los procesos y las operaciones de su empresa.

AUTOR

Sovos

Sovos se creó para resolver las complejidades de la transformación digital de los impuestos, con ofertas completas y conectadas para la determinación de impuestos, los controles continuos de las transacciones, los informes fiscales y mucho más. Entre los clientes de Sovos se encuentran la mitad de las empresas de la lista Fortune 500, así como empresas de todos los tamaños que operan en más de 70 países. Los productos SaaS de la empresa y la plataforma Sovos S1, de su propiedad, se integran con una amplia variedad de aplicaciones empresariales y procesos de cumplimiento de la normativa gubernamental. Sovos tiene empleados en toda América y Europa, y es propiedad de Hg y TA Associates.
Compartir esta publicacion

Colombia Cumplimiento Fiscal Ecuador Perú
September 14, 2022
Nuevo Country Manager de Sovos para Perú, Ecuador y Colombia

El ejecutivo toma el timón para superar desafíos y abrir nuevas oportunidades en la región, usando como brújula la experiencia de la compañía en facturación electrónica y digitalización de procesos empresariales. José Antonio Vidal tiene más de 30 años de experiencia en ventas y marketing en empresas de renombre mundial. Durante tres años fue responsable […]

Colombia Punto de venta electrónico
September 12, 2022
7 factores críticos que considerar al contratar a un proveedor de POS

El 1 de febrero de 2023 comienza a regir en Colombia, de acuerdo con la resolución 0012 publicada por la DIAN, el calendario de implementación para comenzar a exigir un límite máximo de 5 unidades de valor tributario -cerca de 45 dólares o 200 mil pesos colombianos- al expedir documentos equivalentes generados por máquinas registradoras […]

Perú
August 26, 2022
Certeza y seguridad para los servicios financieros en el Perú

Identificar, de manera segura y con respaldo legal, a quienes firmen contratos y acuerdos de manera no presencial, es una de las mayores preocupaciones de las entidades vinculadas a los servicios financieros. La criticidad de los datos que administran, y las regulaciones estrictas a las que son sometidas, les obliga a contar con mecanismos que les ayuden a protegerse -y a sus clientes- de fraudes y suplantaciones de identidad.

Gestor documental digital Latinoamérica SSA
August 1, 2022
Botón de firma ¿Conoce esta funcionalidad?

El botón de firma es una funcionalidad muy versátil, que viene incluida en nuestra solución de gestión documental digital de Sovos y se puede activar fácilmente. ¡Buenas noticias! Si usted cuenta con nuestra solución y se conecta a través del portal, tiene acceso al “Botón de firma” y sólo debe activarlo. Esta funcionalidad le permite […]

Colombia Punto de venta electrónico SSA
August 1, 2022
Colombia se prepara para el envío de documentos equivalentes desde los puntos de venta POS

De acuerdo con el calendario establecido, el proceso inicia con grandes contribuyentes, que deben cumplir desde febrero de 2023. La Dirección de Impuestos y Aduanas Nacionales (DIAN) presentó a principios de julio un proyecto de resolución que establece finalmente el calendario para comenzar a exigir el límite máximo de 5 unidades de valor tributario (UVT) […]