¿Qué es sin servidor? Explicación de la informática sin servidor

Los desarrolladores pasan incontables horas resolviendo problemas comerciales con código. Luego, es el turno del equipo de operaciones de pasar incontables horas, primero averiguando cómo obtener el código que los desarrolladores escriben y ejecutando en cualquier computadora disponible, y segundo asegurándose de que esas computadoras funcionen sin problemas. La segunda parte es verdaderamente una tarea interminable. ¿Por qué no dejar esa parte a otra persona?

Gran parte de la innovación en TI durante las últimas dos décadas (máquinas virtuales, computación en la nube, contenedores) se ha centrado en asegurarse de que no tenga que pensar mucho en la máquina física subyacente en la que se ejecuta su código. La informática sin servidor es un paradigma cada vez más popular que lleva este deseo a su conclusión lógica: con la informática sin servidor, no tiene que saber nada sobre el hardware o el sistema operativo en el que se ejecuta su código, ya que todo está a cargo de un proveedor de servicios. .

¿Qué es la informática sin servidor?

La informática sin servidor es un modelo de ejecución para la nube en el que un proveedor de nube asigna dinámicamente, y luego cobra al usuario, solo los recursos informáticos y el almacenamiento necesarios para ejecutar un fragmento de código en particular. Naturalmente, todavía hay servidores involucrados, pero el proveedor se ocupa completamente de su aprovisionamiento y mantenimiento. Chris Munns, defensor de la tecnología sin servidor en Amazon, dijo en una conferencia de 2017 que, desde la perspectiva del equipo que escribe e implementa el código, “no hay servidores que administrar o aprovisionar en absoluto. Esto no incluye nada que sea simple, nada que sea virtual, nada que sea un contenedor; cualquier cosa que implique que administre un host, parchee un host o maneje cualquier cosa a nivel de sistema operativo, no es algo que deba hacer mundo sin servidores ". 

Como explica el desarrollador Mike Roberts, el término se usó una vez para los llamados escenarios de back-end-as-a-service , donde una aplicación móvil se conectaba a un servidor back-end alojado completamente en la nube. Pero hoy en día, cuando la gente habla de informática sin servidor, o arquitectura sin servidor, se refiere a ofertas de función como servicio , en las que un cliente escribe código que solo aborda la lógica empresarial y lo carga a un proveedor. Ese proveedor se encarga de todo el aprovisionamiento de hardware, la gestión de contenedores y máquinas virtuales, e incluso de tareas como el multiproceso que a menudo se integran en el código de la aplicación.

Las funciones sin servidor están controladas por eventos, lo que significa que el código se invoca solo cuando se activa mediante una solicitud. El proveedor cobra solo por el tiempo de cómputo utilizado por esa ejecución, en lugar de una tarifa mensual fija por el mantenimiento de un servidor físico o virtual. Estas funciones se pueden conectar entre sí para crear una canalización de procesamiento, o pueden servir como componentes de una aplicación más grande, interactuando con otro código que se ejecuta en contenedores o en servidores convencionales.

Beneficios e inconvenientes de la informática sin servidor

A partir de esa descripción, deberían quedar claros dos de los mayores beneficios de la computación sin servidor: los desarrolladores pueden centrarse en los objetivos comerciales del código que escriben, en lugar de en cuestiones de infraestructura; y las organizaciones solo pagan por los recursos informáticos que realmente usan de una manera muy granular, en lugar de comprar hardware físico o alquilar instancias en la nube que en su mayoría permanecen inactivas.

Como señala Bernard Golden, este último punto es especialmente beneficioso para las aplicaciones impulsadas por eventos. Por ejemplo, es posible que tenga una aplicación que esté inactiva la mayor parte del tiempo pero que, en determinadas condiciones, deba manejar muchas solicitudes de eventos a la vez. O puede tener una aplicación que procesa datos enviados desde dispositivos de IoT con conectividad a Internet limitada o intermitente. En ambos casos, el enfoque tradicional requeriría el aprovisionamiento de un servidor robusto que pudiera manejar las capacidades máximas de trabajo, pero ese servidor estaría infrautilizado la mayor parte del tiempo. Con una arquitectura sin servidor, solo pagaría por los recursos del servidor que realmente usa. La computación sin servidor también sería buena para tipos específicos de procesamiento por lotes.Uno de los ejemplos canónicos de un caso de uso de arquitectura sin servidor es un servicio que carga y procesa una serie de archivos de imagen individuales y los envía a otra parte de la aplicación.

Quizás la desventaja más obvia de las funciones sin servidor es que son intencionalmente efímeras y, como dice AlexSoft, "inadecuadas para tareas a largo plazo". La mayoría de los proveedores sin servidor no permitirán que su código se ejecute durante más de unos minutos, y cuando activa una función, no retiene ningún dato con estado de instancias ejecutadas anteriormente. Un problema relacionado es que el código sin servidor puede tardar varios segundos en activarse; no es un problema para muchos casos de uso, pero si su aplicación requiere baja latencia, tenga en cuenta.

Muchas de las otras desventajas, como lo señalaron Rohit Akiwatkar y Gary Arora, tienen que ver con el bloqueo del proveedor. Aunque hay opciones de código abierto disponibles, el mercado sin servidor está dominado por los grandes proveedores comerciales de la nube, como veremos en un momento. Eso significa que los desarrolladores a menudo terminan usando herramientas de sus proveedores, lo que dificulta el cambio si están insatisfechos. Y debido a que gran parte de la computación sin servidor tiene lugar, por definición, en la infraestructura del proveedor, puede resultar difícil integrar el código sin servidor en el desarrollo interno y los procesos de prueba.

Proveedores sin servidor: AWS Lambda, Azure Functions y Google Cloud Functions

La era moderna de la informática sin servidor comenzó con el lanzamiento de AWS Lambda, una plataforma basada en el servicio en la nube de Amazon, en 2014. Microsoft siguió su ejemplo con Azure Functions en 2016. Google Cloud Functions, que había estado en versión beta desde 2017, finalmente alcanzó el estado de producción. en julio de 2018. Los tres servicios tienen limitaciones, ventajas, idiomas compatibles y formas de hacer las cosas ligeramente diferentes. Rohit Akiwatkar tiene un resumen bueno y detallado de las distinciones entre los tres. También se está ejecutando IBM Cloud Functions, que se basa en la plataforma Apache OpenWhisk de código abierto.

Entre todas las plataformas informáticas sin servidor, AWS Lambda es la más destacada y, obviamente, ha tenido más tiempo para evolucionar y madurar. tiene cobertura de actualizaciones y nuevas funciones agregadas a AWS Lambda durante el año pasado.

Pilas sin servidor

Como es el caso en muchos dominios del software, el mundo sin servidor ha visto la evolución de pilas de software, que reúnen diferentes componentes necesarios para construir una aplicación sin servidor. Cada pila consta de un lenguaje de programación en el que vas a escribir el código, un marco de aplicación que proporciona una estructura para tu código y un conjunto de desencadenantes que la plataforma comprenderá y utilizará para iniciar la ejecución del código.

Si bien puede mezclar y combinar diferentes ofertas específicas en cada una de estas categorías, existen limitaciones según el proveedor que utilice, con cierta superposición. Por ejemplo, para los lenguajes, puede usar Node.js, Java, Go, C # y Python en AWS Lambda, pero solo JavaScript, C # y F # funcionan de forma nativa en las funciones de Azure. Cuando se trata de activadores, AWS Lambda tiene la lista más larga, pero muchos de ellos son específicos de la plataforma AWS, como Amazon Simple Email Service y AWS CodeCommit; Mientras tanto, Google Cloud Functions puede activarse mediante solicitudes HTTP genéricas. Paul Jaworski tiene una mirada en profundidad a las pilas de cada una de las tres grandes ofertas.

Marcos sin servidor

Vale la pena detenerse un poco en la parte del marco de la ecuación, ya que eso definirá mucho sobre cómo terminas construyendo tu aplicación. Amazon tiene su propia oferta nativa, el modelo de aplicación sin servidor (SAM) de código abierto, pero también hay otros, la mayoría de los cuales son multiplataforma y también de código abierto. Uno de los más populares se llama, de manera bastante genérica, Serverless, y enfatiza que brinda la misma experiencia en cada plataforma compatible, es decir, AWS Lambda, Azure Functions, Google Cloud Functions e IBM OpenWhisk. Otra oferta popular es Apex, que puede ayudar a incorporar algunos idiomas que de otro modo no estarían disponibles en ciertos proveedores.

Bases de datos sin servidor

Como señalamos anteriormente, una peculiaridad de trabajar con código sin servidor es que no tiene un estado persistente, lo que significa que los valores de las variables locales no persisten en las instancias. Cualquier dato persistente que su código necesite para acceder debe almacenarse en otro lugar, y los activadores disponibles en las pilas para los principales proveedores incluyen bases de datos con las que sus funciones pueden interactuar.

Algunas de estas bases de datos se denominan a su vez sin servidor. Esto significa que se comportan de manera muy similar a otras funciones sin servidor que hemos discutido en este artículo, con la obvia excepción de que los datos se almacenan indefinidamente. Pero gran parte de la sobrecarga de administración involucrada en el aprovisionamiento y el mantenimiento de una base de datos se deja de lado. Como dice el desarrollador Jeremy Daly, "Todo lo que necesita hacer es configurar un clúster y luego todo el mantenimiento, los parches, las copias de seguridad, la replicación y el escalado se gestionan automáticamente". Al igual que con las ofertas de función como servicio, solo paga por el tiempo de cómputo que realmente usa, y los recursos aumentan y disminuyen según sea necesario para satisfacer la demanda.

Los tres grandes proveedores sin servidor ofrecen cada uno sus propias bases de datos sin servidor: Amazon tiene Aurora Serverless y DynamoDB, Microsoft tiene Azure Cosmos DB y Google tiene Cloud Firestore. Sin embargo, estas no son las únicas bases de datos disponibles. Nemanja Novkovic tiene información sobre más ofertas.

Computación sin servidor y Kubernetes

Los contenedores ayudan a impulsar la tecnología sin servidor bajo el capó, pero el proveedor se encarga de los gastos generales de administración y, por lo tanto, es invisible para el usuario. Muchos ven la computación sin servidor como una forma de obtener muchas de las ventajas de los microservicios en contenedores sin tener que lidiar con su complejidad, e incluso están comenzando a hablar de un mundo posterior al contenedor.

En realidad, los contenedores y la informática sin servidor coexistirán casi con seguridad durante muchos años y, de hecho, las funciones sin servidor pueden existir en la misma aplicación que los microservicios en contenedores. Kubernetes, la plataforma de orquestación de contenedores más popular, también puede administrar la infraestructura sin servidor. De hecho, con Kubernetes, puede integrar diferentes tipos de servicios en un solo clúster.  

Sin servidor sin conexión

Es posible que la perspectiva de comenzar con la computación sin servidor le resulte un poco intimidante, ya que parece que necesitaría registrarse con un proveedor para jugar y ver cómo funciona. Pero no temas: hay formas de ejecutar código sin servidor sin conexión en tu propio hardware local. Por ejemplo, AWS SAM proporciona una función local que le permite probar el código Lambda sin conexión. Y si está utilizando el marco de aplicación sin servidor, consulte sin servidor sin conexión, un complemento que le permite ejecutar código localmente. ¡Feliz experimentando!