Articulo de referencia

computación sin servidor

La computación sin servidor es "una categoría de servicio en la nube donde el cliente puede usar diferentes tipos de capacidades de la nube sin tener que aprovisionar, implement...

La computación sin servidor es "una categoría de servicio en la nube donde el cliente puede usar diferentes tipos de capacidades de la nube sin tener que aprovisionar, implementar ni administrar recursos de hardware o software, más allá de proporcionar el código de la aplicación del cliente o los datos del cliente. La computación sin servidor representa una forma de computación virtualizada", según ISO /IEC 22123-2. [ 1 ] La computación sin servidor es un ecosistema amplio que incluye al proveedor de la nube, la función como servicio (FaaS), los servicios gestionados, las herramientas, los marcos de trabajo, los ingenieros, las partes interesadas y otros elementos interconectados. [ 2 ]

Descripción general

El término "sin servidor" es inapropiado , ya que los proveedores de servicios en la nube aún utilizan servidores para ejecutar código para desarrolladores . La definición de computación sin servidor ha evolucionado con el tiempo, dando lugar a diversas interpretaciones. Según Ben Kehoe, "sin servidor" representa un espectro más que una definición rígida. El énfasis debería pasar de definiciones estrictas y tecnologías específicas a adoptar una mentalidad sin servidor, centrándose en aprovechar las soluciones sin servidor para abordar los desafíos empresariales. [ 3 ]

La computación sin servidor no elimina la complejidad, sino que la traslada en gran medida del equipo de operaciones al equipo de desarrollo. Sin embargo, este traslado no es absoluto, ya que los equipos de operaciones siguen gestionando aspectos como la gestión de identidades y accesos (IAM), las redes, las políticas de seguridad y la optimización de costes. Además, si bien dividir las aplicaciones en componentes más pequeños puede aumentar la complejidad de la gestión, la relación entre la granularidad y la dificultad de la gestión no es estrictamente lineal. A menudo existe un nivel óptimo de modularización en el que los beneficios superan la carga adicional de gestión. [ 4 ] [ 2 ]

Según Yan Cui, las técnicas sin servidor solo deben adoptarse cuando ayuden a ofrecer valor al cliente con mayor rapidez. Y durante la adopción, las organizaciones deben avanzar paso a paso y reducir los riesgos a lo largo del proceso. [ 5 ]

Desafíos

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

Supervisión y depuración

La monitorización y depuración de aplicaciones sin servidor pueden presentar desafíos únicos debido a su naturaleza distribuida, basada en eventos y entornos propietarios. Las herramientas tradicionales pueden resultar insuficientes, dificultando el seguimiento de los flujos de ejecución entre servicios. Sin embargo, soluciones modernas como las herramientas de rastreo distribuido (por ejemplo, AWS X-Ray, Datadog), el registro centralizado y las plataformas de observabilidad independientes de la nube están mitigando estos desafíos. Tecnologías emergentes como OpenTelemetry, la detección de anomalías basada en IA y los marcos específicos para aplicaciones sin servidor están mejorando aún más la visibilidad y el análisis de la causa raíz. Si bien persisten los desafíos, los avances en las herramientas de monitorización y depuración están abordando progresivamente estas limitaciones. [ 8 ] [ 9 ]

Seguridad

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

Dependencia 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, por defecto, vinculados a un proveedor de nube específico. Este problema se agrava en la computación sin servidor, ya que, debido a 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 como servicio (BaaS), una oferta de BaaS generalmente solo puede activar de forma nativa una oferta de FaaS del mismo proveedor. Esto hace que la migración de cargas 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 multi-nube podría mitigar este problema. [ 13 ] [ 14 ] [ 15 ]

computación de alto rendimiento

La computación sin servidor puede no ser ideal para ciertas cargas de trabajo de computación de alto rendimiento (HPC) debido a las limitaciones de recursos que suelen imponer los proveedores de la nube, como las restricciones de memoria máxima, CPU y tiempo de ejecución. Para cargas de trabajo que requieren un uso de recursos sostenido o predecible, los servidores aprovisionados en masa pueden ser a veces más rentables que el modelo de pago por uso típico de las plataformas sin servidor. Sin embargo, la computación sin servidor es cada vez más capaz de soportar cargas de trabajo HPC específicas, en particular aquellas que son altamente paralelizable y basadas en eventos, aprovechando su escalabilidad y elasticidad. La idoneidad de la computación sin servidor para HPC continúa evolucionando con los avances en las tecnologías de la nube. [ 16 ] [ 17 ] [ 18 ]

Antipatrones

El antipatrón del grano de arena se refiere a la creación de componentes excesivamente pequeños (por ejemplo, funciones) dentro de un sistema, lo que a menudo resulta en una mayor complejidad, sobrecarga operativa e ineficiencias de rendimiento. [ 19 ] El pinball de Lambda es un antipatrón relacionado que puede ocurrir en arquitecturas sin servidor cuando las funciones (por ejemplo, AWS Lambda, funciones de Azure) se invocan excesivamente entre sí en cadenas fragmentadas, lo que lleva a la latencia, desafíos de depuración y pruebas, y una observabilidad reducida. [ 20 ] Estos antipatrones están asociados con la formación de un monolito distribuido.

Estos antipatrones suelen abordarse mediante la aplicación de límites de dominio claros, que distinguen entre interfaces públicas y publicadas. [ 20 ] [ 21 ] Las interfaces públicas son interfaces técnicamente accesibles, como métodos, clases, puntos finales de API o disparadores, pero no ofrecen garantías formales de estabilidad. Por el contrario, las interfaces publicadas implican un contrato de estabilidad explícito, que incluye versionado formal, documentación exhaustiva, una política de obsolescencia definida y, a menudo, compatibilidad con versiones anteriores. Las interfaces publicadas también pueden requerir el mantenimiento simultáneo de múltiples versiones y el cumplimiento de procesos formales de obsolescencia cuando se introducen cambios incompatibles. [ 21 ]

En sistemas donde los componentes sin servidor (funciones) interactúan con otros recursos en patrones complejos, a veces descritos como arquitectura espagueti o monolito distribuido, se observan con frecuencia cadenas fragmentadas de llamadas a funciones. Por el contrario, los sistemas con límites más definidos suelen organizar los componentes sin servidor en grupos cohesionados, donde las interfaces públicas internas gestionan la comunicación entre componentes y las interfaces publicadas definen la comunicación entre grupos. Esta distinción resalta las diferencias en las garantías de estabilidad y los compromisos de mantenimiento, lo que contribuye a reducir la complejidad de las dependencias. [ 20 ] [ 21 ]

Además, los patrones asociados con el encadenamiento excesivo de funciones sin servidor a veces se abordan mediante estrategias arquitectónicas que enfatizan las integraciones de servicios nativos en lugar de funciones individuales, un concepto conocido como mentalidad sin funciones. Sin embargo, se ha observado que este enfoque implica una curva de aprendizaje más pronunciada y las limitaciones de integración pueden variar incluso dentro del mismo ecosistema de proveedores de la nube. [ 2 ]

La generación de informes en bases de datos sin servidor presenta desafíos, ya que la recuperación de datos para un servicio de informes puede romper los contextos delimitados , reducir la puntualidad de los datos o ambas cosas. Esto se aplica independientemente de si los datos se extraen directamente de las bases de datos, se recuperan a través de HTTP o se recopilan en lotes. Mark Richards se refiere a esto como el antipatrón de informes de acceso remoto . [ 19 ] Una posible alternativa a este enfoque es que las bases de datos envíen de forma asíncrona los datos necesarios al servicio de informes en lugar de que este los extraiga. Si bien este método requiere un contrato separado entre los servicios y el servicio de informes y puede ser complejo de implementar, ayuda a preservar los contextos delimitados al tiempo que mantiene un alto nivel de puntualidad de los datos. [ 19 ]

Principios

La adopción de prácticas DevSecOps puede ayudar a mejorar el uso y la seguridad de las tecnologías sin servidor. [ 22 ]

En las aplicaciones sin servidor, la distinción entre infraestructura y lógica de negocio suele ser difusa, y las aplicaciones se distribuyen típicamente entre múltiples servicios. Para maximizar la eficacia de las pruebas, se hace hincapié en las pruebas de integración para las aplicaciones sin servidor. [ 5 ] Además, para facilitar la depuración y la implementación, se utiliza la orquestación dentro del contexto delimitado , mientras que se emplea la coreografía entre diferentes contextos delimitados. [ 5 ]

Los recursos efímeros suelen mantenerse juntos para mantener una alta cohesión . Sin embargo, los recursos compartidos con largos tiempos de activación, como los clústeres y las zonas de aterrizaje de AWS RDS , a menudo se gestionan en repositorios, canalizaciones de implementación y pilas separadas. [ 5 ]

Véase también

Referencias

  1. "ISO/IEC 22123-2:2023 (E) - Tecnología de la información — Computación en la nube — Parte 2: Conceptos". Norma internacional : 25.
  2. 1 2 3 Brisals, Sheen (2024). Desarrollo sin servidor en AWS: Creación de soluciones sin servidor a escala empresarial . O'Reilly Media. ISBN 978-1098141936.
  3. Emison, Joseph (2023). Serverless as a Game Changer: How to Get the Most Out of the Cloud . Addison-Wesley Professional. ISBN 9780137392551.
  4. El ascensor del arquitecto de software: redefiniendo el rol del arquitecto en la empresa digital . O'Reilly Media. 2020. ISBN 978-1492077541.
  5. 1 2 3 4 Cui, Yan (2020). Arquitecturas sin servidor en AWS (2.ª ed.). Manning. ISBN  978-1617295423.
  6. 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.
  7. Richards, Mark (2021). Arquitectura de software: Las partes difíciles: Análisis modernos de compensaciones para arquitecturas distribuidas (1.ª ed.). O'Reilly Media. ISBN  978-1492086895.
  8. Rastreo distribuido en la práctica: instrumentación, análisis y depuración de microservicios . O'Reilly Media. ISBN 978-1492056638.
  9. Observabilidad nativa en la nube con OpenTelemetry: Aprenda a obtener visibilidad de los sistemas combinando el rastreo, las métricas y el registro con OpenTelemetry . ISBN 978-1801077705.
  10. Kelly, Daniel; Glavin, Frank G.; Barrett, Enda (2021-08-01). "Negación de la cartera: definiendo una amenaza inminente para la computación sin servidor" . Journal of Information Security and Applications . 60 102843. arXiv : 2104.08031 . doi : 10.1016/j.jisa.2021.102843 . ISSN 2214-2126 . 
  11. "OWASP Serverless Top 10 | Fundación OWASP" . owasp.org . Consultado el 20 de mayo de 2024 .
  12. OWASP/Serverless-Top-10-Proyecto , OWASP, 2 de mayo de 2024 , consultado el 20 de mayo de 2024
  13. Aske, Austin; Zhao, Xinghui (13 de agosto de 2018). «Soporte para la computación sin servidor de múltiples proveedores en el borde» . Actas de la 47.ª Conferencia Internacional sobre Procesamiento Paralelo . 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 . 
  14. 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 sin servidor en múltiples nubes» . Actas del Simposio 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. S2CID 239890130 . 
  15. Zhao, Haidong; Benomar, Zakaria; Pfandzelter, Tobias; Georgantas, Nikolaos (06-12-2022). "Soporte para la multinube en la computación sin servidor" . 2022 IEEE/ACM 15.ª Conferencia Internacional sobre Computación en la Nube y de Utilidad (UCC) . págs. 285–290 . arXiv : 2209.09367 . doi : 10.1109/UCC56403.2022.00051 . ISBN  978-1-6654-6087-3. S2CID 252383217 . 
  16. Computación sin servidor: principios y paradigmas . Springer. 12 de mayo de 2023. ISBN 978-3031266324.
  17. Foster, Ian; Gannon, Dennis B. (29 de septiembre de 2017). Computación en la nube para la ciencia y la ingeniería (Computación científica y de ingeniería) . MIT Press. ISBN 978-0262037242.
  18. Hellerstein, Joseph; Faleiro, Jose; Gonzalez, Joseph; Schleier-Smith, Johann; Screekanti, Vikram; Tumanov, Alexey; Wu, Chenggang (2019), Serverless Computing: One Step Forward, Two Steps Back , arXiv : 1812.03651
  19. 1 2 3 Richards, Mark (2015). Antipatrones y trampas de los microservicios . O'REILLY.
  20. 1 2 3 "TECHNOLOGY RADAR VOL. 21 Una guía de opinión sobre tecnología" (PDF) . Technology Radar . 21. ThoughtWorks.
  21. 1 2 3 Fowler, Martin (marzo-abril de 2002). "Interfaces públicas versus publicadas" (PDF) . IEEE Software . 19 (2): 18–19 . doi : 10.1109/52.991326 .
  22. Katzer, Jason (2020). Aprendiendo Serverless: Diseño, desarrollo e implementación con confianza . O'Reilly Media. ISBN 978-1492057017.

Lecturas adicionales

  • 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). "¿Perdiendo el servidor? Todo el mundo habla de la arquitectura sin servidor" . BCS, el Instituto Colegiado de TI . Recuperado el 7 de noviembre de 2017 .
  • Anderson, David (9 de marzo de 2022). "Impulsa el futuro y acelera la transición de tu organización a la nube moderna y sin servidor con 'El efecto de la rueda de valor'"." . The Serverless Edge . Consultado el 9 de marzo de 2022 .
  • 14 autores de UC Berkeley (9 de febrero de 2019). "Programación en la nube simplificada: una visión de Berkeley sobre la computación sin servidor [ 1 ] ".
  1. Jonas, Eric (febrero de 2019). "Programación en la nube simplificada: una perspectiva de Berkeley sobre la computación sin servidor". pp. 1–33 . arXiv : 1902.03383 [ cs.OS ].