¿Qué es Spring Cloud Function?

Spring Cloud Function es el proyecto dentro del ecosistema Spring Cloud que da soporte al paradigma Serverless/FaaS (Functions As A Service).

Así Spring Cloud Function permite la creación de lógica de negocio a través de funciones ofreciendo un modelo de programación uniforme independiente a nivel de desarrollo y despliegue de los proveedores Serverless (AWS Lambda, Google Functions,…). Spring Cloud Functions habilita las características de Spring Boot (autoconfiguración, inyección de dependencias, métricas) en estos proveedores.

Un ejemplo de aplicación Spring Boot encapsulando una función que transforma una cadena a mayúsculas sería algo como esto:

Las principales características de Spring Cloud Function podrían resumirse en:

  • Permite la elección de estilos de programación: reactivo, imperativo o híbrido.
  • Conversión transparente de tipos de entradas y salidas.
  • Soporte REST para exponer funciones como puntos finales HTTP, etc.
  • Transmisión de datos (a través de Apache Kafka, Solace, y otros) a y desde funciones a través de Spring Cloud Stream.
  • Despliegue de funciones empaquetadas como archivos JAR con un cargador de clases aislado, para soportar despliegues multi-versión en una única JVM.
  • Empaquetado de funciones para despliegues, específicos para la plataforma destino (por ejemplo para Fn Project, Project Riff, AWS Lambda,..).
  • Adaptadores para AWS Lambda, Microsoft Azure, Apache OpenWhisk, Fn Project,…

Una forma rápida de probar cómo funciona Spring Cloud Function es probar sus ejemplos…para eso:

  1. Me descargo el repo de Spring Cloud Function:

git clone https://github.com/spring-cloud/spring-cloud-function

  1. Voy a la carpeta spring-cloud-functionspring-cloud-function-samplesfunction-sample-pojo

Puedo ver cómo es el código de este ejemplo:

https://github.com/spring-cloud/spring-cloud-function/tree/master/spring-cloud-function-samples/function-sample-pojo/src/main/java/com/example

  1. Hago el install del proyecto, en nuestro caso con Maven

mvn clean install

  1. Ejecuto el ejemplo

java -jar ./target/function-sample-pojo-2.0.0.RELEASE.jar

  1. Una vez arrancada la función puedo invocarla por su endpoint REST con

curl -H “Content-Type: text/plain” localhost:8080/lowercase -d “[{“value”:”FOO”}]”

curl -H “Content-Type: text/plain” localhost:8080/uppercase -d “[{“value”:”foo”}]”

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s