Hace ya algún tiempo desde que empecé a escuchar hablar sobre la arquitectura sin servidores (serverless computing). Recuerdo claramente sentir una sensación de asombro ante el hecho de poder crear web apps sin la necesidad de tener un servidor y gestionarlo, lo que para un desarrollador front-end, como yo, sería un sueño hecho realidad.

¿Qué es la arquitectura sin servidores?

Bueno, ese sueño no se ha hecho de todo realidad todavía. El uso de arquitectura sin servidores no significa que no necesites tener un servidor en el sentido técnico, significa que no tienes que gestionarlo tú mismo. Utilizamos servicios como AWS Lambda, Microsoft Azure o las funcionalidades de Google Cloud para aprovechar la flexibilidad, fácil escalado y eficiencia de costes de estas infraestructuras en la nube para crear micro servicios que inician o detienen funciones.

El objetivo es reducir costes de mantenimiento a la vez que permite a los desarrolladores centrarse en la lógica del negocio en vez de estar ocupados pensando constantemente en la infraestructura, seguridad y actualizaciones.

Como los proveedores de servicios tienen ofertas similares, aquí hablaré únicamente sobre AWS Lambda y prometo volver para hablar de las otras opciones en otros post.

Imagen de un cuarto de servidores

El concepto, tan simple como es, me fascinó desde el principio. Trabajar en proyectos empresariales de gran escala me ha enseñado que infraestructura y escalabilidad siempre son un problema. Con la arquitectura sin servidores, podemos eludir estos contratiempos ya que toda la lógica del servidor, problemáticas y responsabilidades recaen en el proveedor de servicios.

¿Entonces donde está la magia?

No podemos hablar sobre lo increíble que es la arquitectura sin servidores si no sabemos qué significa FaaS (acrónimo para Funciones como servicio). FaaS es básicamente una pequeña pieza de código (piensa en una pequeña función reutilizable) que devuelve un valor después de ejecutarse. Así de simple. Con AWS Lambda, que es el servicio FaaS de Amazon, tu código se dividirá en funciones Lambda que corren en varios entornos:

  • Node.js – v6.10,v8.10 (recomendado)
  • Java – Java 8
  • Python – Python 2.7
  • .NET Core – Core 1.0.1 (C#)

Para convertir tu código en una función Lambda, debes subir un archivo Zip o utilizar el AWS Lambda Management Console. El nombre de la función debe ser único, de otro modo, te dará un error. Puedes leer más sobre el despliegue y creación de nuevas funciones en la documentación de AWS.

“Ejecuta código sin pensar en servidores. Paga solo por el tiempo de uso que consumas”.- AWS Lambda

Para entender mejor la magia de la arquitectura sin servidores, permitidme dibujaros una imagen.

Digamos que tienes 10 personas en tu startup de tecnología que beben café cada mañana. A todos ellos les gusta su café con mucha leche. Para asegurar que siempre haya leche, compraste una vaca que está cómodamente sentada en la cocina siempre preparada para proveer suficiente leche para toda la oficina.

De repente, Mark Cuban invierte 16 millones de dólares en la compañía y contratas a 100 personas más (y antes de que preguntes, sí, todos toman su café con leche. Era un requisito de contratación). Como hay más gente en la oficina, necesitas más vacas que den leche. Esta es, básicamente, la forma tradicional de utilizar tus servicios.

Tú compras un servidor y tienes una cierta cantidad de recursos a tu disposición. Si al final necesitas más, tienes que involucrar al proveedor de servicios, asegurarte de que tu APP se diseñó para ser escalable, actualizar hardware, etc.

vacas esperando servir leche a la gente dela oficina

Con la arquitectura sin servidores, este problema desaparece. Tu leche se entrega cuando se necesita, sin tener un grupo de vacas ocupando tu preciado espacio de oficina, vía una plataforma que escala cuando es necesario. Solo pagas los recursos que acabas usando. Muchos servicios como AWS Lambda ofrecen 1 millón de peticiones gratuitamente.

Los beneficios

Una de las muchas ventajas de optar por la arquitectura sin servidores es la drástica reducción del gasto, dado que pagas por lo que usas. En AWS Lambda, el precio mensual es de 0,00001667 dólares por GB-s y la opción gratuita ofrece 400.000 GB-s. El precio mensual por petición es 0,2$ por millón de peticiones y la versión gratuita ofrece 1 millón de peticiones.

Solo por cambiar de hosting tradicional a la arquitectura sin servidores, hemos visto empresas que han reducido sus costes de servidores de 10.000$ a 370$ al mes, lo que es impresionante lo mires cómo lo mires.

Bajar de 10.000$ a 370$ al mes es un gran negocio!

En mi opinión, el siguiente gran beneficio de esta tecnología es el tiempo de “go-to-market”.  Si no tenemos que obcecarnos con los problemas de infraestructura, los lanzamientos son fáciles de pushear y te queda tiempo de sobra para centrarte en la app en vez de en la magia negra que ocurre entre bambalinas.

Para aplicaciones de grandes empresas se requiere mucho trabajo de preparación, como testeo de retrocompatibilidad o el mergeo de los nuevos componentes con la antigua API, migrar a una arquitectura sin servidores puede ser una buena solución, ya que el código se divide en pequeñas funciones reutilizables que son más fáciles de gestionar y trabajar con ellas (sin mencionar la reducción de costes).

Otra cosa muy importante sobre la arquitectura sin servidores es la capacidad de escalar grácilmente cuando llega el momento. Es algo difícil de conseguir habitualmente y si lo logras, te habrá costado un brazo y una pierna.

“AWS Lambda tiene capacidad de escalado dinámico ante un incremento del tráfico. Para manejar cualquier pico de tráfico, Lambda inmediatamente aumentará la ejecución de funciones a una cantidad predeterminada, dependiendo de en qué región se haya ejecutado”. – AWS Lambda

¿Y por qué no todo el mundo adopta la arquitectura sin servidores?

Como todo en esta vida tiene sus… inconvenientes. Cloud computing y la arquitectura sin servidores llevan entre nosotros varios años, pero es ahora cuando podemos tenerlo a un precio competitivo. Muchos proveedores que ofrecen servicios sin servidores todavía no han llegado a una madurez donde, tú como consumidor, tengas todas las herramientas necesarias para lanzar tu app.

Tomemos como ejemplo AWS Lambda. En mi opinión, una de las mejores opciones en el mercado. Tiene severas deficiencias en monitorización e informes de error, cuestiones en las que confían los desarrolladores. Por suerte, existen opciones como Dashbird.io para sortear estas deficiencias.

¿Qué hay de las limitaciones?

Cada proveedor de servicios tiene una serie de fuertes limitaciones que debes respetar para que todo funcione correctamente.

Volviendo a AWS Lambda. Tiene ciertas limitaciones, pero te animo a que reinterpretes la palabra “limitaciones” y pienses en ellas como guías o pautas. El entorno está limitado a 512 Mb. de espacio en disco, la memoria puede variar entre 128 y 1536 Mb. y el tiempo de espera de ejecución es de 5 minutos. Si estás muy convencido, puedes leer todos los límites de AWS Lambda en la documentación de AWS Lambda.

Conclusión – en mi opinión

Como tecnología ya disponible para las masas, la arquitectura sin servidores está todavía un poco verde y llevará un tiempo antes de que se empiece a propagar como el fuego, pero creedme: Lo.Hará.

Principalmente por dos razones: coste y velocidad en la que se desarrolla y despliega la aplicación. Te garantizo que los servidores tradicionales no desaparecerán, pero creo de corazón que en un par de años, veremos un cambio hacia la arquitectura sin servidores y FaaS. Espero ver cómo evolucionará la tecnología y cómo los desarrolladores y emprendedores se adaptarán a ello, encontrando nuevas formas de implementación y desarrollo de aplicaciones.


Traducción del artículo de John Demian –  Serverless computing is the biggest game changer in 2018 (for developers)