CloudCron, a simple distributed cloud friendly cron for the masses.

CloudCron, a simple distributed cloud friendly cron for the masses.

Hace un tiempo tuve la suerte de poder ser un “early adopter” de esta magnífica solución para hacer mucho más “friendly” la ejecución de crons en infraestructura en el Cloud. Los amigos de CAPSIDE (architects of the digital society) me la dieron a conocer y, para un proyecto anterior, la pude poner en marcha y ver su simplicidad y sus muchas ventajas respecto a otras soluciones como pudieron ser: builds de Jenkins o los crons vía command.

CloudCron by Capside

Todavía no he encontrado ninguna solución, aunque estuve valorando otras como Chronos sin mucho éxito, que realmente pueda aportar un valor añadido a la ejecución de crons. Cierto es que, para mí, ejecutar crons tiene que tener una base muy sólida ya que es algo antagónico en el mundo Cloud y ya no diré en DevOps (pero existe).

Bien, vayamos a ver ahora que nos aporta CloudCron como Solución a nuestro “problema”:

  • Backwards-compatible, es decir, podremos entregar un archivo cron y ejecutará el mismo comando que ya teníamos. No será necesario una reprogramación.
  • Cost-Effective, tendremos una infraestructura mínima con un solo nodo trabajador.
  • Scalable/Parallelizable, podremos escalar nuestros nodos trabajadores cuando sea requerido.
  • Red/Black deployment friendly, podremos implementar un nuevo nodo trabajador con un nuevo código o parcharlos sin tener un tiempo de inactividad.
  • No time limits for the task execution, las soluciones basadas en Lambda (AWS) tienen un tiempo máximo de ejecución de 5 minutos, sin tener en cuenta la adaptación de estos crons a un formato aceptado por Lamda.
  • CI/CD Pipeline friendly, podremos tener la oportunidad de controlar tanto el sistema de versiones como desplegarlos como parte de nuestro sistema CI/CD.
  • On-premise friendly, podremos ejecutar nuestros trabajos localmente.

¿Cómo funciona CloudCron?

CloudCron está divido en dos partes. Por un lado, tiene un “compilador cron”, que transforma un archivo cron en eventos programados de CloudWatch que hacen cola en el servicio SQS de AWS. La otra parte, ejecuta los eventos en una o más instancias (trabajadores).

Nuestro archivo de cron se transformará en un grupo de eventos de CloudWatch que se enviarán a CloudFormation para que se puedan administrar como un todo.

Estos eventos de CloudWatch insertan un mensaje para cada evento cron en la cola SQS, que será sondeada por un proceso de trabajo. Este proceso de trabajo se ejecuta en la misma máquina (o máquinas) donde el cron anterior podría ejecutar sus trabajos.

Realmente es bastante “simple” su funcionamiento y: ¡funciona!. Si queréis podéis colaborar en su Comunidad de GitHub, recomendable.

Autor: Joakim Vivas

comments powered by Disqus