Automatización de procesos en TI con Jupyter Notebooks

Automatización de procesos en TI con Jupyter Notebooks

Automatización de procesos en TI con Jupyter Notebooks

Tiempo de lectura: 7

Como profesionales del sector de IT, todos tenemos procesos manuales en nuestro día a día que podríamos evolucionar a algún tipo automatización o al menos semi-automatización de cara a que en las próximas ocasiones que haya que volver a realizar dicho proceso se pueda re-ejecutar en el menor tiempo posible.

Pasando de escribir nuestra idea inicialmente de forma textual para a posteriori llevarla a código, podemos lograr un estándar de trabajo que nos permita reducir tiempos en las tareas más mecánicas.

Antes de hablar de herramientas, repasamos los principios de la automatización.

¿Qué es la automatización?

  • La automatización de procesos es la operacionalización de un proceso que antes se ejecutaba manualmente, utilizando la tecnología y la integración de sistemas y datos.
  • El principal objetivo de la automatización de procesos es mejorar el progreso del flujo de trabajo en una organización.
  • Es posible sustituir las actividades manuales por automatizadas utilizando software y sistemas para respaldar diferentes actividades.

Tipos de automatización

RPA (Robotic Process Automation)

Se utiliza para automatizar las tareas de software repetitivas de las que suelen encargarse las personas, ya sean trabajos simples (ej. completar formularios y preparar facturas) o complejos (ej. atender a los clientes y resolver problemas, chatbot).

Synthetix de Datadope es un proceso de tipo RPA.

Otro ejemplo de proceso RPA

 

BPA (Business Process Automation)

Consiste en usar sistemas de software para automatizar las operaciones de negocio repetibles que implican varios pasos. A diferencia de RPA, estas soluciones suelen ser complejas ya que involucran varios sistemas y requieren de un profundo análisis (ej. aprobación de las solicitudes de préstamos, el procesamiento de los informes de gastos o solicitud de una nueva monitorización en Datadope por parte de un cliente.)

Ejemplo de proceso BPA en Datadope muy simplificado

 

BPM (Business Process Management)

A diferencia de BPA, que es una estrategia para mejorar procesos específicos, BPM constituye una práctica que adopta un enfoque amplio de la empresa. Es el primer paso hacia la generalización de la automatización de los procesos empresariales dentro de una empresa y dicta la teoría de la gestión del ciclo de vida de BPA.

  • Es la estrategia que debemos seguir de cara a comenzar a hacer BPA dentro de una empresa
  • Existen softwares llamados BPMs que centralizan y simplifican dichas implementaciones, con visualizaciones de flujos y en general son soluciones “low code”

 

Beneficios de la automatización

Los beneficios principales de la automatización de operaciones de procesos que más se citan son:

REDUCCIÓN DE COSTOS

Cada organización enfrenta presión global para aumentar su rentabilidad. Un enfoque para conseguirla es la reducción de costos

+

PRODUCTIVIDAD

A medida que las necesidades de tecnología de una organización crecen, la productividad se transforma en una preocupación mayor

+

CONFIABILIDAD

Los procesos automatizados aseguran que los trabajos no sean olvidados ni se ejecuten fuera de secuencia, que los datos que se ingresen sean correctos, y que se realice cualquier procesamiento especial que sea necesario

=

+ RENDIMIENTO

Un software de automatización puede ayudar a resolver estos desafíos y ayudar a aumentar el rendimiento de los sistemas

Júpiter Notebooks

Introducción

Imaginemos que podemos escribir de forma escrita en un libro qué es lo que queremos o tenemos que hacer (como un libro de recetas) y enseguida ejecutar dichas acciones o las que nos interesen, ¡Pero no es mágico!

 

Esta herramienta nos permite escribir notas en formato Markdown, indicando por ejemplo qué es lo que se va a mostrar o lo que se está realizando y luego escribiendo código en Python permite realizar las acciones necesarias y visualizarlas de ser necesario

 

Usando los cuadernos o “notebooks” de Jupyter tenemos centralizada la documentación, el código y la salida.

  • Es la herramienta base sobre la cual se crean las soluciones de la mayoría de productos Cloud del mismo tipo (Google Colab, AWS SageMaker, …)
  • Se basa y construye sobre estándares abiertos para que se pueda integrar con otras tecnologías de forma fácil (HTML, CSS, Markdown, …)
  • No tiene un propósito específico por lo que se puede utilizar para inifinidad de casos de uso
  • Jupyter es open-source
  • Es una herramienta colaborativa, se pueden compartir fácilmente los cuadernos y cualquiera persona autorizada puede cambiarlos
  • Los notebooks son versionables y también se pueden integrar los notebooks con git
  • Se pueden ampliar sus funcionalidades mediante extensions

 

Para instalar la aplicación nativa de Jupyter Notebooks se pueden seguir las siguientes instrucciones:

Arquitectura

Notebook

  • Los documentos de cuaderno (Notebooks) son documentos que contienen código y elementos de texto enriquecido (párrafo, ecuaciones, figuras, enlaces, etc.) se guardan en formato .ipynb (json) y contiene las instrucciones que ejecutará el Notebook server.

Notebook Server

  • La aplicación Jupyter es una aplicación cliente-servidor que permite editar y ejecutar documentos de notebook a través de un navegador web.
  • El servidor Jupyter se puede ejecutar en un escritorio local que no requiera acceso a Internet o se puede instalar en un servidor remoto y acceder a través de otra red.

Kernel

  • El kernel es un “motor computacional” que ejecuta el código contenido en un documento de Notebook. El kernel de ipython ejecuta el código de python. Existen kernels para muchos otros lenguajes (kernels oficiales).
  • Los kernels funcionan a nivel de “runtime”, es decir que cada vez que abrimos (instanciamos) un notebook se disponibiliza un kernel para su ejecución. Cuando se cierra se apaga dicho kernel.
  • Según el tipo de cómputo, el kernel puede consumir una cantidad significativa de CPU y RAM. Hay que tener en cuenta que la memoria RAM no se libera hasta que se apaga el kernel.

 

Extensiones conocidas

  • nteract: UI de edición y testeo de notebooks mejorada, simplemente crea y edita tus notebooks y publicalos de forma sencilla para su ejecución en un kernel de Jupyter. Solo necesita un kernel instalado para poder ejecutarlo.
  • papermill: Ejecuta tus notebooks, para poder parametrizar y ejecutar las cajas de código mediante línea de comando o con Python.

Utilizando correctamente esta extensión podemos encadenar la ejecución de varios notebooks aprovechando un único punto de inputs.

 

Casos de uso

Al ser una herramienta tan versátil y no tener un propósito específico, se puede utilizar para infinidad de casos de uso:

 

  • Como documentos de experimentos científicos
  • Como centro de documentación con ejemplos
  • Como parte de la plataforma de explotación de datos de grandes compañías (véase ejemplo Netflix)
  • Como procedimientos o parte de procedimientos de RPA o BPA automatizados o semiautomatizados

 

Ejemplo práctico de automatización con Jupyter

Para este ejemplo se emplea la implementación de Jupyter de Google Colab, por su facilidad de puesta en marcha.

 

Abrir el notebook de ejemplo con este enlace.

 

Un caso habitual de nuestro día a día podría ser que como parte de la entrega de proyectos a clientes tenemos que generar una documentación y además, dicha documentación sigue siempre la misma estructura aunque difiere en contenido.

¿Sería un proceso factible generar dicha documentación con menos esfuerzo? Probablemente. Se podrían ir desgranando los pasos que seguiría un humano para generar dicha documentación:

  1. Crear un nuevo documento o copiarlo a partir de uno existente
  2. En base a la información que conocemos de base, generar el documento, reformatear, etc.
  3. Guardar el documento
  4. Subir el documento

 

¿Es un proceso automatizable? Totalmente. Es un proceso tipo RPA. Si lo vamos a hacer en Jupyter con Kernel de Python, simplemente debemos de pensar y localizar librerías que nos permitan abrir, manipular, renderizar y guardar documentos de algún formato conocido como .odt y además utilizar las opciones de input propias de Jupyter.  También podríamos utilizar por ejemplo la librería secretary, que nos permite renderizar documentos odt con marcas de Jinja (un formato de aplantillado muy común en Python).

 

  1. Se constituye la plantilla en odt
  2. Se sube a un directorio en Google Drive
  3. Se construye el Notebook
  4. Se puede ejecutar a la demanda.

 

Tratar de hacer funcionar el Notebook rellenando los inputs y ejecutando las cajas de código, revisar que el nuevo documento renderizado está correcto en base a nuestros inputs.

Conclusiones finales

 

  • Tal vez no sea la mejor herramienta para hacer BPM ya que no está diseñado a propósito para ello, pero es opensource y sus posibilidades de desarrollo son infinitas. Además permite una organización de los libros y aunque alguna parte no se pueda automatizar queda documentada.
  • Lo importante no es siempre la herramienta sino comenzar por alguna parte, puede ser un buen punto para comenzar a pensar en qué procesos del día a día podemos ir documentando o automatizando parte e ir mejorando

 

 

 

 

Iván Vázquez Andrea

Lo realmente valioso se encuentra en los pequeños detalles. ¿A qué esperas para descubrirlos?

Ana Ramírez

Ana Ramírez

¿Te ha resultado interesante?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

SÍGUENOS

CATEGORÍAS

ÚLTIMAS ENTRADAS