Skip to Content

La semana pasada tuve el privilegio de estar en el evento de SAP Tech Ed en Las Vegas. Conoci mucha gente, uno de ellos Craig Cmehil  quien me sugirio que siguiera con los blogs en español, y tambien, acudi a muchas sesiones informativas acerca de SAP, HANA, IOT. Durante la nota de inauguracion por parte de Bernd Leukert, se dieron a conocer ciertos anuncios. El primero fue acerca del servicio de FaaS en la nube de la plataforma de SAP. El otro acerca de ABAP en la nube. El proposito de este blog es acerca del servicio de functiones en la nube de SAP.

Este blog se puede encontrar en ingles tambien aqui:

 

SAP Cloud Platform (SCP) Cloud Fundry (CF) – Function as a Service (FaaS)

 

Que es?

El servicio de Functiones de la plataforma de la nube de SAP permite a companias desarrollar, correr y manejar funcionalidad de aplicaciones (tareas o procesos mas pequenos) en lugar de una implementacion mas grande en un ambiente tradicional sin necesitar tanta infrastructura para correr una aplicacion.

El porque tiene sentido?

esto absolutamente tiene sentido debido a que las companias continuan explorando en la PLataforma de la nube y servicios, el Software continua madurandose y tomar ventaja de muchos servicios y recursos que le permiten crecer o disminuir como sea necesario sin tener un costo adicional de antemano. Este servicio esta basado en un modelo que solo require pagar los recursos que se utilizan. Mas documentacion de SAP acerca del tema se puede encontrar en el siguiente enlace para ver el diagrama de arquitectura del ambiente basado en la nube.

https://help.sap.com/viewer/94fafb5bcf8f4c5cbdd0cdd8e358183c/Cloud/en-US/76c96fb29dbf4ee6acfba8ce6394fad6.html

 

A continuacion, me gustaria compartir mis experiencias de desarrollo en el servicio de functiones en la nube de SAP usand my cuenta gratis.

Mientras uses la cuenta gratis de la nube de SAP, asegurate que utilizes la region de Cloud Foundry (CF) y crees una “subaccount”. Abilita las Beta Features para porder seguir con este ejercicio. Recuerda que esta feature todavia no esta disponible en usod e produccion.

Una vez que el sub account este creada, navega ahi (faasDev)

y abilita “Enable CF“, en mi case usando la cuenta gratis (trial account).

P1854054600trial_p1854054600trial

una vez creada, notaras la seccion del lado derecho como se muestra en la foto.

Otro pre-requisito es tener un espacio definido. El espacio no esta definido por default, entonces hay que crear uno. Yo llame al mio, testFaas con todos los settings de default.

 

en el nivel de la “subaccount’, necesitamos darle click en el boton Edit para poder ir a la seccion de Entitlements. Esta seccion nos permitira crear funciones en el ambiente de CF y eventualmente correr nuestras funciones FaaS. Batalle un poco en esta seccion porque no encontraba lo q necesitaba, pero despues de leer varias veces y consultar con Maximilian Streifeneder lo pude encontrar. – gracias/merci/thanks Maxi

Despues de dar click en Edit, dale scroll hacia abajo a la seccion de funciones y cambia el valor de 0 a 1.

 

Luego guarda los cambios, y vayamos al area de los espacios, SPACE. Ahi podemos ver el servicio de functiones dentro del Service Marketplace

 

Despues, vayamos ahi, y demos click en la parte de instances para poder crear una instance del servicio..

 

Demos clik dos veces.. y dejemos los valores de default en el wizard hasta llegar al paso de asignar un nombre y seleccionar Finish.

No olvides leer la documentacion oficial de SAP para ver las reglas de limites de coniguraciones permitidas en cada cuenta.  Una vez mas te recuerdo que este blog y las features todavia estan en Beta release y pueden cambiar sin previo aviso.

Cuando el servicio Function sea creado, se veera asi en el Dashboard.

 

Pudiera ser que debas tener que dar permiso a la cuenta del servicio de la nube para poder acceder los servicios.

 

Una vez dentro del servicio de Funciones, puedes ver el dashboard en blanco

Como estamos dentro del servicio, creemos una funcion. La llamare sayhelloworld y deja los settings de default. (Node v8.1.0). Mas informacion acerca del lenguaje de Nodejs se puede encontrar en su sitio nodejs.org

Una vez que la funcion sea creada, podemos ver el handler (codigo de nodejs)  en el cual se ejecutara esta funcion cuando sea invocada.

y la parte de abajo de la misma ventana

Nota los diferentes parametros, triggers, y otros settings. Durante este desarrollo me pregunte para que servira todo esto.

Si regresamos a la pag de funciones, espero ver mi funcion nueva, igualmente en la pag de triggers y secrets – Hasta ahorita no he creado ningun triggers / secrets entonces continuemos explorando.

 

Por definicion un trigger es un objeto que ejecuta una operacion (o funcion)  asi que le di click en la pag de triggers, cree uno, le di un nombre y su tipo sera HTTP * otros tipos son Timer (utilizan syntax de chron jobs – que es tambien conocido como una funcion que esta programada para ejecutarse a cierta hora/dia) o un Evento (binding un trigger a una funcion para reaccionar a un evento, por ejemplo en el servicio de mensajes empresariales – tambien conocido como enterprise event messaging service). Debo seleccionar esta funcion que se ejecutara cuando se invoque el trigger

Despues de crear el trigger, entonces se muestra en la pag existente.

Como seleccione el tipo HTTP, pense que se llamaria desde un URL para invocarlo. Creo que este tipo de trigger es el mas sencillo para consumir una funcion al igual que cualquier otro servicio web. LAs diferentes maneras de probar este servicio son las siguientes:

  • Browser call –  veamos en el tab de network en las herramientas de desarrollo. Me interesa ver el tiempo de ejecucion y tambien que tan bien o mal se tarda esta operacion mas el tiempo de respuesta… si este ejercicio fuera en produccion, entonces el cobro seria por el numero de recursos utilizados en la nube, ya que es el proposito de utilizar un servicio de funciones FaaS.

 

Al abrir el tab de network, podemos ver el tamano del request y la respuesta (287 B)  y el status 200 (HTTP OK)

 

Añado, al analyzar el tab de network, podemos ver el header de respuesta asi como otras propiedades de interes.

y con la herramienta postman  (la misma respuesta pero differente tiempo de descarga 224ms y HTTP OK)  Me pregunto porque la diferencia de tiempo de ejecucion.

 

nota: hay dos formas mas (Event and Timer) para invocar estas funciones, sin embargo, no mostrare esas formas en este blog.

El Timer utiliza syntax de chron job [Seconds, Minutes, Hours, Month, Year]

Los Events requiren unos pasos extras para abilitar el sevicio de mensajes de la nube. Estos pasos los puedes encontrar aqui:

https://help.sap.com/viewer/788fa4c7585e415187e347e904010cee/1808.500/en-US/56cf82e75f2a42de827b5dc30e48db64.html

 

Finalmente, en la pag principal del Servicio de Funciones, podemos ver el Dashboard.. en esta pag, podemos ver los logs de las funciones que hemos definido. Nota que la captura del log se hace desde el codigo de nodejs utilizando el comando console.log

 

Ventajas del modelo de la arquitectura de funciones:

  • Pago por consumo de recursos – en lugar de pagar por un paquete de hosting completo
  • Facil de iniciar, escalar, y promover (este demo me tomo approx 10 mins)
  • Menos tiempo en crear codigo esqueleto – con solo unos clicks pude  generar todas las partes, luego era mi turno de añadir codigo de logica.

Diferente del desarrollo de software tradicional:

  • Es una forma diferente de diseñar software – pensar en forma modular, escalable y en microservicios
  • Utilizacion de recursos tiene que ser considerado durante el diseño
  • Deployments Independientes – functiones individuales deben de pooder ejecutarse y funcionar completamente por si mismas

 

Para documentacion official del servicio:

https://help.sap.com/viewer/94fafb5bcf8f4c5cbdd0cdd8e358183c/Cloud/en-US/3418355e1497473baf071e28294dde41.html?q=SAP%20Cloud%20Platform%20Functions

 

mi nota personal:

Me gusta la direccion en la cual SAP se esta dirigiendo… ofreciendo FaaS similar a AWS y tambien usando tecnologia open source para lograr y empujar barreras de la tecnologia mas nueva, SAP esta usando principios y fundamentos de Cloud Foundry mientras continua mejorando e inovando en el area de desarrollo. Muy bien SAP!

 

Espero que puedan compartir sus experiencias en las funciones que puedan crear al usar este servicio. Gracias por su tiempo.

 

 

Sergio

To report this post you need to login first.

3 Comments

You must be Logged on to comment or reply to a post.

  1. Sergio Guerrero Post author

    para la comunidad en español…

    cuáles lenguajes de programación son los mas usados? en el blog en inglés hay preguntas acerca de soporte de lenguajes como Python y Go aparte de nodejs. Quisiera saber cuál es la comparación de lenguajes en la nube (cualquiera q sea, aws, google, azure)

    (1) 

Leave a Reply