Janitor Monkey es un servicio que se ejecuta en la nube de Amazon Web Services (AWS) y su función es buscar recursos no utilizados para limpiar. El diseño de Janitor Monkey es lo suficientemente flexible como para permitirle trabajar con otros proveedores y recursos de la nube. El servicio está configurado para ejecutarse de forma predeterminada, de lunes a viernes no festivos a las 11:00. El horario puede ser fácilmente configurado para adaptarse a las necesidades de cada negocio.

Ya que siempre puede haber excepciones cuando se desea mantener un recurso no utilizado, antes de que éste sea eliminado por Janitor Monkey, el propietario recibirá una notificación con un número de días (que se puede configurar), antes del tiempo efectivo de la limpieza. Esto evita que se borre un recurso que todavía se necesite. El propietario del recurso puede entonces detener el borrado de los elementos que quiere dejar aun en los repositorios tratándolos como excepciones y JM los dejará libres.

¿Por qué se requiere un servicio como este?

Una de las grandes ventajas de moverse a un centro de datos en la nube privada es que se tiene acceso rápido y fácil a nuevos y casi ilimitados recursos. Para crear una nueva versión de cualquier aplicación se puede construir rápidamente un nuevo clúster, o cuando se necesita más espacio en disco, solo se amplía la conexión a un nuevo volumen, hacer copias de seguridad de tus datos es una tarea que se hace de manera instantánea. Para poner a prueba una nueva idea se crean nuevas instancias de tus aplicaciones al llegar al trabajo de manera bastante simple y sin demoras.

La desventaja de esta flexibilidad es que también es muy fácil perder la pista de los recursos de la nube que ya no son necesarios. Tal vez se te olvidó de borrar el clúster que tenía la versión anterior de la aplicación, o nadie se percató de destruir el volumen cuando ya no se necesitaba el disco adicional.

Tomar instantáneas es ideal para copias de seguridad, pero ¿realmente se necesitan los respaldos de hace 12 meses?

No sólo es la falta de memoria la que puede causar problemas, por ejemplo, errores de red pueden causar que tu solicitud para eliminar un volumen no utilizado, simplemente se pierda y la acción al no considerarse crítica no se ejecute.

A menudo hay recursos no utilizados que implican un costo en dinero por mantenerlos en la nube y se necesita una solución para corregir este problema. Un buen mantenimiento propio o contratado, con ingenieros diligentes puede eliminar manualmente los recursos no utilizados, pero se requiere una manera de detectarlos y limpiarlos de forma automática. La solución es Janitor Monkey.

Cómo actúa Janitor Monkey

Janitor Monkey trabaja en base a un proceso de «marcar, notificar y eliminar». Cuando la herramienta marca un recurso como un candidato a limpieza, se programa un tiempo para la eliminación. El tiempo de borrado se especifica en la regla que marca el recurso.

Todo lo marcado se asocia con un correo electrónico propietario, que puede ser especificado desde una etiqueta en la configuración de Janitor Monkey o se puede obtener de la información del sistema interno. La forma más usual es usar la dirección de correo electrónico predeterminado para eso se tom el email que tu cuenta utiliza para todos los demás recursos.

Se puede configurar un número de días para definir cuándo Janitor Monkey debe dejar de enviar notificaciones al propietario del recurso antes de la eliminación programada. Por defecto, el número es 3, lo que significa que el propietario recibirá una notificación 3 días hábiles antes de la fecha de borrado. Durante ese período de 3 días el dueño del recurso puede decidir si lo quiere mantener.

En caso de querer conservar algo, el propietario puede utilizar una sencilla interfaz REST para marcar el recurso como un elemento que no debe ser limpiado. El propietario siempre puede utilizar nuevamente la misma interfaz para quitar la bandera del elemento marcado y Janitor Monkey será capaz entonces de manejar el recurso nuevamente.

Cuando el servicio ve un ítem marcado como un candidato a limpieza y el tiempo de eliminación programada ha pasado, se eliminará el recurso. El propietario también puede hacer una eliminación manual antes si así lo requiere, para liberar el recurso anterior y ahorrar costos.

Cuando el estado de los cambios hace que un recurso no sea un candidato de limpieza, por ejemplo, un volumen de EBS individual que se une a una instancia, se desmarca el recurso en Janitor Monkey y con esto el marcado para eliminación de ese elemento en particular nunca sucede.

Si quieres probarlo, consulta la Guía de Inicio Rápido «en inglés» para aprender sobre la configuración y primeros pasos del uso de este servicio.