OpenFaaS, Serverless Functions Made Simple for Docker & Kubernetes

OpenFaaS Grafana

OpenFaaS es un marco para “empaquetar” código, binarios o contenedores como funciones sin servidor en cualquier plataforma: Windows o Linux. Hasta aquí, “parece fácil” pero realmente es una maravilla ya que nos elevará a un nuevo nivel.

Veamos sus principales Highlights:

  • Podremos crear funciones desde plantillas de código.
  • Contruir funciones como se fueran imagenes Docker.
  • Hacer Push de estas imagenes a Docker Registry.
  • Hacer Deploy de las funciones.
  • Invocar las funciones.
  • Y un largo etc…

Pero realmente la gracia de todo esto, es que dispondremos de un portal de suma facilidad de uso e instalaciones mediante un solo clic, podremos crear funciones en cualquier idioma para Linux o Windows y paquetizarlas en formato imagen Docker, ejecutarlas en hardware existente o nube pública/privada (Kubernetes y Docker Swarm en forma nativa), unas CLI disponibles con formato YAML para plantillas y funciones de definición y…. escala de forma automática a medida que aumenta su demanda. ¿Brillante, no?.

Podemos ver en la siguiente imagen como está estructurada su arquitectura de componentes:

Overview of OpenFaaS

OpenFaaS es un proyecto independiente creado por Alex Ellis y formado por una más que creciente comunidad de colaboradores.

API Gateway

Para mi, es una de las piezas más clave, veamos: esta nos podrá proporcionra una ruta externa hacia nuestras funciones y recopilar métricas, de forma nativa, a través de Prometheus y esta monitorización es la que va a permitir el escalado automatizado de acuerdo con la demanda alterando, si hace falta, el número de contenedores en funcionamiento ya sea en Docker Swarm o Kubernetes. Otra característica, por ejemplo, será que mediante la interfaz del portal nos permitirá invocar funciones y crear otras nuevas.

Grafana tiene ya creado un más interesante dashboard de ejemplo que nos permitirá visualizar muy rápidamente la monitorización de nuestras funciones.

Watchdog

Watchdog es el servicio que nos permitirá convertir las funciones en imagenes Docker, al agregar “Function Watchdog” (webserver de Go). También, es el punto de entrada que permite que las solicitudes HTTPS se reenvíen al proceso objetivo a través de STDIN y su respuesta, se enviará a la persona que ha realizado la llama mediante STDOUT desde la aplicación.

En el Blog del autor (Alex Ellis), podemos encontrar un interesante artículo donde nos deja bastante ejemplos de su utilización o en GitHub.