Inicio
Topics
Sin servidor
Publicado: 10 de junio de 2024
Colaboradores: Stephanie Susnjara, Ian Smalley
La informática sin servidor es un modelo de desarrollo y ejecución de aplicaciones que permite a los desarrolladores crear y ejecutar código de aplicación sin aprovisionar ni gestionar servidores ni infraestructura de back-end.
Sin servidor no significa que "no haya servidores". A pesar del nombre, los servidores en la informática sin servidor son gestionados por un proveedor de servicios en la nube (CSP). "Sin servidor" describe la experiencia del desarrollador con esos servidores: son invisibles para el desarrollador, que no los ve, no los gestiona ni interactúa con ellos de ninguna manera.
Los desarrolladores pueden centrarse en escribir el mejor código de aplicación front-end y la lógica empresarial con la computación sin servidor. Todo lo que necesitan hacer es escribir el código de su aplicación e implementarlo en contenedores administrados por un CSP.
El proveedor de servicios en la nube se encarga del resto, el aprovisionamiento de la infraestructura en la nube necesaria para ejecutar el código y la ampliación y reducción de la infraestructura en función de las necesidades, y también es responsable de toda la gestión y el mantenimiento rutinarios de la infraestructura, como las actualizaciones y los parches del sistema operativo, la gestión de la seguridad, la planificación de la capacidad, la monitorización del sistema, etc.
Además, los desarrolladores nunca pagan por la capacidad inactiva con sin servidor. El proveedor de servicios en la nube pone en marcha y suministra los recursos informáticos necesarios cuando se ejecuta el código, después los vuelve a reducir, llevando a cabo lo que se conoce como "escalado a cero" cuando se detiene la ejecución. La facturación comienza cuando se inicia la ejecución y termina cuando se detiene; normalmente, la tarificación se basa en el tiempo de ejecución y los recursos necesarios.
Junto con la infraestructura como servicio (IaaS), la plataforma como servicio (PaaS), la función como servicio (FaaS) y el software como servicio (SaaS), sin servidor se ha convertido en una oferta líder de servicios en la nube. Según un informe de SkyQuest Technology, el tamaño del mercado mundial de arquitectura sin servidores se valoró en 8010 millones de dólares en 2022 y se espera que pase de 9840 millones de dólares en 2023 a 50 860 millones de dólares en 20311. Hoy en día, todos los principales proveedores de servicios en la nube ofrecen una plataforma sin servidor, incluidos Amazon Web Services (AWS Lambda), Microsoft Azure (Azure), Google Cloud (Google Cloud Cloud Cloud Code Engine).
Juntos, la informática sin servidor, los microservicios y los contenedores forman un triunvirato de tecnologías en el núcleo del desarrollo de aplicaciones nativas de la nube.
Eche un vistazo a este vídeo para obtener una explicación detallada de sin servidor y la pila sin servidor (6:37).
Conecte e integre sus sistemas para preparar su infraestructura para la IA.
Sin servidor se originó en 2008 cuando Google lanzó Google App Engine (GAE), una plataforma para desarrollar y alojar aplicaciones web en centros de datos gestionados por Google. Con GAE, un desarrollador de software podría crear e iniciar software en la nube de Google sin preocuparse por tareas de gestión de servidores como parches o equilibrio de carga, que Google gestionó.
El término "sin servidor" apareció por primera vez en un artículo técnico por el especialista en cloud computing Ken Fromm en 20122. En 2014, Amazon introdujo AWS Lambda, la primera plataforma sin servidor. AWS Lambda, un modelo de FaaS, que lleva el nombre de funciones de cálculo y programación lambda, ayudó a que el marco de computación sin servidor ganara atractivo en el mercado masivo y se adoptara rápidamente entre los desarrolladores de software, ya que les permitió ejecutar código en respuesta a eventos sin necesidad de administrar servidores. En 2016, Microsoft Azure Functions y Google Cloud Functions lanzaron sus plataformas sin servidor.
Otros actores importantes en el mercado actual de plataformas sin servidor son IBM Cloud Code Engine, Oracle Cloud Infrastructure (OCI) Functions, Cloudflare Workers y Alibaba Function Compute.
Sin servidor es mucho más que una función como servicio (FaaS), el servicio de cloud computing que permite a los desarrolladores ejecutar código o contenedores en respuesta a eventos o solicitudes específicos sin especificar ni gestionar la infraestructura necesaria para ejecutar el código.
FaaS es el modelo de computación central para sin servidor, y los dos términos se utilizan a menudo indistintamente. En comparación con FaaS, sin servidor es una pila completa de servicios que pueden responder a eventos o solicitudes específicos y escalar a cero cuando ya no están en uso, y para los que el proveedor, la administración y la facturación son gestionados por el proveedor de la nube e invisibles para los desarrolladores.
Además de FaaS, estos servicios incluyen bases de datos y almacenamiento, pasarelas de interfaz de programación de aplicaciones (API) y arquitectura basada en eventos.
Las bases de datos (SQL y NoSQL) y el almacenamiento (en particular el almacenamiento de objetos) son la base de la capa de datos. Un enfoque sin servidor de estas tecnologías implica pasar de aprovisionar "instancias" con límites definidos de capacidad, conexión y consulta a modelos que se escalan linealmente con la demanda, tanto en infraestructura como en precios.
Las pasarelas de API actúan como proxies de las acciones web y proporcionan enrutamiento de métodos HTTP, ID y secretos de los clientes, límites de velocidad, CORS, visualización del uso de la API, visualización de registros de respuesta y políticas de uso compartido de API
Las arquitecturas sin servidor funcionan bien para cargas de trabajo de procesamiento basadas en eventos y flujos de trabajo, sobre todo la plataforma de transmisión de eventos de código abierto Apache Kafka.
Las funciones automatizadas sin servidor no tienen estado y están diseñadas para controlar eventos individuales. Estas funciones se han convertido en una parte esencial de la arquitectura basada en eventos (EDA): un modelo de diseño de software construido en torno a la publicación, captura, procesamiento y almacenamiento de eventos. En un marco EDA, los productores de eventos (por ejemplo, microservicios, API, dispositivos IoT) envían notificaciones de eventos en tiempo real a los consumidores de eventos, activando rutinas de procesamiento específicas. Por ejemplo, cuando Netflix estrena una nueva serie original, varios servicios de EDA están a la espera de la notificación del estreno, lo que desencadena una cascada de actualizaciones para informar a los usuarios. Muchas otras empresas basadas en aplicaciones web y móviles orientadas al usuario (por ejemplo, Uber, DoorDash, Instacart) se basan en la arquitectura basada en eventos.
Dado que sin servidor, la plataforma como servicio (PaaS), los contenedores y las máquinas virtuales (VM) desempeñan un papel crucial en el ecosistema de computación y desarrollo de aplicaciones en la nube, resulta útil medir cómo se comparan los servicios sin servidor con los demás en algunos atributos clave.
Kubernetes es una plataforma de orquestación de contenedores de código abierto que automatiza la implementación, la gestión y el escalado de contenedores. La automatización de Kubernetes simplifica drásticamente el desarrollo de aplicaciones basadas en contenedores.
Las aplicaciones sin servidor suelen implementarse en contenedores. Sin embargo, Kubernetes solo puede ejecutar aplicaciones sin servidor de forma independiente con un software especializado que integre Kubernetes con la plataforma sin servidor de un proveedor de nube específico.
Knative es una extensión de código abierto para Kubernetes que proporciona un marco sin servidor. Permite que cualquier contenedor se ejecute como una carga de trabajo sin servidor en cualquier plataforma en la nube que ejecute Kubernetes, tanto si el contenedor está construido en torno a una función sin servidor como a algún otro código de aplicación (por ejemplo, microservicios). Knative funciona abstrayendo el código y gestionando el enrutamiento de red, los activadores de eventos y el autoescalado para la ejecución sin servidor.
Knative es transparente para los desarrolladores. Construyen un contenedor utilizando Kubernetes, y Knative hace el resto, mediante la ejecución del contenedor como una carga de trabajo sin servidor.
La informática sin servidor ofrece a los desarrolladores individuales y a los equipos de desarrollo empresarial muchas ventajas técnicas y empresariales:
Aunque sin servidor tiene muchas ventajas, es esencial tener en cuenta algunas desventajas:
Aunque los CSP proporcionan medidas de seguridad para gestionar las aplicaciones sin servidor, el cliente también es responsable de asegurar el código y los datos de la aplicación según un modelo de responsabilidad compartida. Las medidas de seguridad basadas en la nube para sin servidor incluyen políticas de seguridad automatizadas y soluciones como la gestión de eventos e información de seguridad (SIEM), la gestión de identidades y accesos (IAM) y la detección y respuesta ante amenazas.
Seguir las prácticas de DevSecOps ayuda a los equipos de desarrollo a proteger sin servidor. DevSecOps, que son las siglas de "desarrollo, seguridad y operaciones", es una práctica de desarrollo de aplicaciones que automatiza la integración de la seguridad y las prácticas de seguridad en cada fase del ciclo de vida del desarrollo de software, desde el diseño inicial hasta la integración, las pruebas, la entrega y la implantación.
A diferencia de los entornos tradicionales de centros de datos locales, un modelo de informática sin servidor puede ayudar a las organizaciones a reducir el consumo de energía y disminuir su huella de carbono para las operaciones de TI.
Además, un modelo sin servidor permite a las empresas optimizar sus emisiones a través de la eficiencia de los recursos, al pagar únicamente por los recursos necesarios y utilizarlos. Esta característica da como resultado menos energía desperdiciada en procesos inactivos o excesivos.
Dados sus atributos y beneficios únicos, la arquitectura sin servidor funciona mejor para casos de uso que involucran microservicios, back-ends móviles y procesamiento de flujos de datos y eventos.
El caso práctico más común sin servidor hoy en día es dar soporte a arquitecturas de microservicios. El modelo de microservicios se centra en la creación de pequeños servicios que realizan una única tarea y se comunican entre sí mediante API. Aunque los microservicios también pueden construirse y operarse a través de PaaS o contenedores, sin servidor ha cobrado un impulso significativo debido a sus atributos en torno a pequeños fragmentos de código, escalado inherente y automático, aprovisionamiento rápido y un modelo de precios que nunca cobra por capacidad ociosa.
Cualquier acción (o función) en una plataforma sin servidor puede convertirse en un endpoint HTTP listo para ser consumido por clientes web. Cuando se habilitan para la web, estas acciones se denominan acciones web. Una vez que disponga de acciones web, puede ensamblarlas en una API completa con una pasarela API que aporte más seguridad, compatibilidad conOAuth3, limitación de tarifas y compatibilidad con dominios personalizados.
Open Liberty InstantOn4 adopta un enfoque novedoso para admitir el inicio rápido de aplicaciones sin servidor. Con InstantOn, puede tomar un punto de control de su proceso de aplicación Java en ejecución durante la compilación de la aplicación y, a continuación, restaurar ese punto de control en producción. La restauración es rápida (en el bajo 100 s de milisegundos), lo que lo hace ideal para sin servidor. Dado que InstantOn es un punto de control de su aplicación existente, su comportamiento después de la restauración es idéntico, incluido el mismo rendimiento excelente. Este proceso permite a las organizaciones adoptar sin servidor para las nuevas aplicaciones nativas de la nube y ofrece la oportunidad de llevar la tecnología sin servidor a las empresas existentes.
Sin servidor es ideal para trabajar con datos estructurados de texto, audio, imagen y vídeo en torno a tareas como el enriquecimiento, la transformación, la validación y la limpieza de datos. Los desarrolladores también pueden usarlo para 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.
Cualquier tipo de tarea lamentablemente paralela es un buen caso de uso para un tiempo de ejecución sin servidor, con cada tarea paralelizable resultando en una invocación de acción. Entre las tareas de muestra se incluyen desde la búsqueda y el procesamiento de datos (en concreto,el almacenamiento de objetos en la nube), operaciones MapReduce y raspado web hasta la automatización de procesos empresariales, el ajuste de hiperparámetros, las simulaciones Monte Carlo y el procesamiento de genomas.
La combinación de Apache Kafka administrado con FaaS y base de datos o almacenamiento ofrece una base sólida para desarrollos en tiempo real de canales de datos y aplicaciones de transmisión. Estas arquitecturas son ideales para trabajar con todo tipo de entradas de flujos de datos (para validación, limpieza, enriquecimiento, transformación), incluidos datos de sensores IoT, datos de registro de aplicaciones, datos de mercados financieros y flujos de datos empresariales (de otras fuentes de datos).
Sin servidor proporciona la escalabilidad automatizada necesaria para ejecutar cargas de trabajo de inteligencia artificial (IA) y machine learning (ML), lo que garantiza un rendimiento óptimo y acelera la innovación.
La informática sin servidor admite una estrategia de nube híbrida al proporcionar la agilidad, flexibilidad y escalabilidad necesarias para acomodar cargas de trabajo fluctuantes en entornos locales, nube pública, nube privada y perimetral.
Sin servidor admite muchas de las aplicaciones más comunes actuales, como gestión de relaciones con los clientes (CRM), informática de alto rendimiento (HPC), análisis de Big Data, automatización de procesos empresariales, transmisión de vídeo, juegos, telemedicina, comercio digital, creación de chatbots y más.
Puede ampliar sus conocimientos de informática serverless con los siguientes tutoriales:
Ejecute su contenedor, código de aplicación o trabajo por lotes en el tiempo de ejecución de un contenedor totalmente gestionado
Ya se trate de la implementación, la creación de nuevas aplicaciones nativas de la nube, la refactorización o la replanificación de aplicaciones existentes, Cloud Pak for Applications (CP4Apps) lo tiene todo cubierto.
Implemente y ejecute aplicaciones de forma constante en entornos locales, edge computing y nube pública de cualquier proveedor de servicios de nube.
La capa de datos para aplicaciones a hiperescala, resistentes y disponibles en todo el mundo, basada en el entorno de código abierto Apache CouchDB.
Monitorice sus aplicaciones y servicios sin servidor para optimizar el rendimiento, la disponibilidad y la seguridad.
Obtenga más información sobre las oportunidades y los desafíos del mundo real de la informática sin servidor.
Vaya más allá de las funciones para ejecutar todas sus cargas de trabajo en contenedores, incluidas aplicaciones web, microservicios y trabajos por lotes, en esta plataforma serverless totalmente gestionada.
Eche un vistazo más de cerca a IBM Cloud Code Engine y las ventajas que ofrece.
(Enlaces externos a ibm.com)
1 Global Serverless Architecture Market Report. SkyQuest. Marzo de 2024
2 Why The Future Of Software And Apps Is Serverless. ReadWrite. Octubre de 2012
3 Acerca de OAuth 2.0, OAuth
4 Faster startup for containerized applications with Open Liberty InstantOn. Open Liberty