¿Por qué utilizar la informática sin servidor? | Ventajas y desventajas de la informática sin servidor

La informática sin servidor ofrece una serie de ventajas a los desarrolladores web, como escalabilidad, rapidez de comercialización y menos gastos. Sin embargo, en algunos casos estas ventajas pueden verse superadas por otras preocupaciones.

Metas de aprendizaje

Después de leer este artículo podrás:

  • Entender las ventajas y desventajas de la arquitectura sin servidor
  • Entender quién debe utilizar la arquitectura sin servidor

Contenido relacionado


¿Quieres saber más?

Suscríbete a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.

Revisa la política de privacidad de Cloudflare para saber más sobre cómo Cloudflare gestiona tus datos personales.

Copiar el enlace del artículo

¿Por qué utilizar la informática sin servidor?

La informática sin servidor ofrece una serie de ventajas en comparación con la infraestructura tradicional basada en la nube o centrada en el servidor. Para muchos desarrolladores, las arquitecturas sin servidor ofrecen mayor escalabilidad, más flexibilidad y se necesita menos tiempo para el lanzamiento, todo ello con un coste reducido. Con las arquitecturas sin servidor, los desarrolladores no tienen que preocuparse de comprar, aprovisionar y gestionar servidores backend. No obstante, la informática sin servidor no es una solución mágica para todos los desarrolladores de aplicaciones web.

¿Cómo funciona la informática sin servidor?

La informática sin servidor es una arquitectura en la que un proveedor proporciona servicios de backend a medida que se van necesitando. Para más información sobre la informática sin servidor, consulta ¿Qué es la informática sin servidor?

¿Cuáles son las ventajas de la informática sin servidor?

No es necesario gestionar el servidor

Aunque la informática "sin servidor" tiene lugar en los servidores, los desarrolladores nunca tienen que ocuparse de los mismos. Los gestiona el proveedor. Esto puede reducir la inversión necesaria en DevOps, lo cual reduce los gastos, y también da la posibilidad a los desarrolladores de crear y ampliar sus aplicaciones sin estar limitados por la capacidad de los servidores.

A los desarrolladores solo se les cobra por el espacio de servidor que utilizan, lo cual reduce el coste

Como en un plan de teléfono de "pago por uso", a los desarrolladores solo se les cobra por aquello que usan. El código solo se ejecuta cuando las funciones de backend son necesarias para la aplicación sin servidor, y el código escala automáticamente según se vea necesario. El aprovisionamiento es dinámico, preciso y en tiempo real. Algunos servicios son tan exactos que desglosan sus cargos en incrementos de 100 milisegundos. Por el contrario, en una arquitectura tradicional "de servidores", los desarrolladores tienen que prever de antemano la capacidad de servidor que van a necesitar, y luego comprar esa capacidad, independientemente de si la acaban utilizando o no.

Las arquitecturas sin servidor son inherentemente escalables

Imaginemos que la oficina de correos pudiera añadir y retirar de servicio mágicamente camiones de reparto a voluntad, aumentando el tamaño de su flota cuando la cantidad de correo aumentara (por ejemplo, justo antes del Día de la Madre) y reduciéndola en los momentos en los que hay que hacer menos entregas. Eso es básicamente lo que pueden hacer las aplicaciones sin servidor.

Las aplicaciones desarrolladas con una infraestructura sin servidor escalarán automáticamente a medida que crezca la base de usuarios o aumente el uso. Si una función necesita ejecutarse en múltiples instancias, los servidores del proveedor las pondrán en marcha, las ejecutarán y las finalizarán según sea necesario, con frecuencia mediante el uso de contenedores. (La función se pondrá en marcha más rápido si se ha ejecutado recientemente, ver "El rendimiento puede verse afectado" más adelante). Como resultado, una aplicación sin servidor podrá manejar un número inusualmente alto de solicitudes igual de bien que una única solicitud de un solo usuario. Una aplicación tradicionalmente estructurada, con una cantidad fija de espacio en el servidor, se puede sobrecargar si se produce un aumento repentino del uso.

Son posibles las implantaciones y actualizaciones rápidas

Con una infraestructura sin servidor, no hace falta subir código a los servidores ni realizar ninguna configuración de backend para poder lanzar una versión funcional de una aplicación. Los desarrolladores pueden subir trozos de código muy rápido y lanzar un nuevo producto. Pueden subir el código de una sola vez o una función cada vez, ya que la aplicación no es una sola pila monolítica, sino una colección de funciones suministradas por el proveedor.

Esto también permite actualizar, parchear, arreglar o añadir nuevas funciones a una aplicación con rapidez. No es necesario hacer cambios en toda la aplicación; en su lugar, los desarrolladores pueden actualizar la aplicación de función en función.

El código puede ejecutarse más cerca del usuario final, lo cual disminuye la latencia

Como la aplicación no está alojada en un servidor de origen, su código se puede ejecutar desde cualquier sitio. Por tanto, en función del proveedor utilizado, es posible ejecutar las funciones de la aplicación en servidores que están cerca del usuario final. Esto reduce la latencia, porque las solicitudes del usuario ya no tienen que viajar hasta un servidor de origen. Cloudflare Workers permite este tipo de reducción de latencia sin servidor.

¿Cuáles son las desventajas de la informática sin servidor?

Las pruebas y la depuración se vuelven más exigentes

Es difícil replicar el entorno sin servidor para ver cómo funcionará realmente el código una vez implementado. La depuración es más complicada, debido a que los desarrolladores no tienen visibilidad de los procesos del backend, y porque la aplicación está dividida en funciones separadas y más pequeñas. Cloudflare Workers Playground es un espacio seguro que ayuda a reducir la fricción en las pruebas y la depuración

La informática sin servidor introduce nuevos problemas de seguridad

Cuando los proveedores ejecutan todo el backend, puede que no sea posible examinar su seguridad del todo, lo cual puede suponer un problema para las aplicaciones que manejan datos personales o confidenciales.

Como a las empresas no se les asignan sus propios servidores físicos separados, los proveedores de servicios sin servidor a menudo ejecutarán el código de varios de sus clientes en un solo servidor en un momento dado. Este problema de compartir equipo con otros se conoce como "tenencia múltiple": pensemos en varias empresas que intentan alquilar y trabajar en una misma oficina a la vez. La tenencia múltiple puede afectar al rendimiento de las aplicaciones y, si los servidores de tenencia múltiple no están bien configurados, se podrían acabar filtrando los datos. La tenencia múltiple tiene poco o ningún impacto en las redes que funcionan correctamente como espacio seguro y cuentan con una infraestructura lo suficientemente potente. Por ejemplo, Cloudflare ejecuta una red de 15 Tbps con suficiente exceso de capacidad para mitigar la degradación del servicio, y todas las funciones sin servidor alojadas por Cloudflare se ejecutan en su propio espacio seguro (mediante el motor de Chrome V8).

Las arquitecturas sin servidor no están diseñadas para procesos de larga duración

Esto limita los tipos de aplicaciones que pueden ejecutarse de forma rentable en una arquitectura sin servidor. Ya que los proveedores de servicios sin servidor cobran por el tiempo en el que se está ejecutando el código, puede costar más ejecutar una aplicación con procesos de larga duración en una infraestructura sin servidor que en una tradicional.

El rendimiento puede verse afectado

Debido a que no se está ejecutando constantemente, puede que haya que arrancar el código sin servidor cuando se utiliza. Este tiempo de arranque puede degradar el rendimiento. Sin embargo, si un fragmento de código se utiliza con regularidad, el proveedor sin servidor lo tendrá listo para ser activado: una solicitud de este código listo para funcionar se denomina "arranque en caliente". Una solicitud para un código que no se haya utilizado durante un tiempo se denomina "arranque en frío".

Cloudflare Workers evita en gran medida el problema del arranque en frío al usar el motor V8 de Chrome, que en la mayoría de los casos es capaz de arrancar y ejecutar código JavaScript en menos de 5 milisegundos. Si el código ya se está ejecutando, el tiempo de respuesta es inferior a un milisegundo. Más información sobre el rendimiento de las diferentes plataformas sin servidor.

La dependencia de proveedor es un riesgo

Si un proveedor proporciona todos los servicios de backend para una aplicación, aumenta de forma inevitable la dependencia de ese proveedor. Configurar una arquitectura sin servidor con un proveedor puede dificultar el cambio de proveedor cuando sea necesario, sobre todo porque cada proveedor ofrece características y flujos de trabajo ligeramente diferentes. (Es más fácil migrar a Cloudflare Workers, porque está escrito en JavaScript y en base a la ampliamente utilizada API de service workers).

¿Quién debe utilizar una arquitectura sin servidor?

Los desarrolladores que quieran reducir el tiempo que necesitan para lanzar los productos, y crear aplicaciones ligeras y flexibles que puedan ampliarse o actualizarse rápidamente, se pueden beneficiarse considerablemente de la informática sin servidor.

Las arquitecturas sin servidor reducirán los costes de las aplicaciones que tengan un uso inconsistente, con períodos de mayor uso alternados con momentos de poco o ningún tráfico. Para estas aplicaciones, comprar un servidor o un bloque de servidores que estén ejecutándose constantemente y siempre disponibles, incluso cuando no se usan, puede suponer un desperdicio de recursos. Una configuración sin servidor responderá de forma instantánea cuando se necesite y no incurrirá en costes cuando esté en reposo.

Además, los desarrolladores que quieran acercar algunas o todas las funciones de sus aplicaciones a los usuarios finales para reducir la latencia necesitarán al menos una arquitectura parcialmente sin servidor, ya que para ello es necesario mover algunos procesos fuera del servidor de origen.

¿Cuándo deben los desarrolladores evitar el uso de una arquitectura sin servidor?

Hay casos en los que tiene más sentido, tanto desde el punto de vista del coste como de la arquitectura del sistema, utilizar servidores específicos que estén autogestionados u se ofrezcan como servicio. Por ejemplo, las aplicaciones grandes con una carga de trabajo constante y predecible pueden necesitar una configuración tradicional y, en estos casos, es probable que la configuración tradicional sea menos costosa.

Además, puede ser extremadamente difícil migrar las aplicaciones heredadas a una nueva infraestructura que tenga una arquitectura totalmente diferente.

¿Cómo ayuda Cloudflare a los desarrolladores a crear arquitecturas sin servidor?

Cloudflare Workers es un producto que permite que los desarrolladores escriban funciones de JavaScript y las implementen en el perímetro de la red de Cloudflare. Esto permite ejecutar el código de la aplicación en una arquitectura sin servidor lo más cerca posible del usuario final, lo cual minimiza la latencia.