0

Computación sin servidor: lo básico

dynamics_cloudLa nube, según la vieja broma, es solo la computadora de otra persona. Es verdad; excepto que probablemente es una computadora mejor ejecutada, recomendada con mayor frecuencia y mejor protegida que la suya. Una por la que no tuvo que pagar, que puede alquilar por segundo, y ofrece otros servicios que le permiten trabajar a un nivel mucho más alto que encender un servidor e instalar el software usted mismo.

Puede pensar que la nube se trata sobre escala y ahorro de costos, pero las abstracciones que introduce son aún más importantes: servicios de almacenamiento y servicios de datos en lugar de discos duros, servicios de aplicaciones en lugar de máquinas virtuales, redes controladas por software en lugar de tarjetas y cables físicos que tiene que conectar. A medida que la nube se ha trasladado de IaaS a SaaS, y luego a PaaS, y ha ido agregando el monitoreo, análisis de datos y el aprendizaje automático, así como marcos de desarrollo y servicios de aplicación; el nivel de abstracción ha ido en aumento.

Serverless abstrae la infraestructura
IaaS abstrae el centro de datos físico, pero no quita toda la infraestructura, señala el CTO de Azure, Mark Russinovich. “Todavía tiene que elegir el sistema operativo, desplegarlo, adecuar los servidores virtuales, configurar la red en los servidores virtuales, ampliar el servidor virtual, descubrir cómo implementar el software en los servidores, actualizar el software, supervisarlo…”.

Incluso con PaaS, “la mayoría de los servicios requieren que solicite un nivel de aprovisionamiento con alguna unidad de tamaño que incluso puede ser servidores; y, aun cuando tiene que averiguar cuántos necesita y cómo puede utilizarlos más eficientemente, debe preocuparse por la escala. Todavía existen tareas que no están directamente relacionadas con lo que realmente quiero hacer, que es que mi aplicación atienda solicitudes”.

La computación sin servidor lleva la abstracción aún más lejos. Sí, su código todavía se ejecuta en los servidores -solo que son servidores de los que no tiene que preocuparse.

Russinovich ve a serverless como “la próxima generación de la computación, donde todo va a ser impulsado, porque de ahí viene el máximo valor para una organización que quiere desarrollar una solución: al no tener que preocuparse por todos estos detalles que una plataforma puede resolver por ellos”.

Serverless es la programación basada en eventos con microfacturación
Si le parece que el nombre es molestoso, trátelo como programación basada en eventos o funciones como un servicio. AWS Lambda recibe el nombre de las funciones lambda (funciones anónimas que pueden consumir y crear otras funciones), el equivalente de Microsoft es Azure Functions y Google tiene Cloud Functions.

“Serverless literalmente significa que no me preocupo por los servidores”, señala Russinovich, pero agrega que la definición también debe incluir el modelo de programación y la microfacturación.

“He abstraído los servidores; no estoy diciendo cuántos servidores o unidades quiero, simplemente uso los recursos y me cobran por ellos. No pago por adelantado, pago por recursos y los uso”. Ese modelo de facturación funciona debido al modelo de programación. “La computación sin servidor está basada en eventos, y requiere que el arranque de la respuesta a un desencadenador o evento sea muy rápido; de lo contrario, podría dejar el recurso allí y tenerlo mucho tiempo”.
Debido a que la plataforma sin servidor se encarga de abastecer y escalar de forma automática, si desea optimizar los recursos que utiliza, lo logra haciendo que su código sea más eficiente. Ese es un modelo económico muy diferente que IaaS, y más aún que PaaS.

Los desencadenantes se convierten en sin servidor en la cola de la nube
El código serverless no se ejecuta todo el tiempo; solo cuando es activado por un evento que coincide con una regla que ha configurado. El disparador que estableció, podría ser otro código que llama a su función serverless, como una aplicación web; pero también podría ser algo que sucede en un servicio conectado -“cualquier cosa desde un archivo guardado en una cuenta de almacenamiento y un ticket abierto en un sistema de CRM, hasta un mensaje que apareció en un sistema”, sugiere Russinovich.
El output de una función también se puede enviar a otro servicio, por lo que se puede utilizar para activar el reconocimiento de imágenes y videos capturados, y enviar los resultados a una base de datos; o para enviar alertas al servicio al cliente utilizando el análisis de opiniones de Twitter; o para manejar un chatbot. “Tal vez yo quiero poner en marcha un flujo de trabajo cuando alguien dice que quiere programar una cita. Azure Functions puede integrarse con servicios de la nube, con bases de datos y servicios de almacenamiento, con mensajería, hubs de eventos, conectores de puerta de enlace que permiten la integración con su SQL Server en las instalaciones”.

El uso de las funciones serverless para transformar datos y conectar diferentes servicios es ideal para alimentar aplicaciones móviles. Azure Logic Apps (para desarrolladores) y Flows y Power Apps (para usuarios avanzados) utilizan Azure Functions, y puede llamar a las funciones Lambda a través de los SDK móviles de Amazon para iOS y Android. También es una forma de combinar servicios de diferentes nubes, pegando los diferentes sistemas utilizando las funciones serverless, ya sea arrastrar archivos subidos a Dropbox hacia Dynamics 365 o utilizar AWS Lambda para mover archivos de Amazon S3 a Google App Engine a través de Cloud Endpoints API.

El gran beneficio para los desarrolladores es la velocidad y simplicidad, lo que permite desarrollar con mayor rapidez. Esto encaja bien con el cambio a devops y la integración y despliegue continuo.

“Con serverless, todas las preocupaciones de los desarrolladores cuando se trata de código es la lógica de la aplicación”, señala Russinovich. “Pueden enfocarse solo en la lógica de negocios y en escribir el bit de código. No hay otro código de soporte relacionado con el funcionamiento de máquinas virtuales o el entorno PaaS. Lo que obtiene es tiempo más rápido en el mercado; literalmente puede escribir un pedazo de código, desplegarlo y ejecutarlo en segundos o minutos.

Serverless llegará más allá de la nube
Las ofertas serverless como Lambda y AWS Functions no son el único lugar en el que esta programación basada en eventos será útil. “El modelo de programación basado en eventos es muy potente y vivirá fuera del mundo de servidores abstraídos y microfacturación”, anota Russinovich. Además, sugiere que a medida que el modelo madure, será capaz de usar el mismo código de funciones serverless que ha escrito en PaaS o en las ofertas de IaaS, e incluso en las instalaciones. En el caso de Microsoft, será a través de Azure Stack, o puede hacerlo hoy con el las funciones runtime en un contenedor de Windows.

“[En Azure Functions], se pierde un poco de control”, explica. “Hay algunos escenarios donde este modelo de pago por uso de microfacturación podría costar más. Si el costo de instalación para que mi código se ejecute es alto, debido a que aprovecha grandes piezas de código que no puedo pre-abastecer en Functions, mi tiempo de inicio es largo. Así que podría querer recurrir a PaaS y pre-abastecer el código, para que así el código del desencadenador basado en eventos pueda responder rápidamente”.

Por ahora, serverless es más eficiente en la nube, porque en un nivel más profundo hay máquinas virtuales y otras infraestructuras que tienen que ser aprovisionadas; y los proveedores de nube hiperescalares como Azure y AWS lo tienen tan bien automatizado, por lo que no hay ningún costo real para ellos hacerlo para los trabajos serverless -que pueden encajar en los recursos de las máquinas virtuales que no se están utilizando para otros servicios en la nube. Puede resultarle más difícil obtener los mismos beneficios si intenta ejecutar un framework sin servidor usted mismo (es poco probable que tenga la escala y además tiene que tener a alguien que ejecute la infraestructura), pero con el tiempo es probable que este modelo se propague.

Serverless es una idea bastante nueva, pero ya está en uso en organizaciones grandes como Coca-Cola, que utiliza AWS Lambda con Serverless Framework de código abierto para reducir los costos de TI. Las abstracciones como serverless son parte de la razón por la que Atlassian está moviendo sus servicios como Jira y Confluence fuera de sus propios centros de datos hacia AWS. “La promesa es que podamos usarlos para acelerar nuestro desarrollo, y planeamos usar más de estos servicios. Si cuenta con algo que es asíncrono, donde tiene que ejecutar un trabajo, Lambda lo hace muy atractivo”, explica el CTO de Atlassian, Sri Viswanath.

Las características de serverless todavía están evolucionando, señala. “Lambda todavía no está completamente equipada; en este momento es adecuada para los servicios pequeños que se ejecutan durante unos pocos milisegundos, pero los microservicios necesitan ser ejecutados durante períodos largos, por lo que en Lambda debe girar un VM para eso. Es bueno para los eventos asíncronos que necesita procesar que vienen uno tras otro”. Estas limitaciones están siendo trabajadas -Azure Functions permite el alojamiento de aplicaciones dedicadas para funciones de larga duración- y Viswanath cree que la simplicidad del modelo solo se volverá más atractiva.

“Con el tiempo, creo que el concepto de no preocuparse por los servidores es muy importante. [Con serverless], no tiene que preocuparse de desplegar a un servidor; escribe su código, lo guarda y está listo”.

Mary Branscombe, CIO.com via CIOPeru.pe

Ordenado por: Nube Tags: 

Contenidos recomendados...

Comparta esta publicación

Artículos relacionados

Escriba su comentario

Ud. tiene que estar conectado para publicar comentarios.

Red de publicaciones IDG en Latinoamérica: Computerworld Ecuador - Computerworld Colombia - CIO Perú // Contáctenos
© 2017 Computerworld Venezuela - All rights reserved ---- WordPress - Tema adaptado por GiorgioB