Iniciar sesión / Registrar Cuenta

Aplicaciones nativas de la nube

¿Qué es la informática sin servidor?

Se trata de un modelo de desarrollo nativo de la nube que permite que los desarrolladores diseñen y ejecuten aplicaciones sin tener que gestionar servidores.

Si bien se utilizan servidores, se encuentran aislados de la etapa de desarrollo de las aplicaciones. El proveedor de nube se encarga de las tareas rutinarias de preparación, mantenimiento y adaptación de la infraestructura de los servidores. Los desarrolladores solo deben empaquetar el código en contenedores para implementarlo.

Una vez que se instalan las aplicaciones sin servidor, responden a la demanda y se amplían o reducen automáticamente en función de las necesidades. Por lo general, los proveedores de nube pública ofrecen estas tecnologías a un costo que se mide a través de un modelo de ejecución basado en eventos, según se soliciten. Por eso cuando una función permanece inactiva, no se genera ningún cargo.

Visión general de la arquitectura sin servidor

Lo que distingue a la informática sin servidor de los demás modelos de cloud computing es que el proveedor de nube se encarga de gestionar tanto la infraestructura de nube como la expansión de las aplicaciones. Aquellas sin servidor se implementan en contenedores que se inician automáticamente cuando se solicitan.

En el caso de los modelos estándar de cloud computing de infraestructura como servicio (IaaS), los usuarios adquieren cierta capacidad por adelantado, lo cual significa que pagan a un proveedor de nube pública por ciertos elementos del servidor que funcionan de forma permanente para ejecutar sus aplicaciones. El usuario debe encargarse de ampliar la capacidad durante los períodos de mayor demanda y reducirla cuando ya no haga falta. La infraestructura de nube requerida para ejecutar las aplicaciones permanece activa incluso cuando no se utilizan.

En cambio, la arquitectura sin servidor permite que se inicien solo cuando sea necesario. Cuando un evento activa el funcionamiento del código de las aplicaciones, el proveedor de nube pública le asigna los recursos correspondientes de forma dinámica, y el usuario deja de pagar cuando termina de ejecutarse. La informática sin servidor no solo ofrece beneficios en cuanto a los costos y la eficiencia, sino que también permite que los desarrolladores ya no deban encargarse de las tareas rutinarias y poco relevantes, que se relacionan con la implementación de los servidores y la escalabilidad de las aplicaciones.

El proveedor de servicios de nube es quien se ocupará de gestionar el sistema operativo y de archivos, ejecutar los parches de seguridad, equilibrar la carga, administrar la capacidad, adaptar los recursos, llevar los registros y supervisar el sistema.

Se puede diseñar una aplicación completamente sin servidor o una de microservicios en parte tradicionales y en parte sin servidor.

¿Qué función desempeña el proveedor de nube en la informática sin servidor?

Los proveedores de nube ejecutan los servidores físicos y asignan los recursos de forma dinámica para los usuarios que implementan el código directamente en la producción.

Normalmente, las ofertas de informática sin servidor se clasifican en dos grupos: Backend como servicio (BaaS) y Función como servicio (FaaS).  

El primero otorga a los desarrolladores acceso a diferentes aplicaciones y servicios externos. Por ejemplo, un proveedor de nube puede ofrecer servicios de autenticación, cifrado adicional, bases de datos a las que se puede acceder desde la nube e información muy confiable sobre el uso. Las funciones sin servidor se suelen solicitar mediante llamadas a las interfaces de programación de aplicaciones (API).

Sin embargo, cuando los desarrolladores hablan de la informática sin servidor, generalmente se refieren al modelo de FaaS, en el cual ellos escriben la lógica personalizada del lado del servidor, pero esta se ejecuta en los contenedores que el proveedor de servicios de nube gestiona por completo. 

Todos los proveedores principales de nube pública cuentan con una o varias ofertas de FaaS. Entre ellos, se incluyen Amazon Web Services, con AWS Lambda; Microsoft Azure, con Azure Functions; Google Cloud con varias ofertas; IBM Cloud, que cuenta con IBM Cloud Functions; entre otros. 

Algunas empresas deciden gestionar sus propios entornos de FaaS utilizando plataformas open source sin servidor, como Red Hat® OpenShift® Serverless, que se basa en el proyecto Knative para Kubernetes.

¿Qué es la función como servicio (FaaS)?

Se trata de un modelo de ejecución informática basada en eventos donde los desarrolladores escriben la lógica que se implementa en los contenedores, los cuales se gestionan mediante una plataforma y se ponen en funcionamiento conforme se soliciten.

A diferencia del BaaS, ofrece un mayor grado de control a los desarrolladores, quienes crean aplicaciones personalizadas en lugar de depender de una biblioteca de servicios diseñados con anterioridad. 

El código se implementa en los contenedores que gestiona un proveedor de nube. Estas son las características específicas de los contenedores:

  • Sin estado: simplifican más la integración de datos.
  • Efímeros: pueden ejecutarse por un período muy breve.
  • Activados por eventos: pueden ejecutarse automáticamente cuando sea necesario.
  • Gestionados por completo: el proveedor de nube se encarga de hacerlo para que solo pague por lo que necesita, no por servidores ni aplicaciones que funcionen permanentemente.

Con este modelo, los desarrolladores pueden solicitar aplicaciones sin servidor mediante llamadas a las API que el proveedor de FaaS gestiona a través de una puerta de enlace de API.

Algunos casos de uso de la informática sin servidor

La arquitectura sin servidor es ideal para las aplicaciones asíncronas y sin estado que pueden iniciarse de forma instantánea. También es una buena opción para los casos en los que la demanda aumenta de manera inusual e impredecible.

Piense en el procesamiento por lotes de archivos entrantes de imagen, el cual tal vez sea poco frecuente, pero debe estar listo cuando ingresa una gran cantidad de imágenes al mismo tiempo. Otro buen ejemplo es la observación de los cambios entrantes en una base de datos seguida de la ejecución de una serie de funciones, como verificar los cambios según los estándares de calidad o traducirlos automáticamente.

Las aplicaciones sin servidor también son ideales para los casos de uso que involucran flujos de datos entrantes, chatbots, tareas programadas o lógica empresarial.

Otras situaciones comunes son las aplicaciones web y las API de backend, la automatización de los procesos empresariales, los sitios web sin servidor y la integración en varios sistemas.

¿En qué consiste Knative y Kubernetes sin servidor?

Dado que Kubernetes ejecuta las aplicaciones en contenedores en una infraestructura automatizada, no es ninguna sorpresa que sea una opción popular para la ejecución de los entornos sin servidor. Sin embargo, la plataforma por sí sola no está preparada para ejecutar las aplicaciones sin servidor de forma nativa.

Knative es un proyecto de la comunidad open source que incorpora ciertos elementos en Kubernetes, los cuales permiten implementar, ejecutar y gestionar este tipo de aplicaciones.

Su entorno sin servidor le permite implementar el código en una plataforma de Kubernetes, como Red Hat OpenShift. Con él, puede crear un servicio empaquetando el código como una imagen de contenedor y transfiriéndolo al sistema. El código solo se ejecuta cuando es necesario, ya que Knative inicia y detiene las instancias automáticamente.

Consta de tres elementos principales:

  • Compilación: un enfoque flexible para compilar el código fuente en los contenedores.
  • Servicio: permite la implementación rápida y el ajuste automático de los contenedores mediante un modelo basado en solicitudes, para satisfacer las necesidades de las cargas de trabajo según se solicite.
  • Eventos: una infraestructura para utilizar y generar eventos con el fin de estimular las aplicaciones. Hay varios eventos que pueden activar las aplicaciones, como los de sus propias aplicaciones, los servicios de nube de varios proveedores, los sistemas de software como servicio (SaaS) y los flujos de Red Hat AMQ.

A diferencia de los primeros marcos de informática sin servidor, Knative se diseñó para implementar todas las cargas de trabajo de las aplicaciones modernas, desde las monolíticas hasta los microservicios y las funciones menores.

Se trata de una alternativa a una solución de FaaS que controla un solo proveedor de servicios, ya que funciona en cualquier plataforma de nube que ejecute Kubernetes y hasta en un centro de datos on-premise. Así las empresas obtienen mayor agilidad y se vuelven más flexibles para ejecutar sus cargas de trabajo sin servidor.

¿Cuáles son las ventajas y las desventajas de la informática sin servidor?

Ventajas

  • Reduce el costo operativo y aumenta la productividad del desarrollador, quien puede delegar las tareas rutinarias de implementación y gestión de los servidores, y dedicar más tiempo a las aplicaciones. 
  • Facilita la adopción de un enfoque de DevOps, ya que los desarrolladores no deben describir explícitamente la infraestructura que necesitan por parte de los equipos de operaciones.  
  • Se puede optimizar aún más el desarrollo de las aplicaciones incorporando elementos completos de ofertas de BaaS de otros proveedores.
  • Se reducen los costos operativos, ya que puede pagar por el tiempo de procesamiento en la nube según sea necesario, en lugar de ejecutar y gestionar sus propios servidores todo el tiempo.

Desventajas

  • El hecho de que usted no ejecute sus propios servidores ni controle la lógica del lado del servidor puede generar inconvenientes.
  • Los proveedores de nube tienen restricciones estrictas en cuanto a la interacción con sus elementos, lo cual a su vez determina el grado de flexibilidad y personalización de sus propios sistemas. En el caso de los entornos de BaaS, es posible que los desarrolladores se vean obligados a utilizar servicios cuyo código no puedan controlar.
  • Al ceder el control de estos aspectos de su pila de TI, usted dependerá del proveedor que los gestione. Probablemente la decisión de cambiar de proveedor también implique un costo de actualización de los sistemas, para cumplir con las especificaciones de la nueva empresa.

La evolución de la informática sin servidor

Los conceptos de FaaS y de arquitectura sin servidor crecieron a la par de la popularidad de los contenedores y las ofertas de nube disponibles por solicitud. En un informe de 451 Research que se realizó en colaboración con Red Hat, se determinó que la evolución de la informática sin servidor se divide en tres etapas.

La etapa "1.0" tenía limitaciones que la convertían en una tecnología con inconvenientes para la informática en general. Presenta estas características:

  • HTTP y algunas otras fuentes
  • Uso de funciones solamente
  • Límite del tiempo de ejecución (de 5 a 10 minutos)
  • Falta de organización
  • Poca experiencia en cuanto al desarrollo local

La llegada de Kubernetes dio lugar a la era de la "informática sin servidor 1.5", a partir de la cual muchos marcos de esta tecnología comenzaron a adaptar los contenedores de forma automática. Estas son algunas de sus características:

  • Knative
  • Ajuste automático basado en Kubernetes
  • Microservicios y funciones
  • Facilidad para realizar depuraciones y pruebas de forma local
  • Multilenguaje y portabilidad

Hoy en día, la era de la versión 2.0 recién comienza a manifestarse con la incorporación de las integraciones y los estados. Los proveedores comenzaron a agregar los elementos faltantes para que la informática sin servidor se adecuara a las cargas de trabajo empresariales de uso general. Presenta las siguientes características:

  • Gestión básica del estado
  • Uso de integración de aplicaciones empresariales
  • Funciones avanzadas de mensajería
  • Combinación con la PaaS empresarial
  • Fuentes de eventos listas para empresas
  • Estado e integración

La base de Kubernetes para la informática sin servidor

Red Hat OpenShift product logo

Plataforma de contenedores y Kubernetes para implementar aplicaciones nativas de la nube con mayor rapidez.

Red Hat Runtimes

Selección de los marcos y los tiempos de ejecución adecuados para desarrollar aplicaciones nativas de la nube.

La informática sin servidor tiene mucho más que ofrecer