¿Qué es la computación sin servidor?
Definición de sin servidor
La computación sin servidor es un modelo de computación en el cloud que permite a los desarrolladores crear y ejecutar código en servidores gestionados por el Proveedor Cloud y disponibles a demanda. La computación sin servidor libera a los desarrolladores de la gestión de la infraestructura de backend y brinda un entorno escalable y flexible para las empresas. Con la computación sin servidor, los Proveedores Cloud provisionan la infraestructura para cumplir con la demanda aumentando o reduciendo la escala según sea necesario, y gestionan la infraestructura realizando cualquier rutina de mantenimiento, actualizaciones, aplicación de parches y monitoreo de seguridad.
La computación sin servidor no significa que no hay servidores involucrados. Más bien, "sin servidor" significa que la gestión de la infraestructura se terciarizó al Proveedor Cloud. A esto se deben los beneficios y desafíos del monitoreo sin servidor. Las empresas pueden enfocar sus recursos en la lógica comercial, pero esto es a cambio de menor control y visibilidad de lo que sucede en el backend.
Sin servidor comparado con FaaS
Función como servicio (FaaS) se refiere a servicios informáticos que descargan la gestión de infraestructura de backend para mantener el foco en la creación y ejecución de código de frontend. Sin servidor y FaaS suelen usarse de forma intercambiable, pero FaaS hace referencia específicamente a la capacidad de ejecución de código que brinda a los desarrolladores. Como arquitectura impulsada por eventos, FaaS es un subconjunto de computación sin servidor y es solo uno de los servicios que proporciona la computación sin servidor.
Los servicios sin servidor también incluyen bases de datos y almacenamiento sin servidor, mensajes y transmisión de eventos, y puertas de enlace de API.
Sin servidor comparado con BaaS
Backend como servicio (BaaS) es, al igual que FaaS, un subconjunto de computación sin servidor. BaaS es un modelo de computación en el cloud que permite a los desarrolladores enfocarse en el frontend. BaaS incluye software listo para actividades de backend típicas, como autenticación de usuario, notificaciones push, almacenamiento en el cloud y gestión de base de datos.
La computación sin servidor funciona tanto con FaaS como con BaaS.
Sin servidor comparado con SaaS
Software como servicio (SaaS) se refiere a un servicio informático en el que un proveedor otorga licencias y proporciona aplicaciones de software listas para usar a empresas a través de internet. La computación sin servidor ofrece una infraestructura escalable y flexible para que los desarrolladores creen y desplieguen aplicaciones sin preocuparse por la gestión del servidor.
¿Qué es el monitoreo sin servidor?
La arquitectura impulsada por eventos de la computación sin servidor y la infraestructura de terceros también requerían una solución de monitoreo dedicada. Las soluciones de monitoreo sin servidor pueden ayudar a las empresas a obtener visibilidad de todas las operaciones y son un componente importante de cualquier modelo de computación sin servidor.
¿Cuáles son los componentes clave de una arquitectura sin servidor?
Existen varios componentes clave de la arquitectura sin servidor, lo que la diferencia de los modelos de infraestructura tradicionales.
- El rol de los Proveedores Cloud es importante:
- Los Proveedores Cloud son clave para el entorno sin servidor, dado que se ocupan de la gestión de la infraestructura. En un modelo de computación de arquitectura tradicional, tu equipo de IT normalmente debería llevar a cabo la tarea de ejecutar y gestionar los servidores, la cual requiere mucho trabajo y tiempo. Con la opción sin servidor, el Proveedor Cloud asume esa responsabilidad y libera a tus desarrolladores. Los Proveedores Cloud provisionan los servidores, las bases de datos y el almacenamiento.
- Programación impulsada por eventos:
- La computación sin servidor se desencadena mediante eventos, en lugar de mediante sondeos. Un entorno sin servidor es una arquitectura impulsada por eventos (EDA). Un evento es cualquier cambio de estado que ocurra en el entorno, como una solicitud en el extremo del usuario. Estos eventos invocan funciones, que los desarrolladores programan para desencadenar tareas.
- Tareas basadas en desencadenantes:
- La computación sin servidor solo realiza tareas cuando una función (invocada por un evento) las desencadena. Como resultado, la computación sin servidor solo usa los recursos que necesita cuando se los solicita.
- Programación asíncrona:
- La arquitectura impulsada por eventos y la naturaleza sin estado de la computación sin servidor permiten la programación asíncrona. Sin servidor significa que no se guardan datos entre interacciones. Por lo tanto, se pueden realizar varias tareas a la vez, sin necesidad de esperar a que una tarea termine para poder realizar otra. La posibilidad de programación asíncrona también brinda a los desarrolladores flexibilidad cuando escriben y prueban código nuevo. La velocidad de despliegue aumenta.
- API RESTful:
- La computación sin servidor se comunica entre servidores web a través del uso de API RESTful. REST significa transferencia de estado representacional. Una API es una interfaz de programación de aplicaciones. Como entorno de arquitectura sin estado, la computación sin servidor usa API RESTful para traducir o representar un recurso del extremo del cliente (backend) a un usuario que realizó una solicitud a través de HTTP.
- DevOps (CI/CD):
- La computación sin servidor permite a los desarrolladores quitar "Ops" de DevOps gracias a CI/CD. CI/CD introduce la automatización en el desarrollo de aplicaciones. CI se refiere a la integración continua, mientras que CD se refiere al despliegue continuo o entrega continua. Con el monitoreo de backend terciarizado a los Proveedores Cloud, un entorno sin servidor contribuye al desarrollo de aplicaciones ágil gracias a que los desarrolladores pueden automatizar partes del pipeline de desarrollo y pasar menos tiempo preocupándose por los efectos del despliegue.
- Escalado automático:
- La computación sin servidor es inherentemente escalable. Aumenta o reduce la escala de forma automática para cumplir con la demanda. Un entorno sin servidor solo activará contenedores cuando se invoquen funciones. Como tal, responde de forma automática a los aumentos o las reducciones de uso.
- Autorreparación:
- Las aplicaciones sin servidor pueden programarse para identificar de forma automática errores y corregirlos a medida que ocurren. Este tipo de capacidad mejora la resiliencia de una aplicación y aumenta su disponibilidad.
¿Cómo funcionan las aplicaciones sin servidor?
La computación sin servidor usa tanto backend como servicio (BaaS) como función como servicio (FaaS) para cumplir con las solicitudes. El entorno como un todo es impulsado por eventos, lo que significa que un evento desencadena una respuesta, como una autenticación, o una función.
La parte FaaS de la computación sin servidor funciona con eventos o solicitudes de usuario. Una solicitud se procesa en la puerta de enlace de interfaz de rendimiento de aplicaciones (API), que luego invoca una función. A su vez, la función se comunica con la base de datos. Esta cadena de actividades representa una sola tarea de la aplicación. En un entorno sin servidor, las aplicaciones son modulares debido a que las tareas se programan como funciones distintas.
Los desarrolladores escriben código de aplicaciones sin servidor que se despliega en contenedores a demanda. El Proveedor Cloud ejecutará la función en un servidor en ejecución o activará un nuevo servidor para ejecutar la función.
La computación sin servidor brinda a los desarrolladores una gran flexibilidad, debido a que no tiene estado, lo que significa que todas las invocaciones son independientes. No se almacenan datos de interacciones previas. La computación sin servidor usa los recursos solo según resulta necesario. Una vez que una función ya no se necesita, desaparece el contenedor en el que se desplegó el código. Esto contribuye a la flexibilidad que la computación sin servidor ofrece a los desarrolladores.
Consideraciones adicionales en aplicaciones sin servidor:
- Un arranque en frío puede ocurrir cuando se invoca una función por primera vez o tras un período de inactividad. Esto puede generar cierta latencia.
- Los Proveedores Cloud determinan la cantidad de funciones que pueden ejecutarse en simultáneo. Este es el límite de simultaneidad.
- El tiempo de espera se refiere a la cantidad de tiempo que asigna un Proveedor Cloud a una función antes de finalizarla.
¿Por qué es importante la tecnología sin servidor?
La tecnología sin servidor es importante porque ofrece beneficios comerciales importantes al permitir el escalado automático y además permite a los desarrolladores ser más productivos y entregar aplicaciones más rápido. Por tanto, es una tecnología rentable: empodera a los desarrolladores para enfocarse en la producción en lugar de en las operaciones, y como modelo basado en el consumo, alivia el costo de ejecutar y gestionar servidores físicos.
La tecnología sin servidor existe desde hace más de una década. En 2014, AWS lanzó su primer FaaS, AWS Lambda. Google tiene Google Cloud Functions, y Microsoft tiene Azure Functions. Como la mayoría de las empresas dependen de la computación en el cloud, la tecnología sin servidor es sinónimo de operaciones comerciales. A medida que el rol de los Proveedores Cloud se vuelve crucial para las empresas, también lo hace la tecnología sin servidor.
Beneficios de las funciones sin servidor
Las funciones sin servidor proporcionan varios beneficios a los desarrolladores y clientes.
- Rentabilidad: los Proveedores Cloud ofrecen la computación sin servidor como un modelo basado en el consumo; solo cobran por los recursos y las funciones que usas. Dada la naturaleza sin estado de la computación sin servidor (si un contenedor no está en uso, desaparece), no existe el tiempo de inactividad. Como resultado, nunca pagas por tiempo de inactividad. Esto hace una gran diferencia para la rentabilidad.
- Escalado: la computación sin servidor te permite aumentar y reducir la escala según sea necesario gracias a su arquitectura impulsada por eventos. Si la demanda es mayor, el Proveedor Cloud te permite aumentar la escala activando más recursos según sea necesario. Ellos ejecutan y gestionan esos recursos por ti, para que puedas enfocarte en crecer.
- Menor sobrecarga: gracias a las funciones sin servidor, los Proveedores Cloud se ocupan de la gestión y el monitoreo de tu infraestructura. Esto significa que descargas el costo y los recursos humanos de la gestión al Proveedor Cloud, y que puedes redistribuir tus recursos a desarrollo y despliegue.
- Rendimiento y disponibilidad: como entorno impulsado por eventos, la computación sin servidor aumenta el rendimiento, dado que nunca usa recursos innecesarios. Esto también significa que los recursos están disponibles según sea necesario. El Proveedor Cloud te permite escalar según necesites activando servidores y contenedores cuando se requiera, por lo que nunca tendrás que preocuparte por la disponibilidad de servidores o almacenamiento.
- Productividad de desarrolladores: los desarrolladores se benefician de las funciones sin servidor porque un Proveedor Cloud se ocupa de las operaciones de DevOps. Esto libera a los desarrolladores para que puedan enfocarse en escribir código. El entorno sin servidor promueve la agilidad y productividad de desarrollo permitiendo la automatización de CI/CD en el pipeline de desarrollo.
¿Cuáles son los desafíos de la computación sin servidor?
A pesar de los beneficios evidentes de rentabilidad y desarrollo acelerado, la computación sin servidor incluye una serie de desafíos. Algunas de las desventajas de la computación sin servidor incluyen:
- Bloqueo de proveedores: la naturaleza de la computación sin servidor significa que estás comprometido con un único Proveedor Cloud para el despliegue de código. Como resultado, los desarrolladores se ven forzados a usar el modelo que ofrece el proveedor. El proveedor rige el uso de recursos, como los límites de simultaneidad. Por estos motivos, el bloqueo de proveedores puede significar falta de flexibilidad.
- Monitoreo y depuración desde una perspectiva de código: como el Proveedor Cloud gestiona la infraestructura, tienes poca o cero visibilidad del backend de tus operaciones. Como resultado, es muy difícil monitorear un entorno sin servidor sin una herramienta de monitoreo sin servidor dedicada. La arquitectura impulsada por eventos de un entorno sin servidor también significa que identificar, recrear y corregir errores puede ser un desafío.
- Latencia: dada la naturaleza sin estado de las aplicaciones en un entorno sin servidor, puede generarse latencia cuando se invoca una función por primera vez o tras un largo período de inactividad. La latencia también puede ocurrir por el agotamiento del tiempo de espera o cuando se ejecutan demasiadas funciones de forma simultánea. En dicha instancia, el proveedor puede terminar una de las funciones, lo que lleva a un fallo. En el extremo del usuario, esto genera latencia.
- Personalización y control limitado: como los proveedores sin servidor gestionan la infraestructura subyacente, puede haber limitaciones de personalización y control del entorno, como versiones de tiempo de ejecución disponibles, asignación de memoria y límites de tiempo de ejecución.
- Inquietudes de seguridad: si bien la computación sin servidor reduce la superficie de ataque, puede introducir nuevos riesgos de seguridad. Los desarrolladores deben ser conscientes de los riesgos asociados con los servicios de terceros, los permisos a nivel de la función y las vulnerabilidades en el código de la aplicación.
- Cualidad de sin estado: las funciones sin servidor no tienen estado, lo que significa que no retienen datos entre invocaciones. Esto puede dificultar la gestión del estado de la aplicación y requerir a los desarrolladores que dependan de bases de datos o almacenamiento externos para mantener el estado.
- Previsibilidad de costos: si bien la computación sin servidor puede ser rentable, puede ser difícil predecir costos, dado que dependen de factores como la cantidad de invocaciones, memoria y tiempo de ejecución. Los picos inesperados de uso pueden llevar a costos más altos.
- Integración con sistemas existentes: integrar funciones sin servidor a arquitecturas y sistemas existentes puede ser desafiante, en especial al lidiar con aplicaciones heredadas o sistemas complejos.
- Curva de aprendizaje: adoptar la computación sin servidor requiere que los desarrolladores aprendan nuevos conceptos, herramientas y mejores prácticas, lo que puede agregar complejidad al proceso de desarrollo.
Casos de uso de computación sin servidor
Los beneficios que ofrece la computación sin servidor, incluida la escalabilidad y la administración reducida, la hacen adecuada para varios casos de uso.
- Desarrollo de aplicaciones web: la computación sin servidor es adecuada para el desarrollo de aplicaciones web dado que es un entorno en el que los desarrolladores pueden realizar pruebas rápidamente. El modelo basado en consumo que ofrecen los Proveedores Cloud también significa que el desarrollo de aplicaciones web es más económico en la computación sin servidor. Solo pagas por los recursos que usas y no tienes que invertir tiempo o recursos humanos en la gestión de la infraestructura. Esto permite a los desarrolladores enfocarse en el frontend. Los servicios sin servidor, como bases de datos, puertas de enlace de API y arquitectura impulsada por eventos (EDA), permite a los desarrolladores crear aplicaciones web con solo escribir código.
- Procesamiento y analíticas de datos: la computación sin servidor funciona bien con datos de texto estructurado, audio, imágenes y video. Permite el procesamiento y análisis de grandes sets de datos diferentes. Como cualquier modelo de computación tradicional, un entorno sin servidor contiene una variedad de sets de datos en silos. Los desarrolladores pueden escribir una aplicación para reunir y procesar los datos de todos los canales comerciales en una sola base de datos. La computación sin servidor es ideal para procesar grandes cantidades de datos, como operaciones ETL (extracción, transformación y carga), análisis de logs o validación de datos, dado que puede escalar de forma horizontal para encargarse de la carga de trabajo requerida.
- API y microservicios: las funciones sin servidor pueden usarse para crear y desplegar API y microservicios de forma rápida, lo que permite a los desarrolladores enfocarse en escribir la lógica de la aplicación sin preocuparse por la gestión de la infraestructura.
- Procesamiento de archivos en tiempo real: las funciones sin servidor pueden procesar archivos en tiempo real cuando se cargan a servicios de almacenamiento en el cloud, lo que permite el cambio de tamaño de imágenes, la transcodificación de video o la extracción de texto.
- Flujos de trabajo impulsados por eventos: la computación sin servidor puede usarse para crear flujos de trabajo impulsados por eventos que respondan a eventos específicos, como cambios en una base de datos, flujos de datos de dispositivos de IoT o mensajes de una cola de mensajes.
- Cron jobs y tareas programadas: las funciones sin servidor pueden usarse para programar tareas y ejecutarlas en intervalos específicos, como backups, generación de reportes o sincronización de datos por la noche.
- Chatbots y asistentes virtuales: las funciones sin servidor pueden usarse para crear chatbots o asistentes virtuales que procesen y respondan a las entradas de los usuarios, integrándose con plataformas de mensajes y servicios de procesamiento de lenguaje natural.
- Procesamiento de datos de IoT: la computación sin servidor puede procesar y analizar datos generados por dispositivos de IoT, lo que permite monitoreo en tiempo real, detección de anomalías y agregación de datos.
Arquitectura sin servidor en comparación con la tradicional
La principal diferencia entre la arquitectura sin servidor y la tradicional es que el equipo de IT de tu empresa no ejecuta ni gestiona servidores físicos. Eso se descarga a un Proveedor Cloud.
Tradicionalmente, una empresa usaría servidores de metal expuesto (BM) para ejecutar aplicaciones. Esto requiere tiempo y recursos para obtener el hardware y una ubicación física para instalarlo, encenderlo y enfriarlo. El BM requiere organización en racks, instalación y configuración del hardware. El equipo de IT también se ocupa de las responsabilidades, que consumen tiempo, de configurar el entorno para el despliegue de código, la instalación de sistemas operativos y el mantenimiento y la gestión de servidores.
Los servidores BM evolucionaron a máquinas virtuales (VM). Las empresas aún deben instalar y configurar el hardware, pero se benefician del hecho de que varias máquinas puedan ejecutarse en el mismo hardware. Esto significa que los recursos informáticos se utilizan mejor. El equipo técnico puede desplegar varios servidores a través de hipervisores y, como en BM, el equipo debe instalar los sistemas operativos y asegurar el mantenimiento y la gestión. La instalación de sistemas operativos se automatiza con el uso de plantillas de VM y herramientas de automatización.
Los contenedores evolucionaron de las VM. Los contenedores son paquetes de código que permiten a las aplicaciones ejecutarse en un entorno operativo dado, haciéndolas portátiles. A diferencia de las VM, todos los contenedores se ejecutan en el mismo sistema operativo y tiempo de ejecución de contenedores, y sus recursos informáticos se dividen en el espacio del usuario de kernel. Esto simplifica en gran medida la gestión de estos servicios, dado que hay menos sistemas operativos que gestionar. Los contenedores se automatizan a través de plataformas como Kubernetes, que brindan flexibilidad donde se despliegan los contenedores, lo que los hace portátiles y fáciles de desplegar y destruir cuando resulta necesario.
La arquitectura sin servidor libera a los equipos de IT para que puedan enfocarse en la escritura y el despliegue de código, dado que toda la gestión de la infraestructura se descargó al Proveedor Cloud.
El futuro de la computación sin servidor con Elastic
A medida que la tecnología cloud continúa evolucionando, también lo hará la computación sin servidor. Los proveedores ya comenzaron a mejorar la computación sin servidor agregando partes a fin de que sea conveniente para cargas de trabajo comerciales de uso general.
Preguntas frecuentes sobre la tecnología sin servidor
¿Qué significa sin servidor?
Sin servidor es un modelo de computación en el cloud en el que el Proveedor Cloud provisiona y gestiona la infraestructura subyacente para que el cliente pueda enfocarse en el desarrollo del frontend. La computación sin servidor está compuesta por FaaS y BaaS. Ambos servicios trabajan juntos para proporcionar un entorno flexible que permita a los desarrolladores desplegar código rápidamente.
¿Cuál es un ejemplo de la computación sin servidor?
Un usuario en un endpoint navega en el sitio web del cliente. Al hacerlo, interactúa con dos funcionalidades sin servidor: BaaS y FaaS. Para seguir navegando, el usuario ingresa su información. La parte de BaaS del entorno sin servidor realiza la autenticación del usuario. El usuario continúa navegando en el sitio web y realiza una compra. Esto es un evento. A este evento lo procesa una API de puerta de enlace, la cual invoca una función para enviar un correo electrónico con el recibo. A fin de hacer esto, el Proveedor Cloud activa un contenedor que tiene el código de la aplicación y realiza la tarea. Eso es FaaS.
¿Por qué se llama sin servidor?
Sin servidor es una denominación poco apropiada que describe un entorno de computación en la nube en el que el Proveedor Cloud provisiona y gestiona los servidores necesarios para ejecutar las aplicaciones del cliente. El cliente no tiene servidores, sino que paga al Proveedor Cloud para usar los suyos.
Glosario de computación sin servidor
- Puerta de enlace de API: una puerta de enlace de interfaz de programación de aplicaciones (API) es un enlace de comunicación que lee una solicitud y la enruta a un servicio de backend. Luego traduce los datos de backend al usuario en el frontend.
- BaaS: backend como servicio es un modelo de computación en el cloud que usa software desarrollado para brindar servicios como autenticación de usuarios o almacenamiento de datos. Es un subconjunto de la computación sin servidor.
- Computación en el cloud: la computación en el cloud se refiere a los modelos de computación nativos del entorno en el cloud. Cualquier tipo de computación que suceda en el cloud se conoce como computación en el cloud.
- Nativo del cloud: nativo del cloud se refiere a cualquier aplicación o servicio desarrollado específicamente para el cloud. Toma en cuenta la escalabilidad y elasticidad de un entorno en el cloud.
- Arranques en frío: un arranque en frío ocurre cuando se invoca una función por primera vez o tras un período de inactividad. Es la primera vez que el Proveedor Cloud activa un contenedor para completar la función.
- Contenedor: los contenedores son paquetes de código ligeros, portátiles y autosuficientes con dependencias, lo que les permite ejecutarse de forma consistente en distintos entornos de computación.
- Arquitectura impulsada por eventos: la arquitectura impulsada por eventos es un modelo de arquitectura de software que usa eventos (solicitudes, cambios de estado, actualizaciones) para desencadenar la comunicación entre servicios. El impulso por eventos es un enfoque de programación, no un lenguaje de programación.
- FaaS: función como servicio es un modelo de computación en la nube que permite a los desarrolladores crear y ejecutar el frontend sin gestionar la infraestructura del backend.
- Microservicios: los microservicios son un tipo de modelo de arquitectura de software, en el cual el software se divide en distintos servicios. Estos servicios se comunican a través de las API y permiten la flexibilidad de desarrollo.
- Multicloud: multicloud se refiere a varios clouds, como Google Cloud, AWS y Microsoft Azure. La mayoría de las empresas son multicloud, es decir que usan los servicios de varios Proveedores Cloud en simultáneo. Por ejemplo, una empresa usa el paquete de Office de Google para el correo electrónico y AWS Lambda para sus funciones sin servidor.
- Sin estado: sin estado se refiere a un rasgo informático de las aplicaciones, los protocolos o los procesos que se ocupan de las operaciones de forma independiente. La computación sin servidor, por ejemplo, es inherentemente sin estado, lo que significa que no se mantienen datos entre invocaciones.