Get it on Google Play

Introducción a OpenWhisk y las funciones de IBM Bluemix

24-11-2017
 

Apache OpenWhisk es lo que se conoce como una plataforma FaaS(Function as a Service). Es Open Source y la tenemos también disponible en la plataforma IBM Blue Mix.

OpenWhisk Arquitecture

OpenWhisk Arquitecture

En una arquitectura de este tipo tenemos los feeds, encargados de disparar los triggers(Entrada de un mail, alta de un registro, nuevo tweet, etc.), y acciones que se encargan de hacer algo(Registrar algo en un log, calcular lo que sea, devolver un listado, transformar un dato, etc.).

El pegamento de todo esto, y lo que lo hace muy potente, son las reglas. Aquí un arquitecto monta la aplicación en base a cuando pase algo(Configurar un trigger) hacer algo(Ejecutar una accion).

Los triggers y acciones pueden agruparse en paquetes y namespaces para que todo quede mas ordenadito.

Las funciones y los triggers pueden ser creadas en un montón de lenguajes distintos como Javascript, Java, Python, PHP o incluso pueden ser contenedores Docker.

Trasteando con OpenWhisk

Aunque podemos instalarlo directamente en nuestra máquina, nosotros aquí usaremos Vagrant:

Instalamos y arrancamos el entorno(Esto lo hago sobre un Ubuntu Linux):

git clone --depth=1 https://github.com/apache/incubator-openwhisk.git openwhisk

cd openwhisk/tools/vagrant

./hello

Entramos en la máquina virtual que Vagrant nos ha creado

vagrant ssh

Invocamos nuestra acción de ejemplo

wsk action invoke /whisk.system/utils/echo -p message hello –result

Creando nuestra primera acción

En este caso creamos nuestra primera función usando NodeJS, al fichero lo llamaremos hello.js:

function main() {
    return {payload: 'Hello world'};
}

Y ahora:

# Creamos la acción
wsk action create hello hello.js

# Comprobamos que esta disponible en el listado de acciones
wsk action list

# La invocamos
wsk action invoke hello

# Comprovamos el resultado
wsk activation result <id acción>
# o
wsk activation result --last
# o
wsk activation list

Creando y ejecutando un trigger

Vamos a ver ahora como lo hacemos ahora para

# Creando nuestro trigger
wsk trigger create miTrigger

# Comprobamos que nuestro trigger esta creado
wsk trigger list

# Ya podemos disparar nuestro trigger
wsk trigger fire miTrigger

Asociación de triggers y acciones mediante reglas

Aquí es donde esta la madre del cordero, vamos a crear una regla que ejecute la acción ‘hello’ cuando se dispare ‘miTrigger’:

# Creamos la regla
wsk rule create myRule miTrigger hello

# Ejecutamos el trigger
wsk trigger fire miTrigger
# Comprobamos que se ha ejecutado
wsk activation list

# Deshabilitamos la regla.
wsk rule disable myRule

Modificando nuestra aplicación para que acepte parámetros

Editamos nuestro fichero ‘hello.js’

function main(params) {
    return {payload:  'Hello, ' + params.name + ' from ' + params.place};
}

Actualizamos y volvemos a ejecutar nuestra aplicación.

wsk action update hello hello.js
wsk action invoke --result hello --param name Bernie --param place Vermont

Reflexiones

Algunas reflexiones sobre el uso de OpenWhisk y sobre el uso de funciones sobre la plataforma IBM Bluemix:

  • Esto implica un nuevo paradigma a la hora de crear soluciones. Más fácil de entender para los usuarios y personal no técnico.
  • Esto escala muy bien y tiene muchas posibilidades de integración.
  • Mayor reutilización de código y seguro que aparecerá un gran marketplace de feeds y acciones en poco tiempo.
  • Te cobran solo por el uso de las funciones y no por la disponibilidad como es habitual en soluciones Cloud.
  • Podemos enlazar funciones escritas en distintos lenguajes y plataformas.
 

Leave a Reply