Serverless en la nube: Introducción

Últimamente, ha habido un revuelo en el mundo IT sobre tecnologías "Serverless". El término puede ser un poco confuso, porque sigue habiendo una computadora haciendo procesamiento del lado del servidor; la diferencia clave es que cuando hablamos de un entorno "serverless", toda la infraestructura del lado del servidor es manejada por terceros. En un entorno así, un desarrollador sólo necesita proveer su código a ejecutar del lado del servidor, y la plataforma de la nube se encargará de desplegarlo y ejecutarlo de manera conveniente y escalable. Esto lleva el concepto de cloud computing de delegar cosas a la nube un poco más allá. Recordemos los distintos tipos de servicios de cloud e intentemos meter a Serverless en esa lista:

  • IaaS: Infastructure as a Service. El proveedor de cloud ofrece una interfaz para que sus usuarios manejen la infraestructura: servidores, bases de datos, redes y otros recursos. De esta manera, el usuario puede definir y asignar recursos computacionales usando un modelo de facturación donde paga proporcionalmente a lo que usa (pay-as-you-go). Este es el modelo donde el usuario tiene más control: puede configurar aplicaciones, sus datos, runtime, middleware y sistemas operativos; algunos proveedores cloud también ofrecen bases de datos, colas de mensajes y otros servicios. Aquellos que agregan esto a veces son denominados IaaS+. El caso usual de uso de este tipo de soluciones es delegar el manejo de la infraestructura del datacenter a terceros a fin de concentrarse en el desarrollo de la aplicación. Ejemplos: AWS (Amazon Web Services), Microsoft Azure, Google Compute Engine, Joyent.
  • PaaS: Platform as a Service. El proveedor cloud ofrece un framework de desarrollo para los programadores. El proveedor se encarga de mantener el framework y su infraestructura, y los desarrolladores se encargan de desarrollar sus aplicaciones usando el framework. El escenario usual de uso de este tipo de solución involucra usar el framework existente para reducir tiempos de desarrollo y salida al mercado. Ejemplo: Apprenda.
  • Baas/FaaS/Serverless: Backend as a Service/Function as a Service. En este caso, lo único que el usuario controla es el código que se ejecuta en el servidor. Todo lo demás es manejado por el proveedor cloud. Por eso se coloca esta modalidad entre PaaS y SaaS. Sin embargo, debe marcarse una distinción entre BaaS y FaaS (ver próximo párrafo).
  • SaaS: Software as a Service. El proveedor cloud ofrece un conjunto de aplicaciones pre-fabricadas que pueden ser usadas directamente. El cliente sólo tiene acceso a la interfaz de usuario de dichas aplicaciones, no tiene injerencia en su desarrollo o mantenimiento; eso es responsabilidad del proveedor. El caso de uso usual de este tipo de soluciones es reemplazar software de escritorio tradicional, lo cual evita al usuario final las molestias de instalar y actualizar. Ejemplo: Google Apps, Salesforce, Citrix GTM, Cisco WebEx.

Mike Roberts, de martinfowler.com, marca una diferencia entre dos tipos de arquitecturas Serverless:

  • BaaS: Backend as a Service. Una aplicación construida sobre BaaS delega casi toda la lógica y estado del lado del servidor al proveedor cloud, usualmente vía aplicaciones de tipo "rich client".
  • FaaS: En un entorno FaaS, el usuario aún escribe la mayoría del código a ejecutar del lado del servidor, pero a diferencia de los entornos tradicionales, ese código es ejecutado por el proveedor cloud en "contenedores efímeros", rompiendo el paradigma "always on" de los servidores tradicionales. Básicamente, FaaS se trata de correr código del lado del servidor sin administrar servidores ni aplicaciones en servidores. Esto da al proveedor cloud mayor flexibilidad a la hora de asignar sus recursos computacionales.

Las tecnologías FaaS más populares son Amazon Lambda (de AWS) y las Microsoft Azure functions (de Azure).

Para profundizar en el tema (incluyendo ejemplos de arquitectura):

Comments

Popular posts from this blog

VB.NET: Raise base class events from a derived class

Apache Kafka - I - High level architecture and concepts

Upgrading Lodash from 3.x to 4.x