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 memoria volátil; la computación se realiza más bien en ráfagas cortas y los resultados persisten 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. [1] Puede ser una forma de informática de utilidad . "Sin servidor" es un nombre inapropiadoen 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, el funcionamiento 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. [2] 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. La primera plataforma de ejecución de código de "pago por uso" fue Zimki, lanzada en 2006, pero no tuvo éxito comercial. [3] 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. [4] PiCloud, lanzado en 2010, ofreció soporte FaaS para Python. [5]
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. [6] 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. El soporte de lenguaje se limitó a Python usando 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. [7]
AWS Lambda , introducido por Amazon en 2014, [8] popularizó el modelo abstracto de computación sin servidor. Es compatible con una serie de herramientas sin servidor de AWS adicionales, 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. [9]
IBM ofrece IBM Cloud Functions en el IBM Cloud público desde 2016. [10] IBM agregó una segunda oferta sin servidor, IBM Cloud Code Engine, en 2021. [11]
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. [12]
Cloudflare ofrece Cloudflare Workers, desde 2017. [13]
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. [14]
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. [15]
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, [16] incluye una base de datos jerárquica y está disponible a través de planes fijos y de pago por uso. [17]
Ventajas
Costo
Sin servidor puede ser más rentable que alquilar o comprar una cantidad fija de servidores, [18] lo que generalmente implica períodos significativos de subutilización o tiempo de inactividad. [1] Incluso puede ser más rentable que aprovisionar un grupo de autoescalado , debido al bin-empaquetado más eficiente de los recursos de la máquina subyacente.
Esto se puede describir como computación de pago por uso [18] o código básico [18], ya que se le cobra basándose únicamente en el tiempo y la memoria asignados para ejecutar su código; sin tarifas asociadas por tiempo de inactividad. [18]
Los beneficios de costos inmediatos están relacionados con la falta de costos de sistemas operativos, que incluyen: licencias, instalación, dependencias, mantenimiento, soporte y parches. [18]
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. [1] [12] [18] Como dice Google: "desde el prototipo hasta la producción y la escala planetaria". [18]
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. [18]
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
Actuación
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. [19]
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 de forma masiva la cantidad de servidores que se cree que se requieren en un determinado momento. punto en el tiempo. [20]
Monitoreo y depuración
Diagnosticar 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, [2] normalmente no hay capacidad para profundizar en más detalles adjuntando perfiladores , depuradores o herramientas APM . [21] 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). [22]
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 ". [23]
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 brinda 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. [24]
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. [25] Por lo tanto, sin servidor puede causar varios problemas durante la migración. [26]
Ver también
- Computación en la nube
- Funcionar como un servicio
Referencias
- ↑ a b c Miller, Ron (24 de noviembre de 2015). "AWS Lambda hace realidad las aplicaciones sin servidor" . TechCrunch . Consultado el 10 de julio de 2016 .
- ^ a b MSV, Janakiram (16 de julio de 2015). "Proveedores de PaaS, ¡cuidado! Amazon está listo para interrumpir el mercado" . Consultado el 10 de julio de 2016 .
- ^ Williams, Christopher. "Fotango para sofocar a Zimki en Nochebuena" . Consultado el 11 de junio de 2017 .
- ^ "Python Runtime Environment | Entorno estándar de App Engine para Python | Google Cloud Platform" . Google Cloud Platform . Consultado el 11 de junio de 2017 .
- ^ "PiCloud lanza plataforma de computación sin servidor al público" . TechCrunch . Consultado el 17 de diciembre de 2018 .
- ^ Evans, Jon. TechCrunch https://techcrunch.com/2015/04/11/whatever-happened-to-paas/ . Consultado el 17 de diciembre de 2020 . Falta o vacío
|title=
( ayuda ) - ^ Kincaid, Jason. "Google App Engine ofrece un plan de precios más allá de las cuotas; obtenga un boleto de E / S gratuito para celebrar" . TechCrunch . Consultado el 17 de diciembre de 2020 .
- ^ Miller, Ron (13 de noviembre de 2014). "Amazon lanza Lambda, un servicio informático basado en eventos" . TechCrunch . Consultado el 10 de julio de 2016 .
- ^ Novet, Jordania (9 de febrero de 2016). "Google ha lanzado silenciosamente su respuesta a AWS Lambda" . VentureBeat . Consultado el 10 de julio de 2016 .
- ^ Zimmerman, Mike (23 de febrero de 2016). "IBM presenta una alternativa rápida y abierta a la programación impulsada por eventos" .
- ^ "IBM Cloud Code Engine ya está disponible de forma generalizada" . www.ibm.com . Consultado el 4 de mayo de 2021 .
- ^ a b Miller, Ron (31 de marzo de 2016). "Microsoft responde a las aplicaciones sin servidor activadas por eventos de AWS Lambda con Azure Functions" . TechCrunch . Consultado el 10 de julio de 2016 .
- ^ Varda, Kenton (29 de septiembre de 2017). "Presentamos a los trabajadores de Cloudflare: ejecute los trabajadores del servicio de JavaScript en el borde" . Cloudflare .
- ^ https://www.nutanix.com/products/era/
- ^ "Amazon Aurora Serverless - Base de datos relacional de escalado automático bajo demanda - AWS" . Amazon Web Services, Inc . Consultado el 8 de agosto de 2019 .
- ^ Lardinois, Frederic. "Google adquiere Firebase para ayudar a los desarrolladores a crear mejores aplicaciones en tiempo real | TechCrunch" . Consultado el 11 de junio de 2017 .
- ^ Darrow, Barb (20 de junio de 2013). "Firebase obtiene $ 5.6M para lanzar su producto pago y poner en marcha su base" . gigaom.com . Consultado el 11 de junio de 2017 .
- ^ a b c d e f g h Jamieson, Frazer (4 de septiembre de 2017). "¿Perder el servidor? Todo el mundo habla de arquitectura sin servidor" .
- ^ van Eyk, Erwin; Iosup, Alexandru; Abad, Cristina L .; Grohmann, Johannes; Eismann, Simon (2018). "Visión de un SPEC RG Cloud Group sobre los desafíos de rendimiento de las arquitecturas FaaS Cloud" (PDF) : 21–24. doi : 10.1145 / 3185768.3186308 . hdl : 1871.1 / 8aa529e9-f8f9-4305-8073-91dd1a9451fb . Cite journal requiere
|journal=
( ayuda ) - ^ Hellerstein, Joseph; Faleiro, José; González, Joseph; Schleier-Smith, Johann; Screekanti, Vikram; Tumanov, Alexey; Wu, Chenggang (2019). "Computación sin servidor: un paso adelante, dos pasos atrás". Cite journal requiere
|journal=
( ayuda ) - ^ Leitner, Philipp; Wittern, Erik; Spillner, Josef; Hummer, Waldemar (2019). "Un estudio empírico de método mixto del desarrollo de software de función como servicio en la práctica industrial". Revista de sistemas y software . 149 : 340–359. doi : 10.1016 / j.jss.2018.12.013 . hdl : 11475/14313 . ISSN 0164-1212 .
- ^ https://www.puresec.io/serverless-security-top-12-csa-puresec
- ^ Solow, Hillel (5 de febrero de 2019). "Riesgos y desafíos de seguridad de la informática sin servidor" . protego.io . Consultado el 20 de marzo de 2019 .
- ^ "CNCF, esfuerzos de estandarización sin servidor de Oracle Boost" . SDxCentral . Consultado el 24 de noviembre de 2018 .
- ^ Bashir, Faizan (28 de mayo de 2018). "¿Qué es la arquitectura sin servidor? ¿Cuáles son sus ventajas y desventajas?" . Hacker Noon . Consultado el 3 de abril de 2019 .
- ^ "¿Qué es sin servidor? ¡Aquí hay una respuesta sencilla!" . Squadex . 2019-01-17 . Consultado el 3 de abril de 2019 .
Otras lecturas
- Roberts, Mike (25 de julio de 2016). "Arquitecturas sin servidor" . MartinFowler.com . Consultado el 30 de julio de 2016 .
- Jamieson, Frazer (4 de septiembre de 2017). "¿Perder el servidor? Todo el mundo habla de arquitectura sin servidor" . BCS, el Chartered Institute for IT . Consultado el 7 de noviembre de 2017 .