¿Qué es sin servidor?
Sin servidor es un modelo de ejecución y desarrollo de aplicaciones en la nube que permite a los desarrolladores crear y ejecutar código sin gestionar servidores ni pagar por infraestructura inactiva en la nube
imagen abstracta negra y azul
¿Qué es sin servidor?

Sin servidor es un modelo de desarrollo y ejecución de aplicaciones informáticas en la nube que permite a los desarrolladores crear y ejecutar código de aplicación sin suministrar ni gestionar servidores o infraestructura de backend.

El modelo sin servidor permite a los desarrolladores centrarse en escribir el mejor código de aplicación de frontend y la mejor lógica de negocios que puedan. Todo lo que los desarrolladores deben hacer es escribir el código de su aplicación e implementarlo en contenedores gestionados por un proveedor de servicios en la nube. El proveedor de la nube se encarga del resto, suministrando la infraestructura en la nube necesaria para ejecutar el código y ampliando o reduciendo la infraestructura según sea necesario. El proveedor de la nube también es responsable de toda la gestión y el mantenimiento de la infraestructura de rutina, como las actualizaciones y los parches del sistema operativo, la gestión de la seguridad, la planificación de la capacidad, la supervisión del sistema y más.

También es importante saber que con el modelo sin servidor, los desarrolladores nunca pagan por la capacidad inactiva. El proveedor de la nube activa y suministra los recursos informáticos necesarios a pedido cuando se ejecuta el código, y los vuelve a desactivar cuando se detiene la ejecución, lo que se denomina "escalar a cero". Se empieza a facturar cuando comienza la ejecución y se finaliza cuando se detiene la ejecución. Normalmente, el precio se basa en el tiempo de ejecución y los recursos necesarios.

El modelo sin servidor no significa "nada de servidores"

A pesar del nombre, la computación sin servidor definitivamente sí trabaja con servidores. "Sin servidor" describe la experiencia del desarrollador con esos servidores: son invisibles para el desarrollador, ya que no los ve, gestiona ni interactúa con ellos de ninguna manera.

Hoy en día, todos los proveedores líderes de servicios en la nube ofrecen una plataforma sin servidor, incluidas Amazon Web Services (AWS Lambda), Microsoft Azure (Azure Functions), Google Cloud (Google Cloud Functions) e IBM Cloud (IBM Cloud Code Engine). Juntos, la computación sin servidor, los microservicios y los contenedores forman un triunvirato de tecnologías que normalmente se considera el núcleo del desarrollo de aplicaciones nativas de la nube.

Sin servidor es más que solo FaaS

La función como servicio, o FaaS, es un servicio de computación en la nube que permite a los desarrolladores ejecutar código o contenedores en respuesta a eventos o solicitudes específicas, sin especificar ni gestionar la infraestructura necesaria para ejecutar el código.

FaaS es el modelo de computación principal de la computación sin servidor, y los dos términos a menudo se usan indistintamente. Pero sin servidor es mucho más que FaaS. Sin servidor es el lote completo de servicios que pueden responder a eventos o solicitudes específicos y escalar a cero cuando ya no se usan (y cuyo suministro, gestión y facturación son responsabilidad del proveedor y son invisibles para los desarrolladores). Además de FaaS, estos servicios incluyen:

  • Bases de datos y almacenamiento sin servidor: las bases de datos (SQL y NoSQL) y el almacenamiento (en particular, el almacenamiento de objetos) son la base de la capa de datos. Aplicar un enfoque sin servidor a estas tecnologías implica la transición desde el suministro de "instancias" con capacidad, conexión y límites de consulta definidos hacia modelos que escalan linealmente con la demanda, tanto en infraestructura como en precios.

  • Streaming de eventos y mensajería: las arquitecturas sin servidor son adecuadas para cargas de trabajo de procesamiento de transmisiones y basadas en eventos, en particular, la plataforma de streaming de eventos de código abierto Apache Kafka.

  • Gateways de API: los gateways de API actúan como proxies para acciones web y proporcionan enrutamiento de métodos HTTP, ID y secreto de clientes, límites de velocidad, CORS, visualización del uso de API, visualización de registros de respuesta y políticas de uso compartido de API.

Ashher Syed de IBM proporciona una explicación detallada de sin servidor y lote sin servidor (6:37):

Sin servidor vs. PaaS, contenedores y máquinas virtuales

Debido a que la tecnología sin servidor, la plataforma como servicio (PaaS), los contenedores y las máquinas virtuales (VM) juegan un papel fundamental en el desarrollo de aplicaciones en la nube y el ecosistema informático, es útil comparar cómo la tecnología sin servidor se asemeja y diferencia de las demás en algunos aspectos fundamentales.

  • Tiempo de suministro: en la computación sin servidor se mide en milisegundos, contrariamente a otros modelos que se mide en minutos u horas.

     

  • Carga administrativa: sin servidor no tiene carga administrativa, mientras que la PaaS, los contenedores y las máquinas virtuales tiene una carga continua ligera, media y pesada, respectivamente.

     

  • Mantenimiento: las arquitecturas sin servidor son gestionadas al 100 % por el proveedor. Lo mismo ocurre con la PaaS, pero los contenedores y las máquinas virtuales requieren un mantenimiento significativo que incluye la actualización/gestión de sistemas operativos, imágenes de contenedores, conexiones, etc.

     

  • Escalamiento: el escalamiento automático, incluido el escalamiento automático a cero, es un aspecto instantáneo e inherente a la tecnología sin servidor. Los otros modelos ofrecen escalamiento automático, pero lento, y requiere establecer las reglas de escalamiento automático y sin escalamiento a cero cuidadosamente.

     

  • Planificación de capacidad: no se necesita ninguna para sin servidor. Los otros modelos requieren una combinación de escalamiento automático y planificación de capacidad.

     

  • Sin estado: es inherente a sin servidor, lo que significa que la escalabilidad nunca es un problema. El estado se mantiene en un servicio o recurso externo. La PaaS, los contenedores y las máquinas virtuales pueden aprovechar HTTP, mantener un socket o una conexión abiertos durante largos períodos de tiempo y almacenar el estado en la memoria entre llamadas.

     

  • Alta disponibilidad (HA) y recuperación de desastres (DR): ambos son inherentes al modelo sin servidor sin esfuerzo ni costo adicional. Los otros modelos requieren un esfuerzo de gestión y costos adicional. En el caso de las máquinas virtuales y los contenedores, la infraestructura se puede reiniciar automáticamente.

  • Utilización de recursos: el modelo sin servidor es 100 % eficiente porque no existe la capacidad inactiva, pues se utilizan recursos solo a pedido. Todos los demás modelos cuentan con al menos cierto grado de capacidad inactiva.

     

  • Granularidad de facturación y ahorro: sin servidor se mide en unidades de 100 milisegundos. La PaaS, los contenedores y las máquinas virtuales se miden normalmente en horas o minutos.

Sin servidor, Kubernetes y Knative

Kubernetes es una plataforma de orquestación de contenedores de código abierto que automatiza la implementación, la gestión y el escalamiento de aplicaciones. La automatización de Kubernetes simplifica drásticamente el desarrollo de aplicaciones basadas en contenedores.

Las aplicaciones sin servidor a menudo se implementan en contenedores. Pero por sí solo, Kubernetes no puede ejecutar aplicaciones sin servidor sin un software especializado que integre Kubernetes con la plataforma sin servidor de un proveedor de nube específico.

Knative proporciona una infraestructura sin servidor para Kubernetes. Es una extensión de código abierto para Kubernetes que permite que cualquier contenedor se ejecute como una carga de trabajo sin servidor en cualquier plataforma en la nube que ejecute Kubernetes, ya sea que el contenedor haya sido creado con base en una función sin servidor o algún otro código de aplicación (por ejemplo, microservicios). Knative abstrae el código y gestiona el enrutamiento de la red, los desencadenantes de eventos y el escalamiento automático para la ejecución sin servidor.

Knative es transparente para los desarrolladores: simplemente crean un contenedor como de costumbre con el uso de Kubernetes y Knative hace el resto, ejecutando el contenedor como una carga de trabajo sin servidor.

Descubra más acerca de Knative

Pros y contras del enfoque sin servidor

Pros

Teniendo en cuenta todo lo anterior, no debería sorprender que la computación sin servidor ofrezca una serie de beneficios técnicos y comerciales para los desarrolladores individuales y los equipos de desarrollo empresarial.

Mejora de la productividad del desarrollador: como se señaló anteriormente, la tecnología sin servidor permite que los equipos de desarrollo se centren en escribir código, no en gestionar la infraestructura. Brinda a los desarrolladores mucho más tiempo para innovar y optimizar la funcionalidad de la aplicación de frontend y la lógica de negocios.

Pago solo por ejecución: se comienza a medir cuando se realiza la solicitud y se deja de medir cuando finaliza la ejecución. Compare esto con el modelo informático de infraestructura como servicio (IaaS), donde los clientes pagan por los servidores físicos, las máquinas virtuales y otros recursos necesarios para ejecutar aplicaciones, desde el momento en que suministran esos recursos hasta el momento en que los retiran.

Desarrollo en cualquier lenguaje: sin servidor es un entorno políglota, ya que permite a los desarrolladores codificar en cualquier lenguaje o infraestructura (Java, Python, JavaScript, node.js) con el que se sientan cómodos.

Ciclos optimizados de desarrollo/DevOps: sin servidor simplifica la implementación y, en un sentido más amplio, simplifica DevOps porque los desarrolladores no dedican tiempo a definir la infraestructura necesaria para integrar, probar, entregar e implementar compilaciones de código en la producción.

Rendimiento rentable: para ciertas cargas de trabajo (procesamiento vergonzosamente paralelo, procesamiento de flujo, ciertas tareas de procesamiento de datos), la computación sin servidor puede ser más rápida y rentable que otras formas de computación.

Visibilidad de uso: las plataformas sin servidor brindan una visibilidad casi total del sistema y los tiempos de los usuarios y pueden agregar información del uso de manera sistemática.

Los profesionales de TI y desarrollo citan otros beneficios específicos de la computación sin servidor. Conózcalos con la herramienta interactiva (PDF, 1.8 MB) a continuación:

 

Casos de uso de la tecnología sin servidor

Dada su combinación única de características y beneficios, la arquitectura sin servidor es adecuada para casos de uso relacionados con microservicios, backends móviles y procesamiento de flujo de datos y eventos.

Sin servidor y microservicios

El caso de uso más común de sin servidor en la actualidad es su implementación para apoyar las arquitecturas de microservicios. El modelo de microservicios se centra en la creación de pequeños servicios que realizan un solo trabajo y se comunican entre sí mediante API. Si bien los microservicios también se pueden crear y operar con el uso de PaaS o contenedores, la tecnología sin servidor ha cobrado un impulso significativo debido a sus atributos relacionados con pequeños fragmentos de código, escalamiento inherente y automático, suministro rápido y un modelo de precios que nunca cobra por la capacidad inactiva.

Backends de API

Cualquier acción (o función) en una plataforma sin servidor se puede convertir en un punto final HTTP listo para ser consumido por clientes web. Cuando están habilitadas para la web, estas acciones se denominan acciones web. Una vez que tenga acciones web, puede ensamblarlas en una API con todas las funciones con una gateway de API que brinda seguridad adicional, compatibilidad con OAuth, limitación de velocidad y compatibilidad con dominios personalizados.

Para obtener experiencia práctica de los backends de API, vea el tutorial "API y aplicación web sin servidor".

Procesamiento de datos

Sin servidor es ideal para trabajar con datos estructurados de texto, audio, imagen y video en tareas como el enriquecimiento, la transformación, la validación y la limpieza de datos, el procesamiento de PDF, la normalización de audio, el procesamiento de imágenes (rotación, nitidez, reducción de ruido, generación de miniaturas), el reconocimiento óptico de caracteres (OCR) y la transcodificación de video. Para ver un caso de uso detallado del procesamiento de imágenes, lea "Cómo SiteSpirit se volvió 10 veces más rápido, al 10 % del costo".

Operaciones masivamente paralelas de computación/"mapeo"

Cualquier tipo de tarea vergonzosamente paralela es un buen caso de uso para un tiempo de ejecución sin servidor, en el que cada tarea paralelizable invoca una acción. Las tareas de muestra incluyen todo, desde la búsqueda y el procesamiento de datos (específicamente, Cloud Object Storage), las operaciones de mapeo (y reducción) y el web scraping hasta la automatización de procesos de negocios, el ajuste de hiperparámetros, las simulaciones de Monte Carlo y el procesamiento de genomas.

Para ver un ejemplo detallado, lea "Cómo una simulación de Monte Carlo se ejecutó 160 veces más rápido en una arquitectura sin servidor que en una máquina local".

Cargas de trabajo de procesamiento de flujo

La combinación de Apache Kafka gestionado con FaaS y base de datos/almacenamiento ofrece una base sólida para la creación en tiempo real de líneas de trabajo de datos y aplicaciones de streaming. Estas arquitecturas son ideales para trabajar con todo tipo de ingestiones de flujo de datos (para validación, limpieza, enriquecimiento, transformación), incluidos datos de sensores de IoT, datos de registro de aplicaciones, datos de mercados financieros y flujos de datos comerciales (de otras fuentes de datos).

Aplicaciones comunes de sin servidor

En una encuesta reciente de IBM, los profesionales de TI informaron que aplican la tecnología sin servidor en una amplia variedad de ámbitos, incluida la gestión de relaciones con los clientes (CRM), analítica e inteligencia empresarial, finanzas y más:

 

Tutoriales: Introducción a la computación sin servidor

Puede ampliar sus habilidades de computación sin servidor con estos tutoriales:

Soluciones
IBM Cloud Code Engine

Ejecute su contenedor, código de aplicación o trabajo por lotes en un tiempo de ejecución de contenedor completamente gestionado

Explore IBM Cloud Code Engine
IBM Cloud Satellite

Implemente y ejecute aplicaciones de manera consistente en entornos locales, de edge computing y de nube pública de cualquier proveedor de nube

Explore IBM Cloud Satellite
IBM Cloudant

La capa de datos para aplicaciones de hiperescala resilientes y disponibles a nivel global, basada en Apache CouchDB de código abierto

Explore IBM Cloudant
Recursos Sin servidor en la empresa, 2021

Una nueva investigación revela información de las oportunidades y los desafíos del mundo real de la computación sin servidor.

Introducción a IBM Cloud Code Engine

Obtenga más que funciones para ejecutar todas sus cargas de trabajo en contenedores, incluidas aplicaciones web, microservicios y trabajos por lotes, en esta plataforma sin servidor completamente gestionada.

Vuelva a disfrutar de su nube

Descubra más acerca de IBM Cloud Code Engine y los beneficios que ofrece.

Dé el siguiente paso

La computación sin servidor ofrece una forma más sencilla y rentable de crear y operar aplicaciones en la nube. Descubra IBM Cloud Code Engine, una plataforma sin servidor de pago por uso que permite a los desarrolladores implementar flujos de trabajo y aplicaciones sin servidor, sin necesidad de conocimientos de Kubernetes.

Explore IBM Cloud Code Engine hoy mismo