7 plataformas open source para empezar con el cómputo serverless.

El cómputo serverless esta transformando el desarrollo de software tradicional. Estas plataformas de código abierto te ayudarán a empezar y aunque el panorama es confuso y cambiante, toma en cuenta estas opciones.

Serverless es transformación digital.

El término serverless surge cada vez más y más en las conversaciones de hoy en día y junto a este el de Function as a Service (FaaS). Con FaaS escribimos código para completar algunas tareas en especifico y subir el código de nuestra función a un proveedor FaaS. El proveedor publico de nube o plataforma on-premise se encarga de hacer todo lo necesario para provisionar, correr, escalar y manejar el código.

Recordemos que los proveedores públicos de nubes virtualizan su propia infraestructura, plataformas o aplicaciones desde el hardware del cual son dueños para después juntar todo en lagos de datos (en inglés, data lakes, los cuales son sistemas o repositorios de datos almacenados en su formato natural) que ellos orquestan con sofisticado software de manejo y automatización antes de transmitirlo a través de internet a los usuarios.

Y de Wikipedia obtenemos la siguiente definición. On-premises software (abreviado como“on-prem” o incorrectamente dicho como “on-premise”) es instalado y corre en computadoras en las premisas de la persona u organización que utiliza el software, en lugar de una facilidad remota como una granja de servidores o la nube.

Regresando al tema principal habrá que mencionar que Serverless se usa en muchas ocasionas indistintamente con el termino FaaS. Serverless no significa que no existan servidores de hecho hay muchos servidores, es — serverful — por que un proveedor de nube publico provee servidores para entregar, correr, y manejar las aplicaciones.

En este punto cabe mencionar a los proveedores de nubes privadas también conocidos como nubes privadas gestionadas (managed cloud providers), los cuales brindan a los clientes nubes privadas que son entregadas, configuradas y manejadas por alguien más que el cliente. Esta opción de entrega se enfoca en ayudar a empresas que no tienen suficiente personal o el personal de TI es poco calificado o aún no tiene las habilidades requeridas para el manejo de la infraestructura de nube.

El computo Serverless es una categoría emergente que representa un cambio en la manera que que los desarrolladores construyen y entregan sistemas de software. Abstrayendo la infraestructura de las aplicaciones del código puede simplificar enormemente el proceso de desarrollo a la vez que presenta beneficios en costos y eficiencia. Tenemos la certeza de que el computo Serverless y FaaS ocuparán un rol preponderante en ayudar a definir la siguiente era de los sistemas enterprise, junto los los servicios cloud-native y las nubes híbridas.

Y aquí hacemos el paréntesis para aclarar que una nube híbrida no es un producto o un lugar, es una aproximación al computo en la nube que incluye una combinación de nubes que mencionamos anteriormente; privadas ( on-premises o gestionadas) y públicas. Un ambiente de nube híbrida le permite al cliente o empresa escoger la carga de trabajo adecuada para el ambiente adecuado, así como así como mover estas acorde a las necesidades del negocio o cambios en tecnología o infraestructura.

Las plataformas Serveless proveen APIS que permiten a los usuarios correr funciones de código (conocidas como acciones) y regresar los resultados de cada función. Las plataformas Serverless también proveen endpoints HTTPS que permiten a los desarrolladores obtener resultados de las funciones. Estos endpoints pueden ser usados como entradas para otras funciones, de este modo proveer una secuencia (o encadenado) de funciones relacionadas.

En la mayoría de las plataformas serverless, el usuario entrega o crea las funciones antes de ejecutarlas. La plataforma serverless entonces tiene todo el código necesario para ejecutar las funciones cuando se le indica. La ejecución de una función serverless puede ser invocada manualmente por el usuario via un comando, o puede ser detonada por un evento fuente que es configurado para activar la función en respuesta a eventos como alarmas de trabajo en algún momento (job crons alarms), subir archivos o algunos otros.

7 ( …no, menos 8 ) plataformas open source para comenzar con el cómputo serverless.

Apache OpenWhisk es marca registrada.

1. Apache OpenWhisk es una plataforma de nube serverless, open source, que te permite ejecutar tu código en respuesta a eventos en cualquier escala. Esta escrito en Scala. El framework procesa las entradas de detonadores como peticiones HTPP y después dispara un código de snippet en JavaScript o Swift.

OpenWhisk es un framework serverless maduro soportado por la Apache foundation y respaldado por IBM. OpenWhisk puede ser instalado utilizando Helm chart (el manejador de paquetes de Kubernetes) pero desafortunadamente requiere alguna intervención manual, es decir no es tan sencillo. Las aplicaciones pueden ser entregadas usando el CLI con el framework Serverless ( del cual escribiremos un poco más adelante).

Fission son funciones serverless en Kubernetes.

2. Fission es un entorno de trabajo de computo o framework, serverless que permite a los desarrolladores construir funciones usando Kubernetes. Este permite a los programadores escribir funciones de vida corta en cualquier lenguaje de programación y mapearlas a cualquier detonador de eventos como peticiones HTTP.

Fission resultó interesante por que se situaba en algún lugar entre Kubeless y OpenWhisk, depende fuertemente de las características de Kubernetes, pero no esta completamente integrado.

Fission tiene un extra bastante bueno llamado Fission Workflows que es una herramienta que permite a los desarrolladores componer funciones, a la programación funcional. Esta es dirección realmente interesante que estaremos a la expectativa de los resultados que de esta se obtengan.

IronFunctions logo.

3. IronFunctions es un framework de computo serverless que ofrece una cohesiva plataforma de micro servicios integrando sus servicios existentes adoptando Docker. Los desarrolladores escriben las funciones en el leguaje Go.

Iron Functions esta soportado por una compañía del mismo nombre.

Esta basado en Docker, como otro de los muchos frameworks, una característica interesante es que tiene soporte like-for-like para las funciones Lambda de AWS, puedes llevar tu código de Lambda y correrlo directamente en Iron sin problema, lo cual es bueno para una migración.

Fn Project logo.

4. Fn Project es un plataforma de contenedor nativo serverless open source que puedes correr en cualquier lado, on premises o en cualquier nube. Es fácil de usar, soporta todos los lenguajes de programación populares de hoy en día, es extendible y tiene buen performance.

En nombre y el logo compiten por los más feos, en mi opinión claro.

Es open source pero los contribuidores trabajan para Oracle. El flujo principal utiliza el CLI Fn, pero tras bambalinas usa los contenedores de Docker. El proyecto inició en 2016, lo cual los hace tan viejo como OpenWhisk y tiene un numero decentes de personas que contribuyen al código.

5. OpenLambda es un proyecto de computo serverless con licencia Apache, escrito en Go y basado en contenedores de Linux. El principal objetivo de OpenLambda es habilitar la exploración de nuevas aproximaciones en el computo serverless.

6. Kubeless es un framework serverless nativo de Kubernetes que te permite entregar pequeños fragmentos de bits de código sin tener que preocuparte de la infraestructura subyacente. Este aprovecha los recurso de Kubernetes para proveer auto escalamiento, ruteo de APIs, monitoreo, resolución de problemas y otros.

Kubeless, el framework de funciones nativas de Kubernetes causa mucha excitación este trabaja agregando la idea de una función como una definición de un recurso personalizado (CRD) en Kubernetes. Junto con un buen código, esto significa que convierte a Kubernetes en una maquina de funciones, sin complejidades añadidas como un bus de mensajería como otros frameworks.

7. OpenFaas es un framework para construir funciones serverless con Docker y Kubernetes el cual ofrece soporte de primera clase a las métricas. Cualquier proceso puede ser empaquetado como una función, permitiendo consumir un rango de eventos web sin el boilerplate repetitivo de código,

OpenFaas es popular pero no tanto como OpenWhisk.

VMWare emplea a un equipo para trabajar tiempo completo en OpenFaas, además del gran trabajo ejecutado por los contribuidores individuales en su tiempo libre.

Kubernetes es la plataforma más popular para manejar cargas de trabajo serverless y contenedores de aplicaciones de microservicios, utilizando un modelo de entrega muy meticulosa para procesar los cargas de trabajo mas rápida y fácilmente.

Con Knative Serving, puedes construir y entregar aplicaciones serverless y funciones en Kubernetes y usar Istio para escalar y soportar escenarios más avanzados como :

  • Entrega rapida de contenedores serverless
  • Escalamiento (o encogimiento hasta cero ).
  • Ruteamiento y programación en red para los componentes Istio
  • Capturas o snapshots en determinados puntos en el tiempo del código entregado y de las configuraciones.

Knative se enfoca en las tareas comunes de construir y correr aplicaciones en plataforma cloud-native para orquestar construcciones del código al contenedor (source-to-container builds), vincular servicios a eventos de ecosistemas, ruteamiento y manejo de trafico durante la entrega, y cargas de trabajo que auto escalen.

Istio es una plataforma abierta para conectar y asegurar microservicios (effectively a service mesh control plane to the Envoy proxy) y ha sido diseñada para considerar muchas personas interactuando con el framework, incluyendo desarrolladores, operadores y proveedores de la plataforma.

Serverless framework

El framework Serverless es una herramienta de más amplio propósito para entregar y manejar aplicaciones serverless. Puedes entregar aplicaciones web en Node o Python mientras también puedes provisionar la infraestructura que tu aplicación necesita, como una base de datos, colas y almacenamiento de objetos. Más allá de esto podemos utilizar el framework para construir muchos tipos diferentes de aplicaciones, incluyendo streaming de eventos, manipulación de imágenes y otras.

www.serverless.com

No es una plataforma como tal (aunque si hay una opción de plataforma y de soporte, que como podrán inferir no es gratuita), pero el framework corre cualquier función. es un kit de desarrollo de software para serverless. De hecho, es esencialmente solo un mecanismo de empaquetado, pero su belleza radica en el hecho de que una vez empaquetado de forma Serverless, puedes entregar el mismo código a Lambda, Google Functions, Azure Functions, OpenWhisk, OpenFass, Kubeless or Fn, ¿grandioso no? .

Esta portabilidad es muy atractiva. Permite a los desarrolladores construir su código de una forma digamos estandarizada, pero aún permiten ciertas reglas, estándares, precios, conjuntos de características o usabilidad para decidir donde hacer el deployment.

Mas aún, nos permite aplazar la decisión de escoger de alguna forma un framework. Por ejemplo si se decide utilizar Kubeless por que nos gusta la dirección que toma con respecto a Kubernetes pero no es una plataforma madura aún o lo llega a ser como para ser utilizarla en ambientes productivos, no tendríamos problema en cambiar, si usamos Serverless entonces podemos construir nuestro código en OpenFass o en Lambda ahora y fácilmente portarlo a Kubeless después.

Veamos la siguiente imagen.

Serverless significa flexibilidad para el desarrollador.

En la imagen anterior podemos observar que el framework da la flexibilidad de permitir a los desarrolladores la decisión de donde entregar el código ya sea AWS Lambda o a una plataforma serverless entregada en k8s. Esto ayuda a una migración si existen funciones en lambda.

¿te interesa aprender o conocer más acerca de Serverless ? Unete al meetup en CDMX Dando clic AQUI

  • Todas los logos o imágenes aquí utilizados son descargados de Internet pueden tener derechos de autor.

Cheerleader in chief for KMMX, RPA Enthusiast, DevOps, Technical Writer & International Speaker, Dad & 2 cats.

Cheerleader in chief for KMMX, RPA Enthusiast, DevOps, Technical Writer & International Speaker, Dad & 2 cats.