Brooklyn

Brooklyn, desarrollado por CloudSoft y liberado bajo licencia Apache es una biblioteca Java y panel de control para desarrollo de aplicaciones multicloud IaaS construido sobre jclouds.


 * permite elegir un proveedor cloud y desplegar la aplicación con un solo clic.
 * permite definir políticas que monitorizan el funcionamiento de la aplicación.
 * cierto nivel de descripción topológica de la aplicación

Podría considerarse como inspirado e inspirador de CAMP, o incluso como la única implementación de CAMP actualmente disponible.

Entidades

 * Es el envoltorio Brooklyn de cada uno de los componentes de la aplicación (un archivo WAR o JBox, una base de datos, un cluster formado a su vez por varias entidades...)
 * Son controladas por Brooklyn
 * Definen diversas propiedades:
 * atributos de configuración.
 * el cloud sobre el que se despliega la entidad y sus credenciales
 * memoria que se le debe asignar
 * usuario y pwd del administrador
 * se describen mediante un archivo externo (property de Java)
 * sensores y efectores
 * los sensores auditan el estado de una entidad
 * tiempo de latencia
 * uso de CPU
 * los efectores (effectors) permiten actuar sobre ella
 * otras entidades (normalmente Políticas) pueden suscribirse a los sensores de una entidad, utilizando un mecanismo de notificaciones similar al patrón Observador.
 * localización. indica la localización de la entidad (localhost, o proveedor y datacenter) para lo que Brooklyn define una catálogo de proveedores/datacenters.
 * otras entidades (normalmente Políticas) pueden suscribirse a los sensores de una entidad, utilizando un mecanismo de notificaciones similar al patrón Observador.
 * localización. indica la localización de la entidad (localhost, o proveedor y datacenter) para lo que Brooklyn define una catálogo de proveedores/datacenters.

Aplicaciones

 * son contenedores de entidades
 * definen los componentes que forman el sistema
 * definen el despliegue
 * definen las políticas runtime
 * define la arquitectura mediante una jerarquía de componentes (no se representan explícitamente las conexiones, aunque implícitamente Brooklyn mantiene esta información y podría reconstruirse un diagrama de arquitectura/topología).

Políticas

 * definidas a nivel de entidad
 * deetectan la salida de los sensores (eventos) o son periódicas
 * actúan sobre los efectores (p.ej. arrancar o apagar un servidor o un cluster)
 * se pueden conectar políticas unas con otras (son entidades) y también arrancarlas y pararlas.

Enrichers

 * son un tipo especial de políticas que pueden generar eventos de alto nivel a partir de otros eventos generados por los sensores (agreagación y adaptación de eventos). Ejemplos:
 * Autoresizing Policy. Cambia el tamaño de un cluster en función de su uso.
 * Failure Detection Policy. Detecta el fallo o recuperación de una entidad.

Panel de control

 * Se ejecuta en un servidor
 * Tiene una consola gráfica y otra de línea de comandos
 * Ofrece tb un API REST para manejar las aplicaciones