LFCA: Aprende Computación sin Servidor, Beneficios y Desventajas – Parte 15

La tecnología Serverless ha generado mucha expectación en la comunidad tecnológica, despertando mucha curiosidad y recibiendo cierta crítica en cierta medida. Es una tecnología que comenzó con el lanzamiento de AWS Lambda en 2014, seguido pronto por Azure Functions más tarde en 2016.

Google siguió más tarde con el lanzamiento de funciones de Google Cloud en julio de 2018. Entonces, ¿qué es la tecnología serverless? Para responder mejor a esta pregunta, retrocedamos a la computación tradicional basada en servidores.

En el modelo tradicional de TI, estabas a cargo de básicamente todo. Como propietario de un negocio, tendrías que presupuestar servidores y otros equipos de red como enrutadores y switches, y racks para montar los servidores.

También tendrías que preocuparte por obtener un centro de datos impecable y seguro y asegurarte de que pueda proporcionar suficiente refrigeración y energía redundante y servicio de internet. Una vez configurado, tendrías que instalar el sistema operativo y luego implementar tus aplicaciones. Además, se te pediría que configuraras sistemas de monitoreo e implementaras funciones de seguridad como cortafuegos y sistemas de prevención, detección e intrusión.Como habrás imaginado, esto es intensivo en recursos, costoso y agotador.

Como podrías haber adivinado, esto es intensivo en recursos, costoso y agotador.

Entonces, la computación en la nube irrumpió en el mundo tecnológico, revolucionando por completo la forma en que desplegamos y administramos servidores y aplicaciones. Anunció una nueva era en la que los desarrolladores podrían crear fácilmente servidores y bases de datos en la nube en poco tiempo y comenzar a trabajar en sus aplicaciones. No hay preocupaciones sobre los problemas asociados con la informática tradicional como el tiempo de inactividad, el equipamiento costoso y el alquiler de centros de datos.

Si bien la computación en la nube trajo consigo la conveniencia y las economías de escala en el despliegue de recursos de TI, algunas empresas comprarían en exceso unidades de espacio en el servidor y recursos como RAM y CPU en previsión de un aumento en el tráfico de la red o la actividad que podría abrumar las aplicaciones.

Si bien es un movimiento prudente, el resultado no intencionado es la subutilización de los recursos del servidor que a menudo se desperdician. Incluso con escalado automático, aún así, un aumento repentino e inesperado podría resultar costoso. Además, aún necesitarías realizar otras tareas, como configurar equilibradores de carga, que también es probable que aumenten los costos operativos.

Está claro que a pesar de hacer la transición a la nube, todavía persisten algunos cuellos de botella y tienen el potencial de aumentar los costos y causar desperdicio de recursos. Y aquí es donde entra la computación sin servidor.

¿Qué es la Computación sin Servidor?

La computación sin servidor es un modelo de nube que proporciona servicios de backend a los usuarios de forma de pago por uso. En términos simples, el proveedor de nube asigna recursos informáticos y cobra solo por el tiempo en que las aplicaciones están en funcionamiento. Esto equivale a cambiar de un plan mensual de pago por cable a pagar solo cuando estás viendo tus programas de televisión.

El término ‘sin servidor‘ puede ser un poco engañoso. ¿Hay servidores involucrados? Claro, sin embargo, en este caso, los servidores y la infraestructura subyacente son manejados y mantenidos exclusivamente por el proveedor de nube. Por lo tanto, no tienes que preocuparte por ellos. Como desarrollador, tu enfoque está puramente en desarrollar tus aplicaciones y asegurarte de que funcionen a tu satisfacción.

Al hacerlo, la computación sin servidor elimina la molestia de administrar servidores y te ahorra tiempo valioso para trabajar en tus aplicaciones.

Servicios de Backend Proporcionados por la Computación sin Servidor

A perfect example of serverless backend service is Function-as-a-Service (FaaS) platform. FaaS is a cloud computing model that enables developers to develop, execute, and manage code in response to events without the complexity of building and managing an underlying infrastructure usually associated with the deployment of microservices.

FaaS es una subcategoría de la computación sin servidor con diferencias sutiles. La computación sin servidor abarca una amplia gama de servicios que incluyen cómputo, base de datos, almacenamiento y API, por mencionar algunos. FaaS se enfoca únicamente en un modelo de cómputo basado en eventos donde las aplicaciones se ejecutan bajo demanda, es decir, en respuesta a una solicitud.

Ejemplos de modelos de cómputo FaaS incluyen:

  • AWS Lambda de AWS
  • Azure Functions de Microsoft
  • Cloud Functions de Google
  • Cloudflare Workers de Cloudflare

En resumen, hemos visto que con FaaS, solo pagas por el tiempo que tu aplicación está en funcionamiento y el proveedor de la nube prácticamente hace todo por ti, incluido el manejo de la infraestructura subyacente. Gestionar servidores es lo que menos te preocupa.

Beneficios de la Computación sin Servidor

A estas alturas, tienes una buena idea de algunos de los méritos que la computación sin servidor aporta. Profundicemos en las ventajas de adoptar la tecnología.

1. Sin Gestión de Servidores

Este es quizás uno de los mayores beneficios de adoptar el modelo de computación sin servidor. Aunque el término ‘sin servidor‘ podría malinterpretarse para implicar que no hay servidores involucrados, el hecho es que las aplicaciones aún se ejecutan en servidores. La cuestión central es que la gestión del servidor es enteramente responsabilidad del proveedor de la nube, lo que te brinda más tiempo para trabajar en tus aplicaciones.

2. Escalado Fácil y Eficiente

La infraestructura sin servidor proporciona escalado automático de aplicaciones en respuesta a un aumento en el uso, demanda o crecimiento de la base de usuarios. Si la aplicación se está ejecutando en múltiples instancias, los servidores se iniciarán y detendrán cuando sea necesario. En una configuración tradicional de computación en la nube, un pico de tráfico o actividad puede sobrecargar fácilmente los recursos del servidor, lo que lleva a inconsistencias con la aplicación en ejecución.

3. Disponibilidad Incorporada

Como desarrollador, no necesitas construir ninguna infraestructura especial para hacer que tus aplicaciones estén altamente disponibles. La computación sin servidor te proporciona una alta disponibilidad incorporada para garantizar que tus aplicaciones estén en funcionamiento cuando sea necesario hacerlo.

4. Reducción de costos operativos

La computación sin servidor asigna recursos según el uso que se haga de ellos. Tu aplicación solo necesitará funciones de backend cuando el código se ejecute y se escalonará automáticamente en función de la carga de trabajo.

Esto proporciona economías de escala, ya que solo se te facturará por el tiempo que las aplicaciones estén en funcionamiento. En el modelo de servidor tradicional, tienes que pagar por el espacio del servidor, las bases de datos y otros recursos, independientemente de si la aplicación está en funcionamiento o inactiva.

5. Implementaciones más rápidas de aplicaciones

La arquitectura sin servidor elimina la necesidad de configuración de backend y de cargar manualmente el código en servidores como en la configuración tradicional. Es fácil para los desarrolladores cargar pequeños bloques de código de manera eficiente y lanzar un gran producto.

La facilidad de implementación también permite a los desarrolladores parchear y actualizar fácilmente ciertas características del código sin alterar toda la aplicación.

Desventajas de la computación sin servidor

¿Existen inconvenientes asociados al modelo sin servidor? Descubrámoslo.

1. Seguridad

Las aplicaciones mal configuradas representan uno de los mayores riesgos asociados con la computación sin servidor. Si optas por AWS, por ejemplo, es prudente configurar diferentes permisos para tu aplicación, lo que a su vez determinará cómo interactuarán con otros servicios dentro de AWS. Cuando los permisos son vagos, una función o un servicio pueden tener más permisos de los necesarios, dejando un amplio margen para violaciones de seguridad.

2. Dependencia del proveedor

Optar por un modelo sin servidor puede presentar desafíos al migrar a otro proveedor. Esto se debe principalmente a que cada proveedor tiene sus propias características y flujos de trabajo que varían ligeramente del resto.

3. Dificultad en probar y depurar aplicaciones

Otro desafío planteado por el modelo sin servidor es la dificultad para reproducir un entorno sin servidor para probar y monitorear el rendimiento del código antes de su implementación. Esto se debe principalmente a que los desarrolladores carecen de accesibilidad a los servicios del backend, que son un privilegio del proveedor de la nube.

4. Dificultad en monitorear aplicaciones sin servidor

Monitorear aplicaciones sin servidor es una tarea compleja por las mismas razones por las que la depuración y prueba son difíciles. Esto se ha visto agravado por la falta de herramientas con integración a servicios del backend como AWS Lambda.

Conclusión

La computación sin servidor continúa ganando terreno y aceptación entre las empresas y los desarrolladores por 3 razones clave. Una es la asequibilidad, lo que implica costos operativos reducidos. En segundo lugar, la computación sin servidor facilita el escalado automático y rápido, y finalmente, los desarrolladores no tienen que preocuparse por la infraestructura subyacente que es manejada por el proveedor.

Mientras tanto, los proveedores de servicios en la nube están trabajando sin descanso para abordar algunas de las desventajas asociadas con la computación sin servidor, como la dificultad para depurar y monitorear aplicaciones.

Source:
https://www.tecmint.com/serverless-computing/