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 fue creada para resolver las complejidades de la transformación digital de los impuestos, con soluciones completas y conectadas para la determinación de impuestos, el cumplimiento de los controles transaccionales continuos, la declaración del IVA y más. La compañía brinda asistencia a más de 12.000 mil clientes, incluida la mitad del ranking Fortune 500, que operan en más de 70 países. Sus productos SaaS y la plataforma patentada Sovos S1 se integran con una amplia variedad de aplicaciones comerciales y procesos de cumplimiento gubernamentales. Sovos tiene empleados en las Américas y Europa, y es propiedad de Hg y TA Associates. Para obtener más información, visite https://sovos.com/es/ y síganos en https://www.linkedin.com/company/sovos-latam.
Compartir esta publicacion

Gestor Documental Latinoamérica
April 14, 2022
Gestor documental digital: Un aliado para la industria financiera

La evolución acelerada de los procesos de negocios desde el papel al mundo electrónico, resultado de la transformación digital y de las condiciones derivadas de la pandemia global, ha tenido un impacto significativo en un área fuertemente regulada debido a la criticidad de los datos que administra: la industria financiera. Para entidades como la banca, […]

Cumplimiento Fiscal en Latinoamérica Latinoamérica
April 14, 2022
Actualización de los cambios regulatorios en la región

Latinoamérica es tal vez la región del mundo más activa en la generación de regulaciones relativas a la facturación electrónica y como tal, ha sido tomada como modelo en otros continentes. Sin embargo, el impacto de la pandemia ha retrasado la entrada en vigor de muchas de ellas. En estas líneas revisamos el estado actual […]

Digitalización de procesos empresariales Latinoamérica SSA
April 6, 2022
Aplicación de pruebas de performance de API en proyectos de Sovos

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 […]

Colombia Factura Electrónica
April 5, 2022
Días sin IVA en Colombia II: efectos sobre la facturación electrónica

Tal como se mencionó en la primera parte de este artículo sobre los Días sin IVA, esta medida ha sido implementada por el gobierno colombiano para incentivar el consumo, eliminando, por una cierta cantidad de días previamente establecidos, el impuesto al valor agregado aplicable al consumo de ciertos bienes cuando son adquiridos por personas naturales. […]

Colombia Cumplimiento Fiscal en Latinoamérica
March 31, 2022
Días sin IVA en Colombia I: legislación y alcances

Con el surgimiento de la pandemia creada por el COVID 19, las pérdidas generadas a los comercios han sido catastróficas. En Colombia, el primer año de la pandemia causó pérdidas que fluctuaron entre un 0.5 y un 6.1% del PIB1. Frente a este escenario, el gobierno colombiano decidió introducir múltiples medidas para reanimar la economía. […]