¿Qué es arquitectura sin servidores?

En los últimos meses, ha tenido un gran impacto entre los profesionales del sector,lo que se conoce como “serverless arquitecture” o arquitectura sin servidores. Pero la enorme expectación que siempre levantan los últimos avances en tecnología y computación suele venir acompañada de una gran incertidumbre sobre los riesgos de integrar nuevas herramientas: ¿En qué consiste la arquitectura sin servidores?¿Qué ventajas e inconvenientes presenta frente a los sistemas tradicionales? Y lo más importante, ¿cómo se implementa? En el siguiente texto intentaré exponer de manera sencilla las bases de lo que se conoce como serverless architecture, aclarando en la medida de lo posible las dudas que puedan surgir.

¿QUÉ ES?

Al utilizar serverless architecture o arquitectura sin servidores, la infraestructura que aloja nuestro código es efímera y tan solo existe durante el tiempo que se utiliza. Al contrario de lo que pueda parecer, esto no significa que nuestro código este “mágicamente” alojado y que no exista infraestructura que lo soporte, sino más bien, que no existe de forma permanente. El término “serverless” ha provocado bastante confusión, ya que en realidad no se prescinde del uso de servidores como tal, sino su existencia depende de una serie de factores. Veamos un sencillo ejemplo: Imaginad que debemos construir un API para una app móvil. Para ello, desarrollamos nuestro código en el lenguaje que más nos guste y lo desplegamos en una plataforma cloud. Utilizando una arquitectura tradicional, dispondríamos de un contenedor que se encargaría de alojar nuestro código y que se mantendría funcionando constantemente, a la espera de una petición. Sin embargo, con el enfoque de arquitectura sin servidores, podemos crear contenedores sólo cuando estos sean necesarios, existiendo únicamente durante la ejecución de nuestro código y destruyéndose una que vez este termine. ¿Cómo sabremos cuándo necesitamos un contenedor? Muy fácil: estos se crearán como respuesta a unos eventos predefinidos, como puede ser una llamada a nuestro API.

¿QUÉ VENTAJAS E INCONVENIENTES TIENE?

Pese a las enormes ventajas que supone trabajar con arquitectura sin servidores, se trata de un fenómeno relativamente reciente. Esto conlleva un periodo de adaptación, por lo que todavía nos encontraremos con algunas barreras a la hora de implementar su uso.

VENTAJAS:

  • Ahorro: En una arquitectura tradicional tendríamos que abonar una cuota mensual por mantener nuestro servicio activo, aunque no hiciésemos uso de él. Aplicando arquitectura sin servidores solo pagamos por tiempo de computación, reduciendo considerablemente los costes de mantenimiento del servicio.
 
  • Escalado: La arquitectura sin servidores administra sus recursos en función de la carga de trabajo, redimensionando su capacidad en función del rendimiento exigido. Así, nuestro código escalará en base a la demanda, facilitando las operaciones de aprovisionamiento de servidores sin necesidad de un trabajo adicional por parte de un desarrollador.
 
  • Rápida puesta en marcha: Si necesitamos crear de forma rápida un producto, esta solución nos permitirá abstraernos de las tareas de redimensionamiento de infraestructura, centrándonos únicamente en el código.

INCONVENIENTES:

  • Dependencia del proveedor: Actualmente, tomar la decisión de emplear arquitectura sin servidores puede anclarnos a un proveedor cloud u otro, haciendo que nuestro contenido sea totalmente dependiente de sus condiciones de servicio: tarifas, disponibilidad, etc.
 
  • Tiempo de respuesta: Aunque en determinados lenguajes de programación como nodejs o phyton puede no apreciarse, en otros casos como Java la arquitectura sin servidores puede experimentar altos tiempos de respuesta, sobre todo en la primera petición. Algunos proveedores como Amazon Web Services están haciendo grandes esfuerzos para reducir esta latencia, prometiéndonos que próximamente apenas notaremos diferencia con un desarrollo convencional.

¿CÓMO PODEMOS IMPLEMENTARLA?

En comparación con un desarrollo convencional cambia un poco el método de trabajo, ya que el código es dividido en funciones y cada función responderá a un evento. Por ejemplo, una función puede contener el código que inserte en nuestra base de datos y el evento que la ponga en marcha será la llamada a una url con una petición de tipo POST. De esta forma, nuestro código se encuentra más aislado, logrando así que el tiempo de ejecución sea menor y reduciendo directamente los costes.

PROVEEDORES CLOUD

Actualmente hay varios proveedores cloud que ofrecen este tipo de funcionalidad:

FRAMEWORKS Y HERRAMIENTAS:

  • Openwhisk : IBM ha impulsado esta iniciativa bajo licencia open source. Podéis ver su repositorio de código aquí
  • Serverless: Se trata de un framework open source que surge iniciativa de Coca Cola para reducir sus costes de IT. Serverless promete abstraer este tipo de arquitectura de los diferentes servicios cloud, permitiéndonos implementar nuestras funciones con independencia del proveedor (o al menos eso prometen). A día 23/02/2017 Serverless ha lanzado soporte para Azure Functions, por lo que ahora podremos crear nuestros desarrollos con soporte para AWS lambda, IBM Openwhisk y Azure functions.

Espero que este artículo os haya sido de gran utilidad a la hora de conocer un poco mejor las bondades de la tecnología sin servidores y haya despejado algunas de vuestras dudas para que podáis comenzar a trabajar con ella cuanto antes. ¡Un saludo!