FaaS (Function as a Service) displonible en CF

Introducción

Ahora que ya sabíamos las diferencias entre IaaS, PaaS, SaaS y DaaS aparece el FaaS en Cloud Foundry. Y aunque esta funcionalidad ya tiene un tiempo en CF, me gustaría hablar de ella ya que de momento no es muy conocida.

Un inciso, si no te suenan las siglas anteriores te recomiendo que te informes ya que son nuestro día a día actualmente.

Resultado de imagen de Faas

Pero antes de empezar a configurar nuestro propio FaaS en Cloud Foundry… ¿Qué es eso de FaaS y de qué me sirve?

La idea detrás del FaaS es poder tener pequeñas lógicas (funciones) bajo un modelo Serverless computing y que puedan ser ejecutadas por las aplicaciones de manera independiente como si de una API se tratase. Pero no se limita a ser una API, pueden ser disparadas por eventos o por jobs.

Esto permite tener unidades de código gestionadas de manera dinámica sin que nos tengamos de preocupar de su carga. Gracias a esta filosofía el precio de estas funciones es escalable y variable según el uso, ahorrando costes cuando no se utilizan y optimizando recursos cuando son necesarias por un gran número de usuarios/aplicaciones.

Actualmente esta funcionalidad esta en Beta así que hoy os enseñare a habilitar las funciones Beta de CF y crear nuestro primer «hola mundo» en FaaS.

Aquí un pequeño vídeo presentación cortesia de SAP

Manos a la obra

Preparación del entorno CF Beta

Primero prepararemos nuestra subacount de CF para que acepte las funcionalidades Beta.

  • Accedemos a nuestra cuenta de SAP Cloud Platform y vamos al entorno de Cloud Fondry
  • Al crear una cuenta Cloud Fondry los servicios Beta están deshabilitados por lo que crearemos una nueva subcuenta y marcaremos la opción «beta features»
  • Una vez creada la subcuenta accedemos a ella y habilitamos el espacio de CF
  • Una vez habilitado el espació Cloud Foundry, creamos un nuevo space

Habilitando la suscripción FaaS y creando una instancia

Ahora que tenemos la base, vamos a suscribir el servicio FaaS:

  • Volvemos a la subcuenta y vamos a la opción Entitlements
  • Una vez allí, pulsamos el botón «Edit» y buscamos la sección Function y añadimos tantas unidades como necesitemos, en mi caso me permite 2. Una vez seleccionadas guardamos.

Ahora que tenemos la opción de Functions disponibles, suscribimos el servicio de la siguiente maneta:

  • A nivel de subaccount vamos a Subscriptions y seleccionamos Functions

En functions, subscribimos el servicio con el botón Subscribe

Por ultimo crearemos un rol y lo añadiremos a nuestro usuario. AL ser una demo, crearemos un rol único de administrador y usuario.

  • A nivel de Subaccount vamos a Role Collection y creamos una nueva Role Collection con los roles de las functions
  • Añadimos a nuestro usuario los roles necesarios, vamos a la opción trust configuration y seleccionamos el servidor de credenciales, en este caso SAP ID Service
  • Allí añadimos nuestro usuario (mail) y seleccionamos el rol que hemos creado

Ya tenemos todo listo, nos queda la instancia

  • Para crear la instancia accederemos al nuevo Space y en la opción Service Marketplace seleccionaremos la opción «Functions«
  • En la definición de servicio crearemos la nueva instancia tal y como se indica en la siguiente imagen (especial atención a los parámetros) y como nombre por ejemplo «faasfunction»

Una vez creada la instancia tenemos toda la infraestructura lista para la acción. Vamos a crear nuestra primera función.

Creando la función con webIDE

Si has llegado aquí te voy a confesar un secreto, no crearemos nada, utilizaremos el template de WEBIDE que nos acelerará la construcción.

  • Primero habilitamos la extensión de Functions en WEBIDE
  • Una vez activado, accedemos a WEBIDE y vamos al menú superior y seleccionamos: File > New > Project from Template, seleccionamos la opción «Function MTA project (Beta)«
  • Añadimos los datos que nos vaya solicitando el wizard, aquí os añado los datos que he utilizado yo

Vamos a parar un momento para entender que ha creado el asistente:

  • Los dos ficheros a tener en cuenta son
    • index.js: Contiene el código en Node.js que se ejecutará
    • faas.json: Contiene la configuración de la función y del disparador de la función

Como vemos el fichero faas.json se indica la configuración del fichero a ejecutar relacionada con la función. En la parte de triggers se define un trigger que ejecutará la función indicada. Tranquilos, pronto todo cobrara sentido.

  • Como ya hemos creado una nueva instancia FaaS utilizaremos la instancia ya creada por lo que modificaremos el fichero MTA para que al deployar utilicemos la misma instancia.
  • Ya solo nos queda hacer build sobre el proyecto y deploy como cualquier proyecto en CF (Botón derecho sobre el proyecto y seleccionamos build. Una vez creado el fichero mtar botón derecho y deploy)

Aquí podéis tener un fallo en el deploy, pero que no cunda el pánico el deploy se ha realizado (cosas de la versión beta 😉 )

Alta de la función en el servicio

Ya solo nos queda dar de alta la función deployada y hacer una prueba de ejecución. Para ello vamos al servicio que hemos suscrito a nivel de subaccount y seleccionamos en «Go to Application«

Al acceder veremos que nuestra primera función ya esta preparada:

Des de «Functions» podemos modificar la función que hemos creado, acordaros de guardar y deployar

Desde triggers podemos llamar al servicio de funciones para ver el resultado:

Ya solo nos queda ejecutar la función y ver el resultado:

Como veis es muy sencillo preparar funciones útiles para ser utilizadas en cualquier aplicación y sin complicaciones de asignación de recursos, cosa que en Cloud Foundry de vez en cuando hay que ir controlado si no usamos «autoscaler».

Esta entrada se queda a un primer nivel, configuración, ejecución y poco mas, si queréis ampliar información aquí tenéis la guía oficial:

https://help.sap.com/viewer/94fafb5bcf8f4c5cbdd0cdd8e358183c/Cloud/en-US/3418355e1497473baf071e28294dde41.html


Hasta aquí la introducción de FaaS. Si has llegado hasta aquí es que has configurado todo el entorno, felicidades 🙂

Quieres estar a la última… Suscribete

2 Comments

Add a Comment

Tu dirección de correo electrónico no será publicada.

Pin It on Pinterest