Arquitectura sin servidor
Las arquitecturas sin servidor pueden ser la plataforma de implementación ideal para desarrolladores con recursos limitados

¿Qué es la arquitectura sin servidor?
La arquitectura serverless es un modelo de computación en la nube donde los desarrolladores crean y ejecutan aplicaciones sin administrar servidores tradicionales. Los servidores siguen existiendo, pero están en la nube, donde los proveedores de la nube se encargan automáticamente de la infraestructura, el escalado y la asignación de recursos.
Para las aplicaciones sin servidor, los desarrolladores suelen escribir código como funciones aisladas que se ejecutan en respuesta a eventos o activadores, y los proveedores de la nube cobran solo por los recursos de computación reales utilizados. Este enfoque simplifica el desarrollo de aplicaciones, reduce la sobrecarga operativa y permite una escalabilidad rápida, lo que lo hace ideal para microservicios y aplicaciones orientadas a eventos.
Esta página cubre:
- Cómo funciona la arquitectura sin servidor
- Conceptos clave en la arquitectura sin servidor
- Cuándo usar la arquitectura sin servidor
- Beneficios de la arquitectura serverless
- Limitaciones de la arquitectura serverless
- Herramientas de computación sin servidor
- Conclusión
Cómo funciona la arquitectura sin servidor
La arquitectura sin servidor abstrae la gestión de servidores para los desarrolladores y depende de los proveedores de la nube para manejar la infraestructura subyacente. Así es como suele funcionar:
1. Creación de funciones Los desarrolladores escriben código como funciones individuales, y cada función está diseñada para realizar una tarea o servicio específico. A veces se hace referencia a la arquitectura sin servidor como Function-as-a-Service o FaaS.
2. Despliegue de funciones: Las funciones se empaquetan y despliegan en una plataforma sin servidor proporcionada por un proveedor de servicios en la nube. Las plataformas sin servidor más comunes son AWS Lambda, Azure Functions y Google Cloud Functions.
3. Desencadenadores de eventos: Las funciones están configuradas para ejecutarse en respuesta a eventos o desencadenantes específicos. Los eventos pueden incluir solicitudes HTTP (por ejemplo, API Gateway), cambios en los datos (por ejemplo, actualizaciones de bases de datos), temporizadores, cargas de archivos o cualquier otra cosa. El proveedor de la nube administra las fuentes de eventos e invoca automáticamente las funciones asociadas.
4. Autoescalado: A medida que ocurren los eventos, la plataforma sin servidor escala automáticamente los recursos subyacentes para adaptarse a la carga de trabajo. Si su función experimenta un aumento repentino en las solicitudes, el proveedor de la nube aprovisionará más recursos.
5. Ejecución Cuando un evento activa una función, la plataforma sin servidor inicializa un contenedor o entorno de ejecución para dicha función. El código dentro de la función se ejecuta y puede acceder a cualquier recurso o dato requerido. Una vez que la función completa su tarea, el contenedor puede permanecer activo durante un breve periodo, lo que permite que las solicitudes posteriores se ejecuten con mayor rapidez.
6. Facturación: La facturación se basa en el tiempo de ejecución real y los recursos utilizados por las funciones. Se le cobra por ejecución y por los recursos de cómputo, como CPU y memoria, que se asignan durante la ejecución.
7. Apatridia Las funciones serverless suelen ser sin estado, lo que significa que no retienen información entre invocaciones. Cualquier estado o dato necesario debe almacenarse externamente, a menudo en una base de datos o servicio de almacenamiento.
8. Registros y monitoreo: Las plataformas sin servidor suelen ofrecer herramientas integradas de registro y monitoreo, lo que permite a los desarrolladores dar seguimiento al rendimiento y resolver problemas en sus funciones.
Conceptos clave en la arquitectura sin servidor
Debido a que el desarrollo sin servidor es una alternativa al desarrollo tradicional, debe familiarizarse con los siguientes términos y conceptos para comprender claramente cómo diseñar, implementar y administrar aplicaciones sin servidor:
Invocación Un evento que activa la ejecución de una función sin servidor. Ejemplos son una solicitud HTTP, una actualización de base de datos o un temporizador programado.
Duración: El tiempo que tarda en ejecutarse una función sin servidor, lo cual es un factor en el cálculo del costo de ejecución.
Arrancador en frío: La ejecución inicial de una función sin servidor, donde el proveedor de la nube aprovisiona recursos y configura el entorno de ejecución. Los arranques en frío introducen una latencia adicional en comparación con los arranques en caliente.
Arranque en caliente: Ejecuciones posteriores de una función sin servidor cuando el entorno de ejecución ya está preparado, lo que resulta en tiempos de respuesta más rápidos en comparación con los arranques en frío.
Límite de concurrencia: El número máximo de ejecuciones de funciones simultáneas permitidas por la plataforma sin servidor. Este límite puede afectar la capacidad de manejar solicitudes o eventos concurrentes.
Tiempo de espera agotado: La duración máxima permitida para la ejecución de una función sin servidor. Si una función supera este límite, se termina de forma forzosa y es posible que no se devuelva su resultado.
Origen del evento: El origen de un evento que activa una función sin servidor. Ejemplos de orígenes de eventos incluyen depósitos de Amazon S3, puertas de enlace de API, colas de mensajes y actualizaciones de bases de datos.
Apatridia Las funciones sin servidor suelen carecer de estado, lo que significa que no retienen datos entre ejecuciones. Cualquier estado necesario debe almacenarse externamente en bases de datos o servicios de almacenamiento.
Asignación de recursos: La especificación de los recursos de cómputo, como CPU o memoria, para una función sin servidor. Estos recursos suelen ser elegidos por los desarrolladores al definir la función.
Autoescalado: El ajuste automático de los recursos sin servidor por parte del proveedor de la nube para adaptarse a cargas de trabajo variables y garantizar un rendimiento óptimo.
Base de datos sin servidor: Las bases de datos sin servidor son bases de datos que escalan de forma elástica y no exponen la infraestructura sobre la que operan. Couchbase Capella™ DBaaS es un ejemplo de base de datos sin servidor totalmente administrada.
Cuándo usar la arquitectura sin servidor
Aunque la arquitectura sin servidor es versátil, no es la mejor opción para todos los casos de uso; las aplicaciones con tareas de larga duración, altos requerimientos de computación o cargas de trabajo constantes a menudo se benefician más de las arquitecturas tradicionales basadas en servidores. Asegúrese de considerar los requisitos específicos y las fortalezas únicas de la tecnología sin servidor al decidir si es la opción correcta para su aplicación.
Casos de uso de arquitectura serverless
Algunos de los casos de uso más comunes y adecuados para la arquitectura sin servidor incluyen:
Aplicaciones web y móviles: Manejar los backends de aplicaciones web y móviles, servir contenido, procesar solicitudes de usuarios y gestionar la autenticación de usuarios.
APIs: Escala automáticamente tus API RESTful y GraphQL eintégralas fácilmente con otros servicios.
IoT: Gestionar eficientemente el procesamiento y análisis de datos de dispositivos IoT que activan eventos con datos de sensores.
Procesamiento de datos en tiempo real: Procesar transmisiones de datos en tiempo real, como análisis de flujos de clics, procesamiento de registros y análisis basados en eventos.
Procesamiento por lotes: Ejecute trabajos por lotes periódicos o bajo demanda, como ETL de datos (extracción, transformación y carga), generación de informes y limpieza de datos.
Tareas de almacenamiento de archivos y datos: Interactuar con servicios de almacenamiento en la nube para gestionar la subida, descarga y manipulación de archivos y datos.
Autenticación y autorización de usuarios: Los servicios de gestión de identidades y accesos (IAM) para la autenticación y autorización de usuarios se adaptan bien a las funciones sin servidor.
Servicios de notificación: Envía notificaciones y alertas como correo electrónico, SMS o notificaciones push en respuesta a eventos o activadores específicos.
Chatbots y asistentes virtuales: Crea interfaces conversacionales donde las funciones procesen solicitudes en lenguaje natural y generen respuestas.
Procesamiento de datos e imágenes: Realice tareas como cambio de tamaño de imágenes, conversión de formatos y transformación de datos que requieran una interacción mínima por parte del usuario.
Tareas programadas: Automatice tareas periódicas como copias de seguridad de datos, generación de informes y mantenimiento de bases de datos.
Microservicios: Cree y gestione microservicios individuales dentro de una aplicación más grande, lo que permite un fácil escalado y un despliegue independiente.
Servicios de seguridad y cumplimiento: Implementar funciones relacionadas con la seguridad, como detección de intrusiones, monitoreo y auditoría de cumplimiento.
Sin servidor vs. contenedores
A simple vista, la arquitectura sin servidor a veces se confunde con la arquitectura de contenedores o con la arquitectura de microservicios porque comparte ciertas similitudes con cada una de ellas. De hecho, la arquitectura sin servidor es bastante distinta de ambas, y explicaremos qué las hace diferentes.
¿Qué contenedores y serverless tienen en común que ambos permiten a los desarrolladores implementar código de aplicaciones al abstraer el entorno host. Sin embargo, una de las diferencias clave es que serverless abstrae la administración de servidores por completo, mientras que los contenedores permiten a los desarrolladores administrar sus propios entornos de servidores con un mayor control sobre la infraestructura.
Como una forma ligera de virtualización, los contenedores empaquetan las aplicaciones y sus dependencias en entornos aislados y coherentes que se ejecutan como instancias independientes en un sistema operativo compartido. Los contenedores ofrecen una manera de garantizar que las aplicaciones funcionen de forma coherente en diversos entornos, desde el desarrollo hasta la producción, y ofrecen una forma estandarizada de empaquetar y distribuir software. Los contenedores suelen ser de larga duración y pueden incluir varios procesos dentro de un solo contenedor.
En resumen, la computación sin servidor (serverless) abstrae la gestión de servidores y es ideal para tareas orientadas a eventos y de corta duración, mientras que los contenedores ofrecen un mayor control sobre el entorno del servidor y son más adecuados para procesos de larga duración y cargas de trabajo constantes. La elección entre ambos depende de los requisitos específicos de su aplicación y de su nivel de control sobre la infraestructura subyacente. En algunos casos, se utiliza una combinación de ambas tecnologías dentro de una misma aplicación para diferentes componentes.
Serverless frente a microservicios
Microservicios son un patrón de arquitectura de software que estructura una aplicación como una colección de servicios pequeños e implementables de forma independiente que se comunican a través de API y trabajan juntos para proporcionar una funcionalidad compleja y modular. La confusión entre los microservicios y la arquitectura sin servidor suele surgir debido a su énfasis compartido en la modularidad y la escalabilidad. Lo que difumina aún más la línea es que a menudo se usan juntos, y las funciones sin servidor actúan como microservicios dentro de una aplicación más grande basada en microservicios.
A pesar de sus similitudes, la computación sin servidor y los microservicios tienen características únicas en las siguientes áreas que los diferencian:
Gestión de infraestructura
- Microservicios – los desarrolladores conservan el control sobre la orquestación de servidores y contenedores.
- Sin servidor – la administración de servidores se abstrae por completo y los desarrolladores no se ocupan de la infraestructura subyacente.
Modelo de ejecución
- Microservicios – ejecutar de forma continua en instancias de servidores dedicados.
- Sin servidor – Las funciones se ejecutan en respuesta a eventos o activadores. Esta distinción puede generar una diferencia en los tiempos de respuesta, ya que las aplicaciones sin servidor pueden experimentar arranques en frío.
Modelo de costos
- Microservicios – le exige aprovisionar y mantener recursos de servidor. Esto puede generar costos continuos incluso durante periodos de bajo uso.
- Sin servidor – utiliza un modelo de pago por uso basado en la ejecución real de las funciones. Esto puede resultar más rentable para cargas de trabajo esporádicas.
Modularidad
- Microservicios – una aplicación se divide en pequeños servicios independientes.
- Sin servidor – los desarrolladores escriben código como unidades individuales de funcionalidad.
Escalabilidad
- Microservicios – permitir la escala independiente de cada servicio.
- Sin servidor – escala automáticamente las funciones individuales.
Beneficios de la arquitectura serverless
La arquitectura serverless ofrece una amplia gama de beneficios que la convierten en una opción atractiva para muchas aplicaciones y casos de uso. Las ventajas más convincentes son:
Escalamiento automático: Las plataformas de arquitectura serverless escalan automáticamente los recursos hacia arriba o hacia abajo según la carga de trabajo entrante. Esto garantiza que su aplicación pueda manejar diferentes niveles de tráfico, proporcionando alta disponibilidad y rendimiento sin intervención manual.
Rentabilidad: Con serverless, solo pagas por los recursos de cómputo reales utilizados durante la ejecución de la función. No hay costos asociados con el tiempo de inactividad, lo que lo hace rentable, particularmente para cargas de trabajo con tráfico impredecible o esporádico.
Gastos operativos reducidos: Serverless abstrae las tareas de administración de servidores, lo que permite a los desarrolladores centrarse en el código en lugar de en el mantenimiento de la infraestructura. Esto reduce la necesidad de esfuerzos de DevOps y simplifica el despliegue y la escalabilidad.
Desarrollo más rápido: Serverless acelera el proceso de desarrollo al eliminar la necesidad de administrar servidores e infraestructura. Los desarrolladores pueden iterar e implementar código rápidamente, lo que da como resultado un tiempo de comercialización más rápido para las aplicaciones.
Resiliencia Las funciones sin servidor suelen carecer de estado, lo que promueve un diseño que depende de servicios de almacenamiento externos o bases de datos para la persistencia de datos. Esto puede dar lugar a aplicaciones más resilientes y tolerantes a fallas.
Registro y monitoreo integrados: Las plataformas sin servidor a menudo proporcionan herramientas integradas de monitoreo y registro, lo que permite a los desarrolladores rastrear el rendimiento, solucionar problemas y obtener información sobre el comportamiento de la aplicación.
Menor dependencia de proveedores: Muchas funciones se pueden diseñar para que sean relativamente independientes del proveedor, lo que facilita su migración o la integración de servicios de diferentes proveedores de la nube. Este no es siempre el caso, como verás en la siguiente sección sobre las limitaciones de la informática sin servidor.
Alta disponibilidad: Las plataformas sin servidor están diseñadas para ser altamente disponibles, con mecanismos de redundancia y conmutación por error integrados. Esto ayuda a garantizar que su aplicación siga siendo accesible y responsiva incluso ante fallas.
Eficiencia energética y de recursos: El escalado automático y la gestión de recursos de las plataformas sin servidor pueden mejorar la eficiencia energética y la utilización de recursos, reduciendo el impacto ambiental.
Limitaciones de la arquitectura serverless
Si bien la arquitectura sin servidor ofrece muchas ventajas, también tiene sus limitaciones. Ciertas características de la arquitectura sin servidor pueden manifestarse como beneficios o desafíos. Al evaluar la arquitectura sin servidor para una aplicación específica, considere sus requisitos o restricciones relacionados con lo siguiente:
Inicios en frío: Las funciones sin servidor pueden experimentar un retraso cuando la función se invoca por primera vez porque el proveedor de la nube necesita inicializar un nuevo entorno de ejecución. Esta latencia puede ser problemática para aplicaciones que requieren tiempos de respuesta consistentemente rápidos.
Limitaciones de recursos: Las plataformas sin servidor imponen restricciones de recursos, como límites de memoria y tiempo de ejecución. Estas restricciones pueden ser limitantes para tareas con uso intensivo de computación o aplicaciones que requieren procesos de larga duración.
Apatridia Las funciones sin servidor suelen ser apátridas, lo que significa que no retienen datos entre ejecuciones. Si bien esto puede ayudar a mejorar la resiliencia (como se explicó anteriormente), el uso de bases de datos externas o servicios de almacenamiento para la persistencia de datos puede agregar complejidad a algunas aplicaciones.
Bloqueo del proveedor: Aunque muchas funciones se pueden diseñar para ser relativamente independientes del proveedor, su aplicación puede tener algunas configuraciones e integraciones específicas de la plataforma que dificultan su traslado a un proveedor de nube diferente.
Depuración compleja: La depuración y solución de problemas en aplicaciones sin servidor puede ser más difícil en una arquitectura sin servidor porque la naturaleza distribuida de las funciones y la falta de acceso directo al servidor pueden dificultar la identificación y resolución de problemas.
Pruebas locales limitadas: Desarrollar y probar funciones serverless localmente puede ser un desafío porque las pruebas locales pueden no replicar completamente el entorno de ejecución en la nube. A menudo, los desarrolladores necesitan implementar funciones en la plataforma serverless para realizar pruebas exhaustivas.
Herramientas de computación sin servidor
Existen numerosas plataformas y herramientas de computación sin servidor que permiten a los desarrolladores crear, implementar y administrar aplicaciones sin servidor utilizando sus lenguajes de programación y proveedores de servicios en la nube favoritos. Aquí están algunas de las más populares:
Plataformas
AWS Lambda de Amazon es compatible con varios lenguajes de programación y se integra sin problemas con otros servicios de AWS. AWS también proporciona una puerta de enlace de API para crear API RESTful y activar funciones de Lambda.
Azure Functions de Microsoft es una oferta sin servidor dentro del ecosistema de la nube de Azure. Es compatible con múltiples idiomas y ofrece integración con los servicios de Azure, lo que la convierte en una opción sólida para aplicaciones basadas en Windows.
Cloud Functions de Google admite múltiples lenguajes de programación y se integra bien con otros servicios de Google Cloud, lo que lo hace adecuado para crear aplicaciones dentro del ecosistema de Google Cloud.
IBM Cloud Functions se basa en el framework Apache OpenWhisk y permite integrarse con servicios de IBM Cloud utilizando varios lenguajes.
Alibaba Cloud Function Compute permite a los desarrolladores crear aplicaciones en el ecosistema de Alibaba Cloud e integrarse con otros servicios de Alibaba Cloud utilizando múltiples lenguajes.
Herramientas
Netlify es una plataforma conocida principalmente por alojar sitios web estáticos, pero también ofrece funciones sin servidor para construir servicios de backend, API y flujos de trabajo.
OpenFaaS es un framework sin servidor de código abierto para funciones basadas en contenedores. Te permite crear y ejecutar funciones sin servidor utilizando contenedores de Docker.
Fisión es otro framework serverless nativo de Kubernetes de código abierto que admite múltiples lenguajes y está diseñado para una fácil implementación en clústeres de Kubernetes.
Conclusión
La arquitectura sin servidor es popular para aplicaciones web y móviles, IoT, procesamiento de datos en tiempo real y otros casos de uso comunes porque permite a los desarrolladores centrarse en escribir código en lugar de administrar servidores. La responsabilidad de la gestión se delega en proveedores de la nube como AWS Lambda, Azure Functions o Google Cloud Functions para que puedan encargarse de la infraestructura subyacente y escalar los recursos automáticamente para adaptarse a los cambios en la carga de trabajo. Sin embargo, la arquitectura sin servidor no es ideal para todos los casos de uso, y ciertas cargas de trabajo o tareas de larga duración pueden ser más adecuadas para los enfoques tradicionales basados en servidores.
Para obtener más información sobre la arquitectura sin servidor y las tecnologías relacionadas, consulte estos recursos:
Arquitectura sin servidor con computación en la nube
Predicciones de Couchbase para 2023: computación en el borde, serverless y más
Capella App Services (BaaS)
Visite nuestro Centro de conceptos para aprender sobre otros temas relacionados con bases de datos.