stringtranslate.com

Computación sin servidor

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 recursos de la máquina a pedido, ocupándose de los servidores en nombre de sus clientes. Sin servidor es un nombre inapropiado en el sentido de que los proveedores de servicios en la nube aún utilizan servidores para ejecutar código para los 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. 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 computación de utilidad .

Una definición propuesta para la computación sin servidor que abarca estas ideas es que la computación sin servidor es un "paradigma de computación en la nube que abarca una clase de plataformas de computación en la nube que permiten desarrollar, implementar y ejecutar aplicaciones (o componentes de las mismas) en la nube sin asignar ni administrar servidores y recursos virtualizados ni preocuparse por otros aspectos operativos. La responsabilidad de los aspectos operativos, como la tolerancia a fallas o el escalamiento elástico de los recursos de computación, almacenamiento y comunicación para adaptarse a las diferentes demandas de las aplicaciones, se descarga al proveedor de la nube. Los proveedores aplican una facturación basada en la utilización: cobran a los usuarios de la nube con granularidad fina, en proporción a los recursos que las aplicaciones realmente consumen de la infraestructura de la nube, como tiempo de computación, memoria y espacio de almacenamiento ". [2] Tenga en cuenta que la definición de sin servidor se ha ampliado con el tiempo. Según Ben Kehoe, sin servidor es un espectro; uno no debe obsesionarse con una definición estricta de sin servidor ni con ninguna tecnología sin servidor específica. En cambio, uno debe centrarse en la mentalidad sin servidor: cómo usar sin servidor para resolver los problemas comerciales de uno. [3]

La computación sin servidor puede simplificar el proceso de implementación de código en producción . No elimina por completo la complejidad, sino que principalmente la traslada del equipo de operaciones al equipo de desarrollo. Y cuanto más detallada sea la aplicación, más difícil será administrarla. [ Aclaración necesaria ] [4]

El código sin servidor se puede utilizar junto con el código implementado en estilos tradicionales, como microservicios o monolitos . Alternativamente, las aplicaciones se pueden escribir para que sean puramente sin servidor y no utilicen servidores aprovisionados en absoluto. [5] Esto no debe confundirse con los modelos informáticos o de redes que no requieren un servidor real para funcionar, como peer-to-peer (P2P).

Según Yan Cui, la tecnología sin servidor solo debería adoptarse cuando ayude a ofrecer valor al cliente más rápidamente. Y, al mismo tiempo, las organizaciones deberían dar pequeños pasos y reducir los riesgos a lo largo del camino. [6]

Tiempos de ejecución sin servidor

Los proveedores sin servidor ofrecen entornos de ejecución de cómputo que ejecutan la lógica de la aplicación, pero no almacenan datos. Los modelos de entornos de ejecución comunes son la función como servicio (FaaS) y el contenedor como servicio . Los lenguajes comunes compatibles con los entornos de ejecución sin servidor son Java , Python y PHP . Por lo general, las funciones se ejecutan dentro de límites de aislamiento, como los 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. [7] 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. [8] PiCloud, lanzado en 2010, ofrecía soporte FaaS para Python.

Google App Engine, presentado en 2008, fue la primera oferta de computación abstracta sin servidor. [9] 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 permitía la persistencia en memoria. Todas las operaciones debían ejecutarse dentro de estos límites, pero esto permitió que las aplicaciones creadas en App Engine escalaran casi infinitamente y se utilizó para brindar soporte a los primeros clientes, incluido Snapchat , así como muchas aplicaciones internas y externas de Google. El soporte de lenguaje se limitó a Python utilizando 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 uso. [10]

AWS Lambda , presentado por Amazon en 2014, [11] popularizó el modelo abstracto de computación sin servidor. Cuenta con el respaldo de varias 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. [12]

Oracle Cloud Functions es una plataforma sin servidor que se ofrece en Oracle Cloud Infrastructure y se basa en el proyecto Fn de código abierto, de modo que los desarrolladores pueden crear aplicaciones que se puedan trasladar a otros entornos locales y en la nube. Admite código en Python , Go , Java , Ruby y Node . [13]

Bases de datos sin servidor

Han surgido varias bases de datos sin servidor para extender el modelo de ejecución sin servidor al RDBMS , eliminando la necesidad de aprovisionar o escalar hardware de base de datos física o virtualizada .

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 escalamiento automático a pedido. [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 utilizan.

Oracle Cloud ofrece una versión sin servidor de su Oracle Autonomous Database, que es el servicio de procesamiento de transacciones autónomo. El servicio sin servidor también incluye una edición JSON. [16]

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

Ventajas

Costo

La tecnología sin servidor puede resultar más rentable que alquilar o comprar una cantidad fija de servidores, [19] lo que generalmente implica períodos significativos de subutilización o tiempo de inactividad. [1] Incluso puede resultar más rentable que aprovisionar un grupo de escalamiento automático , debido a un empaquetamiento más eficiente de los recursos subyacentes de la máquina.

Esto se puede describir como computación de pago por uso [19] o código desnudo [19] , ya que se cobra únicamente en función del tiempo y la memoria asignados para ejecutar el código, sin tarifas asociadas por tiempo de inactividad. [19] Una analogía útil aquí es entre el alquiler de automóviles (máquinas virtuales en la nube tradicionales) versus aplicaciones de viajes compartidos como Uber o Lyft (computación sin servidor). Los beneficios de costos inmediatos están relacionados con la falta de costos operativos, incluidos: licencias, instalación, dependencias y costos de personal para mantenimiento, soporte o parches. [19] Debido a la escalabilidad infinita, los desarrolladores pueden sufrir un shock en la factura como resultado de un código defectuoso o un ataque de denegación de servicio . Sin embargo, esto a menudo se reembolsa, a expensas del proveedor de servicios. [20]

Elasticidad versus escalabilidad

Además, una arquitectura sin servidor significa que los desarrolladores y operadores no necesitan dedicar tiempo a configurar y ajustar políticas o sistemas de escalado automático; el proveedor de la nube es responsable de escalar la capacidad según la demanda. [1] [21] [19] Como dice Google: "del prototipo a la producción a escala planetaria". [19]

Como los sistemas nativos de la nube inherentemente escalan hacia abajo y hacia arriba, estos sistemas se conocen como elásticos en lugar de escalables.

Pequeños equipos de desarrolladores pueden ejecutar 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. [19]

Productividad

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

Desventajas

Las aplicaciones sin servidor son propensas a las falacias de la computación distribuida . Además, son propensas a las siguientes falacias: [22] [23]

Actuación

El código sin servidor que se utiliza con poca frecuencia puede sufrir una mayor latencia de respuesta que el código que se ejecuta continuamente en un servidor dedicado, una máquina virtual o un contenedor. Esto se debe a que, a diferencia del escalado automático, el proveedor de la nube normalmente desconecta por completo el código sin servidor cuando no se utiliza. Esto significa que si el entorno de ejecución (por ejemplo, el entorno de ejecución de Java ) requiere una cantidad significativa de tiempo para iniciarse, creará latencia adicional. [24] Esto se conoce como inicio en frío en la informática sin servidor.

Límites de recursos

La computación sin servidor no es adecuada para algunas cargas de trabajo informáticas, 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 un momento dado. [25] Esto dificulta la implementación de aplicaciones complejas (como aquellas con un gráfico acíclico dirigido de funciones); la computación sin servidor lista para usar es más adecuada para la ejecución de funciones individuales sin estado. Algunas ofertas comerciales como AWS Step Functions de Amazon y Azure Durable Functions de Microsoft están destinadas a facilitar este desafío.

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 código de servidor tradicional, porque si bien se pueden cronometrar funciones enteras, [5] normalmente no hay posibilidad de profundizar en más detalles adjuntando perfiladores , depuradores o herramientas APM . [26] Además, el entorno en el que se ejecuta el código normalmente no es de código abierto, por lo que sus características de rendimiento no se pueden replicar con precisión en un entorno local .

Seguridad

Según OWASP , las aplicaciones sin servidor son vulnerables a variaciones de ataques tradicionales, código inseguro y algunos ataques específicos de las aplicaciones sin servidor (como la denegación de acceso a la billetera [27] ). Por lo tanto, los riesgos han cambiado y la prevención de ataques requiere un cambio de mentalidad. [28] [29]

A veces se considera erróneamente que las arquitecturas sin servidor son más seguras que las tradicionales. Si bien esto es cierto hasta cierto punto porque el proveedor de la nube se encarga de las vulnerabilidades del sistema operativo, la superficie de ataque total 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 los clientes solían tener para proteger sus cargas de trabajo en la nube se vuelven irrelevantes, ya que los clientes no pueden controlar ni instalar nada en el punto final y a nivel de red , como un sistema de detección/prevención de intrusiones (IDS/IPS). [30]

Esto se ve intensificado por las propiedades de monocultura de toda la red de servidores. (Una única falla puede aplicarse globalmente). Según Protego, la "solución para proteger las aplicaciones sin servidor es una estrecha colaboración entre los desarrolladores, DevOps y AppSec, también conocido como DevSecOps. Encuentre el equilibrio en el que los desarrolladores no sean dueños de la seguridad, pero tampoco estén exentos de responsabilidad. Tome medidas para que sea un problema de todos. Cree equipos multifuncionales y trabaje hacia 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 seguridad sin servidor". [31]

Privacidad

Muchos entornos de funciones sin servidor se basan en entornos de nube pública propietarios . En este caso, se deben tener en cuenta algunas implicaciones de privacidad , como los recursos compartidos y el acceso por parte 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 ofrece a las empresas un control total sobre los mecanismos de privacidad, al igual que ocurre con el alojamiento en configuraciones de servidor tradicionales.

Normas

La computación sin servidor está contemplada por la International Data Center Authority (IDCA) en su Framework AE360. [32] Sin embargo, la parte relacionada con la portabilidad puede ser un problema al trasladar la lógica empresarial de una nube pública a otra, para lo cual se creó la solución Docker . La Cloud Native Computing Foundation (CNCF) también está trabajando en el desarrollo de una especificación con Oracle . [33]

Bloqueo del proveedor

La computación sin servidor se ofrece 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. Este problema se agrava en la computación sin servidor, ya que con su mayor nivel de abstracción, los proveedores públicos solo permiten a los clientes cargar código en una plataforma FaaS sin la autoridad para configurar los entornos subyacentes. Más importante aún, al considerar un flujo de trabajo más complejo que incluye Backend-as-a-Service (BaaS), una oferta de BaaS normalmente solo puede activar de forma nativa una oferta FaaS del mismo proveedor. Esto hace que la migración de la carga de trabajo en la computación sin servidor sea prácticamente imposible. Por lo tanto, considerar cómo diseñar e implementar flujos de trabajo sin servidor desde una perspectiva de múltiples nubes parece prometedor y está comenzando a prevalecer [ ¿cuándo? ] . [34] [35] [36]

Mejores prácticas

Seguir las prácticas de DevSecOps puede ayudar a utilizar y proteger las tecnologías sin servidor de forma más eficaz. [37] En las aplicaciones sin servidor, la línea entre la infraestructura y la lógica empresarial es borrosa y las aplicaciones suelen estar repartidas entre varios servicios. Según Yan Cui, para obtener el máximo valor de los esfuerzos de prueba, las aplicaciones sin servidor deben probarse principalmente por sus integraciones y, posiblemente, las pruebas unitarias solo deben usarse si existe una lógica empresarial compleja. Además, para facilitar la depuración y la implementación de aplicaciones sin servidor, los desarrolladores deben utilizar la orquestación dentro del contexto delimitado de un microservicio y deben utilizar la coreografía entre los contextos delimitados. [6]

Según Yan Cui, los recursos efímeros deben mantenerse juntos para lograr una alta cohesión . Sin embargo, los recursos compartidos que tienen un tiempo de puesta en marcha largo (por ejemplo, el clúster AWS RDS ) y una zona de aterrizaje deben tener su propio repositorio , canal de implementación y pila separados . [6]

Usos/funciones

Las funciones sin servidor se pueden utilizar para: [38]

Véase también

Referencias

  1. ^ abc Miller, Ron (24 de noviembre de 2015). "AWS Lambda convierte las aplicaciones sin servidor en una realidad". TechCrunch . Consultado el 10 de julio de 2016 .
  2. ^ Kounev, Samuel (23 de agosto de 2023). «Computación sin servidor: ¿qué es y qué no es?». Comunicaciones de ACM . Consultado el 4 de abril de 2024 .
  3. ^ Serverless como un factor de cambio: Cómo aprovechar al máximo la nube . 2023. ISBN 9780137392551.
  4. ^ El ascensor del arquitecto de software: redefiniendo el papel del arquitecto en la empresa digital . O'Reilly Media. 2020. ISBN 978-1492077541.
  5. ^ ab MSV, Janakiram (16 de julio de 2015). "Proveedores de PaaS, ¡cuidado! Amazon está listo para revolucionar el mercado". Forbes . Consultado el 10 de julio de 2016 .
  6. ^ abc Cui, Yan (2020). Arquitecturas sin servidor en AWS (2.ª edición). Manning. ISBN 978-1617295423.
  7. ^ Williams, Christopher. "Fotango asfixiará a Zimki en Nochebuena". The Register . Consultado el 11 de junio de 2017 .
  8. ^ "Entorno de ejecución de Python | Entorno estándar de App Engine para Python | Google Cloud Platform". Google Cloud Platform . Consultado el 11 de junio de 2017 .
  9. ^ Evans, Jon (11 de abril de 2015). "¿Qué pasó con PaaS?". TechCrunch . Consultado el 17 de diciembre de 2020 .
  10. ^ Kincaid, Jason (25 de febrero de 2009). "Google App Engine ofrece un plan de precios que va más allá de las cuotas; consigue un boleto gratuito de E/S para celebrarlo". TechCrunch . Consultado el 17 de diciembre de 2020 .
  11. ^ 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 .
  12. ^ Novet, Jordan (9 de febrero de 2016). "Google ha lanzado silenciosamente su respuesta a AWS Lambda". VentureBeat . Consultado el 10 de julio de 2016 .
  13. ^ "Cómo elegir una plataforma sin servidor en la nube". www.arnnet.com.au . 3 de marzo de 2021 . Consultado el 23 de marzo de 2022 .
  14. ^ "Administración y automatización de bases de datos con un solo clic | Nutanix Era".
  15. ^ "Amazon Aurora Serverless: base de datos relacional de escalamiento automático y bajo demanda: AWS". Amazon Web Services, Inc. Consultado el 8 de agosto de 2019 .
  16. ^ "Oracle lleva la base de datos autónoma a JSON". ZDNet . Consultado el 23 de marzo de 2022 .
  17. ^ Lardinois, Frederic (21 de octubre de 2014). "Google adquiere Firebase para ayudar a los desarrolladores a crear mejores aplicaciones en tiempo real | TechCrunch" . Consultado el 11 de junio de 2017 .
  18. ^ Darrow, Barb (20 de junio de 2013). "Firebase obtiene 5,6 millones de dólares para lanzar su producto pago y aumentar su base de clientes". gigaom.com . Consultado el 11 de junio de 2017 .
  19. ^ abcdefgh Jamieson, Frazer (4 de septiembre de 2017). "¿Perder el servidor? Todo el mundo habla de la arquitectura sin servidor".
  20. ^ Anderson, Tim (10 de diciembre de 2020). "Google Cloud (over)Run: Cómo un experimento de prueba gratuita terminó con una factura de $72,000 de la noche a la mañana". The Register . Consultado el 9 de octubre de 2024 .
  21. ^ 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 .
  22. ^ Richards, Mark (3 de marzo de 2020). Fundamentos de la arquitectura de software: un enfoque de ingeniería (1.ª ed.). O'Reilly Media. ISBN 978-1492043454.
  23. ^ Richards, Mark (2021). Arquitectura de software: las partes difíciles: análisis de compensaciones modernas para arquitecturas distribuidas (1.ª ed.). O'Reilly Media. ISBN 978-1492086895.
  24. ^ van Eyk, Erwin; Iosup, Alexandru; Abad, Cristina L.; Grohmann, Johannes; Eismann, Simon (2018). "La visión de un grupo de SPEC RG Cloud sobre los desafíos de rendimiento de las arquitecturas de nube FaaS" (PDF) . Companion of the 2018 ACM/SPEC International Conference on Performance Engineering . pp. 21–24. doi :10.1145/3185768.3186308. hdl : 1871.1/8aa529e9-f8f9-4305-8073-91dd1a9451fb . ISBN 9781450356299. Número de identificación del sujeto  4718290.
  25. ^ Hellerstein, Joseph; Faleiro, Jose; Gonzalez, Joseph; Schleier-Smith, Johann; Screekanti, Vikram; Tumanov, Alexey; Wu, Chenggang (2019). "Computación sin servidor: un paso adelante, dos pasos atrás". arXiv : 1812.03651 . {{cite journal}}: Requiere citar revista |journal=( ayuda )
  26. ^ Leitner, Philipp; Wittern, Erik; Spillner, Josef; Hummer, Waldemar (2019). "Un estudio empírico de métodos mixtos 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. S2CID  67775784.
  27. ^ Kelly, Daniel; Glavin, Frank G.; Barrett, Enda (1 de agosto de 2021). "Denegación de billetera: definición de una amenaza inminente para la computación sin servidor". Revista de seguridad de la información y aplicaciones . 60 : 102843. arXiv : 2104.08031 . doi :10.1016/j.jisa.2021.102843. ISSN  2214-2126.
  28. ^ "Top 10 de servidores sin servidor de OWASP | Fundación OWASP". owasp.org . Consultado el 20 de mayo de 2024 .
  29. ^ OWASP/Serverless-Top-10-Project, OWASP, 2 de mayo de 2024 , consultado el 20 de mayo de 2024
  30. ^ "Protección de carga de trabajo en la nube (CWP) | CWPP".
  31. ^ 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 .
  32. ^ "El marco de estándares para el ecosistema de aplicaciones | Autoridad Internacional de Centros de Datos (IDCA)".
  33. ^ "CNCF y Oracle impulsan los esfuerzos de estandarización sin servidor". SDxCentral . Consultado el 24 de noviembre de 2018 .
  34. ^ Aske, Austin; Zhao, Xinghui (13 de agosto de 2018). "Compatibilidad con computación sin servidor de múltiples proveedores en el borde". Actas de la 47.ª Conferencia internacional sobre procesamiento paralelo Companion . Talleres ICPP '18. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 1–6. doi :10.1145/3229710.3229742. ISBN 978-1-4503-6523-9.S2CID 195348799  .
  35. ^ Baarzi, Ataollah Fatahi; Kesidis, George; Joe-Wong, Carlee; Shahrad, Mohammad (1 de noviembre de 2021). "Sobre los méritos y la viabilidad de la computación en la nube sin servidor". Actas del Simposio de la ACM sobre computación en la nube . SoCC '21. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 600–608. doi :10.1145/3472883.3487002. ISBN . 978-1-4503-8638-8. Número de identificación del sujeto  239890130.
  36. ^ Zhao, Haidong; Benomar, Zakaria; Pfandzelter, Tobias; Georgantas, Nikolaos (6 de diciembre de 2022). "Soporte de múltiples nubes en computación sin servidor". 2022 IEEE/ACM 15th International Conference on Utility and Cloud Computing (UCC) . págs. 285–290. arXiv : 2209.09367 . doi :10.1109/UCC56403.2022.00051. ISBN 978-1-6654-6087-3. Número de identificación del sujeto  252383217.
  37. ^ Katzer, Jason (2020). Aprendizaje sin servidor: diseño, desarrollo e implementación con confianza . O'Reilly Media. ISBN 978-1492057017.
  38. ^ "¿Qué es la informática sin servidor?". ITPro Today . 2021-12-13 . Consultado el 2022-03-23 ​​.

Lectura adicional

  1. ^ Jonas, Eric (febrero de 2019). "Programación en la nube simplificada: una visión de Berkeley sobre la computación sin servidor". pp. 1–33. arXiv : 1902.03383 [cs.OS].