Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Sugerencia
Este contenido es un extracto del libro electrónico, Arquitectura de aplicaciones .NET nativas de nube para Azure, disponible en .NET Docs o como un PDF descargable gratuito que se puede leer sin conexión.
En el espectro que va desde la gestión de máquinas físicas hasta el aprovechamiento de las capacidades de la nube, la computación sin servidor se encuentra en el extremo final. Su única responsabilidad es el código y solo paga cuando se ejecuta el código. Azure Functions proporciona una manera de crear funcionalidades sin servidor en las aplicaciones nativas de la nube.
¿Qué es la computación sin servidores?
Sin servidor es un modelo de servicio relativamente nuevo de la informática en la nube. No significa que los servidores sean opcionales: el código todavía se ejecuta en un servidor en algún lugar. La distinción es que el equipo de aplicaciones ya no se preocupa por la administración de la infraestructura del servidor. En su lugar, el proveedor en la nube posee esta responsabilidad. El equipo de desarrollo aumenta su productividad al ofrecer soluciones empresariales a los clientes, no a la fontanería.
La informática sin servidor usa contenedores sin estado desencadenados por eventos para hospedar los servicios. Pueden aumentar y reducir la escala para satisfacer la demanda según se necesite. Las plataformas sin servidor, como Azure Functions, tienen una estrecha integración con otros servicios de Azure, como colas, eventos y almacenamiento.
¿Qué desafíos resuelven los sin servidor?
Las plataformas sin servidor abordan muchos problemas costosos y lentos:
- Compra de máquinas y licencias de software
- Carcasa, protección, configuración y mantenimiento de las máquinas y sus requisitos de red, energía y A/C
- Instalación de parches y actualización de sistemas operativos y software
- Configuración de servidores web o servicios de máquina para hospedar software de aplicación
- Configuración del software de aplicación dentro de su plataforma
Muchas empresas asignan grandes presupuestos para respaldar la infraestructura de hardware. El traslado a la nube puede ayudar a reducir estos costos; cambiar las aplicaciones a sin servidor puede ayudar a eliminarlas.
¿Cuál es la diferencia entre un microservicio y una función sin servidor?
Normalmente, un microservicio encapsula una funcionalidad empresarial, como un carro de la compra para un sitio de comercio electrónico en línea. Expone varias operaciones que permiten a un usuario administrar su experiencia de compra. Sin embargo, una función es un pequeño bloque ligero de código que ejecuta una operación de un solo propósito en respuesta a un evento. Normalmente, los microservicios se construyen para responder a las solicitudes, a menudo desde una interfaz. Las solicitudes pueden basarse en REST HTTP o gRPC. Los servicios sin servidor responden a eventos. Su arquitectura controlada por eventos es ideal para procesar tareas en segundo plano y de ejecución corta.
¿Qué escenarios son adecuados para los sin servidor?
La computación sin servidor expone funciones individuales de ejecución corta que se invocan como respuesta a un evento. Esto hace que sean ideales para procesar tareas en segundo plano.
Es posible que una aplicación tenga que enviar un correo electrónico como paso en un flujo de trabajo. En lugar de enviar la notificación como parte de una solicitud de microservicio, coloque los detalles del mensaje en una cola. Una función de Azure puede quitar de la cola el mensaje y enviar el correo electrónico de forma asincrónica. Si lo hace, podría mejorar el rendimiento y la escalabilidad del microservicio. Es posible implementar la nivelación de carga basada en colas para evitar cuellos de botella relacionados con el envío de correos electrónicos. Además, este servicio independiente podría reutilizarse como una utilidad en muchas aplicaciones diferentes.
La mensajería asincrónica de colas y temas es un patrón común para desencadenar funciones sin servidor. Sin embargo, Azure Functions también pueden ser desencadenadas por otros eventos, como cambios en Azure Blob Storage. Un servicio que admita cargas de imágenes podría tener una función de Azure responsable de optimizar el tamaño de la imagen. La función se puede desencadenar directamente mediante inserciones en Azure Blob Storage, lo que mantiene la complejidad fuera de las operaciones de microservicios.
Muchos servicios tienen procesos de ejecución prolongada como parte de sus flujos de trabajo. A menudo, estas tareas se realizan como parte de la interacción del usuario con la aplicación. Estas tareas pueden obligar al usuario a esperar, lo que afecta negativamente a su experiencia. La informática sin servidor proporciona una excelente manera de mover tareas más lentas fuera del bucle de interacción del usuario. Estas tareas se pueden escalar con demanda sin necesidad de que toda la aplicación se escale.
¿Cuándo debe evitar el uso sin servidor?
Las soluciones sin servidor aprovisionan y escalan bajo demanda. Cuando se invoca una nueva instancia, los arranques en frío son una incidencia común. Un arranque en frío es el período de tiempo que se tarda en aprovisionar esta instancia. Normalmente, este retraso puede ser de unos segundos, pero puede ser más largo dependiendo de varios factores. Una vez aprovisionado, se mantiene activa una sola instancia siempre y cuando reciba solicitudes periódicas. Sin embargo, si se llama a un servicio con menos frecuencia, Azure puede quitarlo de la memoria y requerir un inicio en frío cuando se vuelva a invocar. Los arranques en frío también son necesarios cuando una función se escala horizontalmente a una nueva instancia.
En la figura 3-9 se muestra un patrón de arranque en frío. Observe los pasos adicionales necesarios cuando la aplicación está en frío.
Figura 3-9. Arranque en frío frente a arranque en caliente.
Para evitar los arranques en frío por completo, puede cambiar de un plan de consumo a un plan dedicado. También puede configurar una o varias instancias precalentadas con la actualización del plan Premium. En estos casos, cuando necesite agregar otra instancia, ya está lista para empezar. Estas opciones pueden ayudar a mitigar el problema de arranque en frío asociado a la informática sin servidor.
Los proveedores de nube facturan por servicios sin servidor en función del tiempo de ejecución de computación y la memoria consumida. Las operaciones de larga duración o las cargas de trabajo de consumo elevado de memoria no siempre son las mejores candidatas para sin servidor. Las funciones sin servidor favorecen pequeños fragmentos de trabajo que se pueden completar rápidamente. La mayoría de las plataformas sin servidor requieren que las funciones individuales se completen en unos minutos. Azure Functions tiene como valor predeterminado una duración de tiempo de espera de 5 minutos, que se puede configurar hasta 10 minutos. El plan Premium de Azure Functions también puede mitigar este problema, ya que el tiempo de espera predeterminado es de 30 minutos con un límite superior no limitado que se puede configurar. El tiempo de cómputo no es el tiempo del calendario. Las funciones más avanzadas que usan el marco de Azure Durable Functions pueden pausar la ejecución durante varios días. La facturación se basa en el tiempo de ejecución real, cuando la función se reactiva y reanuda el procesamiento.
Por último, aprovechar Azure Functions para las tareas de aplicación agrega complejidad. Es aconsejable diseñar primero la aplicación con un diseño modular y acoplado flexiblemente. A continuación, identifique si hay ventajas sin servidor que ofrezcan que justifican la complejidad adicional.