Computación sin servidor - Serverless computing

La computación sin servidor es un modelo de ejecución de computación en la nube en el que el proveedor de la nube asigna los recursos de la máquina a pedido y se ocupa de los servidores en nombre de sus clientes. La computación sin servidor no retiene recursos en la memoria volátil; la computación se realiza más bien en ráfagas cortas y los resultados se conservan en el almacenamiento. Cuando una aplicación no está en uso, no hay recursos informáticos asignados a la aplicación. El precio se basa en la cantidad real de recursos consumidos por una aplicación. Puede ser una forma de informática de utilidad . "Sin servidor" es un nombre inapropiado en el sentido de que los proveedores de servicios en la nube todavía utilizan servidores para ejecutar código para desarrolladores. Sin embargo, los desarrolladores de aplicaciones sin servidor no se preocupan por la planificación de la capacidad , la configuración, la administración, el mantenimiento, la tolerancia a fallas o el escalado de contenedores, máquinas virtuales o servidores físicos.

La informática sin servidor puede simplificar el proceso de implementación de código en producción. El código sin servidor se puede usar junto con el código implementado en estilos tradicionales, como microservicios o monolitos . Alternativamente, las aplicaciones se pueden escribir para que no tengan servidor y no utilicen servidores aprovisionados en absoluto. Esto no debe confundirse con modelos informáticos o de redes que no requieren un servidor real para funcionar, como peer-to-peer (P2P).

Tiempos de ejecución sin servidor

Los proveedores sin servidor ofrecen tiempos de ejecución de cómputo, también conocidos como plataformas de función como servicio (FaaS), que ejecutan la lógica de la aplicación pero no almacenan datos. Los lenguajes comunes admitidos por los tiempos de ejecución sin servidor son Java , Python y PHP . Generalmente, las funciones se ejecutan bajo límites de aislamiento, como contenedores de Linux .

Ofertas comerciales

La primera plataforma de ejecución de código de "pago por uso" fue Zimki, lanzada en 2006, pero no tuvo éxito comercial. En 2008, Google lanzó Google App Engine , que incluía facturación medida para aplicaciones que usaban un marco Python personalizado, pero no podían ejecutar código arbitrario. PiCloud, lanzado en 2010, ofreció soporte FaaS para Python.

Kubeless y Fission son dos plataformas FaaS de código abierto que se ejecutan con Kubernetes .

Google App Engine, introducido en 2008, fue la primera oferta informática abstracta sin servidor. App Engine incluía funciones HTTP con un tiempo de espera de 60 segundos y un almacén de blobs y un almacén de datos con sus propios tiempos de espera. No se permitió la persistencia en memoria. Todas las operaciones tenían que ejecutarse dentro de estos límites, pero esto permitió que las aplicaciones creadas en App Engine escalasen casi infinitamente y se utilizó para apoyar a los primeros clientes, incluido Snapchat , así como muchas aplicaciones externas e internas de Google. La compatibilidad con el lenguaje se limitó a Python mediante el uso de módulos nativos de Python, así como una selección limitada de módulos de Python en C que fueron elegidos por Google. Al igual que las plataformas sin servidor posteriores, App Engine también utilizó la facturación de pago por lo que usa.

AWS Lambda , presentado por Amazon en 2014, popularizó el modelo de computación sin servidor abstracto. Es compatible con una serie de herramientas adicionales sin servidor de AWS, como AWS Serverless Application Model (AWS SAM), Amazon CloudWatch , y otras.

Google Cloud Platform creó una segunda oferta sin servidor, Google Cloud Functions en 2016.

IBM ofrece IBM Cloud Functions en el IBM Cloud público desde 2016. IBM agregó una segunda oferta sin servidor, IBM Cloud Code Engine, en 2021.

Microsoft Azure ofrece Azure Functions, que se ofrecen tanto en la nube pública de Azure como en las instalaciones a través de Azure Stack.

Cloudflare ofrece Cloudflare Workers, desde 2017.

Ofrece Compute @ Edge rápidamente , desde 2019.

Bases de datos sin servidor

En los últimos años han surgido varias bases de datos sin servidor . Estos sistemas extienden el modelo de ejecución sin servidor al RDBMS , eliminando la necesidad de aprovisionar o escalar hardware de base de datos virtual o físico.

Nutanix ofrece una solución llamada Era que convierte un RDBMS existente como Oracle , MariaDB , PostgreSQL o Microsoft SQL Server en un servicio sin servidor.

Amazon Aurora ofrece una versión sin servidor de sus bases de datos, basada en MySQL y PostgreSQL, que proporciona configuraciones de escalado automático bajo demanda.

Azure Data Lake es un servicio de análisis y almacenamiento de datos altamente escalable. El servicio está alojado en Azure , la nube pública de Microsoft. Azure Data Lake Analytics proporciona una infraestructura distribuida que puede asignar o desasignar recursos de forma dinámica para que los clientes paguen solo por los servicios que usan.

Firebase , también propiedad de Google, incluye una base de datos jerárquica y está disponible a través de planes fijos y de pago por uso.

Confluent , proporciona una implementación sin servidor de Apache Kafka (un sistema de almacenamiento y transmisión de eventos) en los tres principales proveedores de nube, que abstrae la infraestructura, es de pago por uso y escala automática.

Ventajas

Costo

Sin servidor puede ser más rentable que alquilar o comprar una cantidad fija de servidores, lo que generalmente implica períodos significativos de subutilización o tiempo de inactividad. Incluso puede ser más rentable que aprovisionar un grupo de autoescalado , debido al empaquetado de contenedores más eficiente de los recursos de la máquina subyacente.

Esto se puede describir como computación de pago por uso o código básico, ya que se le cobra en función del tiempo y la memoria asignados para ejecutar su código; sin tarifas asociadas por tiempo de inactividad.

Los beneficios de costos inmediatos están relacionados con la falta de costos operativos, que incluyen: licencias, instalación, dependencias y costos de personal para mantenimiento, soporte o parches. La falta de costos de personal es una ventaja que se aplica ampliamente a la computación en nube.

Elasticidad versus escalabilidad

Además, una arquitectura sin servidor significa que los desarrolladores y operadores no necesitan perder tiempo configurando y ajustando políticas o sistemas de autoescalado; el proveedor de la nube es responsable de escalar la capacidad a la demanda. Como dice Google: "desde el prototipo hasta la producción y la escala planetaria".

Dado que los sistemas nativos de la nube se escalan tanto hacia abajo como hacia arriba, estos sistemas se conocen como elásticos en lugar de escalables.

Los pequeños equipos de desarrolladores pueden ejecutar el código por sí mismos sin depender de equipos de ingenieros de infraestructura y soporte; más desarrolladores se están volviendo expertos en DevOps y las distinciones entre ser un desarrollador de software o un ingeniero de hardware se están difuminando.

Productividad

Con la función como servicio , las unidades de código expuestas al mundo exterior son funciones simples impulsadas por eventos . Esto significa que, por lo general, el programador no tiene que preocuparse por el multiproceso o el manejo directo de las solicitudes HTTP en su código, lo que simplifica la tarea del desarrollo de software de back-end.

Desventajas

Rendimiento

El código sin servidor utilizado con poca frecuencia puede sufrir una mayor latencia de respuesta que el código que se ejecuta continuamente en un servidor dedicado, máquina virtual o contenedor. Esto se debe a que, a diferencia del ajuste de escala automático, el proveedor de la nube normalmente "reduce" el código sin servidor por completo cuando no está en uso. Esto significa que si el tiempo de ejecución (por ejemplo, el tiempo de ejecución de Java ) requiere una cantidad significativa de tiempo para iniciarse, creará una latencia adicional.

Límites de recursos

La computación sin servidor no es adecuada para algunas cargas de trabajo de computación, como la computación de alto rendimiento , debido a los límites de recursos impuestos por los proveedores de la nube y también porque probablemente sería más barato aprovisionar en masa la cantidad de servidores que se cree que se requieren en cualquier momento dado. punto en el tiempo.

Monitoreo y depuración

El diagnóstico de problemas de rendimiento o uso excesivo de recursos con código sin servidor puede ser más difícil que con el código de servidor tradicional, porque aunque las funciones completas se pueden cronometrar, normalmente no hay capacidad para profundizar en más detalles adjuntando perfiladores , depuradores o herramientas APM . Además, el entorno en el que se ejecuta el código no suele ser de código abierto , por lo que sus características de rendimiento no se pueden replicar con precisión en un entorno local .

Seguridad

Sin servidor, a veces se considera erróneamente que es más seguro que las arquitecturas tradicionales. Si bien esto es cierto hasta cierto punto porque el proveedor de la nube se ocupa de las vulnerabilidades del sistema operativo, la superficie total de ataque es significativamente mayor, ya que hay muchos más componentes en la aplicación en comparación con las arquitecturas tradicionales y cada componente es un punto de entrada a la aplicación sin servidor. . Además, las soluciones de seguridad que solían tener los clientes para proteger sus cargas de trabajo en la nube se vuelven irrelevantes, ya que los clientes no pueden controlar e instalar nada en el punto final ni en el nivel de la red , como un sistema de detección / prevención de intrusiones (IDS / IPS).

Esto se ve intensificado por las propiedades de monocultivo de toda la red de servidores. (Se puede aplicar una sola falla a nivel mundial). Según Protego, la "solución para proteger las aplicaciones sin servidor es una asociación cercana entre los desarrolladores, DevOps y AppSec, también conocido como DevSecOps. Encuentre el equilibrio donde los desarrolladores no son dueños de la seguridad, pero tampoco están exentos de responsabilidad. Tome medidas para convertirlo en un problema de todos. Cree equipos multifuncionales y trabaje para lograr una estrecha integración entre los especialistas en seguridad y los equipos de desarrollo. Colabore para que su organización pueda resolver los riesgos de seguridad a la velocidad de la tecnología sin servidor ".

Intimidad

Muchos entornos de funciones sin servidor se basan en entornos de nube pública patentados . Aquí, se deben considerar algunas implicaciones de privacidad , como los recursos compartidos y el acceso de empleados externos. Sin embargo, la computación sin servidor también se puede realizar en un entorno de nube privada o incluso en las instalaciones, utilizando, por ejemplo, la plataforma Kubernetes . Esto le da a las empresas un control total sobre los mecanismos de privacidad, al igual que con el alojamiento en configuraciones de servidor tradicionales.

Estándares

La informática sin servidor está cubierta por la International Data Center Authority (IDCA) en su marco AE360. Sin embargo, la parte relacionada con la portabilidad puede ser un problema al mover la lógica empresarial de una nube pública a otra para la que se creó la solución Docker . Cloud Native Computing Foundation (CNCF) también está trabajando en el desarrollo de una especificación con Oracle.

Dependencia de un proveedor

La informática sin servidor se proporciona como un servicio de terceros. Las aplicaciones y el software que se ejecutan en el entorno sin servidor están bloqueados de forma predeterminada para un proveedor de nube específico. Por lo tanto, la tecnología sin servidor puede causar varios problemas durante la migración.

Ver también

Referencias

Otras lecturas