php-cli

Entornos efímeros para un proyecto.

Submitted by Oskar on Thu, 27/10/2022 - 21:52

El otro día me pedían que analizase la petición de un cliente, el cliente planteaba la necesidad de realizar una teréa periódica de forma manual, no llevaría más de 2 o 3 horas como mucho, una vez al mes, y otra tarea anual que llevaría unas cuantas horas, pero que en cómputo general entre las dos tarenas no supondría más de +-40 horas.

Las tareas a realizar son:

  • Generar un informe.
  • Subir el informe a un directorio en un servidor.
  • Comunicar por correo electrónico la ejecución de la tarea.


Eso a todo el mundo le puede parecer perfecto, tareas que se repiten 1 vez al mes, pero uno de mis muchos TOCS es la automatización de tareas, sobre todo cuando son tareas repetitivas, mecánicas y que se pueden programar, así que me puse a pensar como sería la forma más sencilla para montar un robot que ejecutase la tarea.

Montar un robot en PHP es sencillo, existen varios "task runners", posiblemente el más conocido de todos ellos es Robo.li, pero existen otras alternativas como programar comandos en Symfony con una instalación mínama o en otro caso se puede plantear con algún otro microframework que trabaje con CLI como Minicli, en resumen programar la ejecución de las tareas será entretenido ya que será código puro y nada de front-end.

A lo que más le di al coco era a la arquitectura de sistemas, y veía tres opciones, un proyecto web levantado todo el rato que se ejecuta con un cron definido, un proyecto web que se levantase bajo demanda la arquitectura y que una vez finalizado se apaga, pero aunque esta apagado siempre esta encendido esperando una petición, un entorno efímero que se levanta para ejecutar la tarea y luego se vuelve a caer,  el sistema se levanta cuando se tiene que ejecutar la tarea y luego se apaga el entorno y no es accesible.

 

Para mi las ventajas de un entorno efímero son los siguientes:

  • Se levantan los entornos únicamente cuando se tienen tienen que llevar a cabo las tareas, luego se apagan, y no vuelven a ser accesibles, más seguros.
  • Al esta apagados consumen menos recursos del sistema dejando recuros para otros proyectos que si necesiten estar levantados todo el rato.

Las desventajas que le veo

  • Al ser un entorno completamente en PHP-CLI es más dificil de depurar, pero no imposible.
  • Al ser un entorno efímero posiblemente no existirá una bbdd, la mejor opción en esos casos habría que ver como registrar los logs del sistema en algún lado.
  • Es necesario tener un cron-job que levante todo el entorno, ejecute el proceso y luego vuelva a apagar todo.
  • Seguramente se tenga que construir uno o más contenedores de Docker para llevar a cabo todas las tareas.

 

La propuesta de arquitectura es sencilla:

Subscribe to php-cli