EmergentesMicroservicios

Serverless computing vs containers

6 Mins de lectura

Descubre cómo podemos ayudarte a reducir el tiempo de desarrollo de aplicaciones.

El mundo de la arquitectura de aplicaciones no para de cambiar a lo largo de los años. Desde las primeras arquitecturas monolíticas hasta las más actuales, ha habido una gran cantidad de cambios, impulsados, principalmente, por una creciente necesidad de agilidad, escalabilidad y mantenibilidad.

En este artículo nos centraremos en las arquitecturas más recientes como la arquitectura de microservicios y su implementación en contenedores y sobre qué es serverless computing (arquitectura sin servidor) y sus funciones, destacando sus ventajas y desventajas y comparando el serverless computing vs containers.

Infraestructura gestionada por el equipo de desarrollo en las diferentes arquitecturas. Fuente: Oracle

Microservicios y contenedores

Comenzaremos explicando que son los microservicios. Los microservicios son una arquitectura distribuida en diferentes aplicaciones en la que cada una se encarga de una pequeña parte del dominio. Estas aplicaciones son independientes entre sí, pero pueden comunicarse con el resto para realizar sus funciones y se basan en 5 principios: Alta cohesión, Bajo acoplamiento, Resiliencia, Automatización y Divide y vencerás. El enfoque de la arquitectura de microservicios fomenta la modularidad y la flexibilidad en el desarrollo de software.

Respecto a los contenedores podemos decir que son unidades de software que encapsulan aplicaciones y sus dependencias, facilitando su ejecución en diversos entornos ya que no dependen del sistema operativo de la máquina donde se desplieguen. Su enfoque eficiente permite implementaciones rápidas, escalabilidad y garantizan la portabilidad y consistencia de las aplicaciones en entornos de desarrollo y despliegue. Esto utilizado junto a los microservicios nos facilita la distribución de aplicaciones modulares, portables y fácilmente escalables. Un ejemplo de tecnología para la gestión de contenedores es Docker.

Pero como toda tecnología, este tipo de arquitectura basada en contenedores tiene sus ventajas y desventajas que explicaremos a continuación:

Ventajas

  • Control y flexibilidad: su naturaleza ofrece un alto grado de control sobre los contenedores en ejecución, además de gran flexibilidad a la hora de gestionarlos.
  • No se produce Vendor lock-in: al no depender de un proveedor específico, las aplicaciones son independientes del entorno.
  • Portabilidad: es la mayor ventaja de los contenedores y su insignia principal. Pueden ser ejecutados en cualquier entorno sin ninguna diferencia en el funcionamiento

Desventajas

  • Escalado más lento: comparado con otras arquitecturas, desplegar nuevos contenedores cuando se necesita escalar puede llevar más tiempo.
  • Costes de ejecución mayores: el uso de ciertos servicios y que estén activos las 24 horas del día puede derivar en un coste mayor.
  • Requieren mayor intervención manual: requieren de cierta gestión para algunas tareas tales como resolución de problemas, optimizaciones o configuraciones complejas.

Qué es serverless computing

La informática sin servidor, también conocida como “Serverless computing” consta de aplicaciones sin servidor que se alojan por un tercero en la nube, eliminando la necesidad de gestionar la infraestructura por parte de los desarrolladores. Estas aplicaciones están divididas en funciones que cumplen con diferentes cometidos cada una y que solo se activan en el momento de su uso, lo que permite ahorrar en costes.

Gracias a no tener que gestionar la infraestructura y el escalado, se permite al equipo de desarrollo centrarse en el desarrollo del software correspondiente, aumentando la productividad y reduciendo los costes de desarrollo. Dentro de las tecnologías para el serverless computing destacan las siguientes como las más populares: AWS Lambda, Azure Functions y Google Cloud Functions.

Tecnologías serverless de los principales proveedores de servicios en la nube y lenguajes admitidos por cada una de ellas

Al abordar las ventajas y desventajas del serverless computing, nos enfrentamos a las siguientes consideraciones:

Ventajas

  • Nula administración: no es necesario gestionar la infraestructura o el escalado de las aplicaciones lo que simplifica el trabajo de los desarrolladores.
  • Pago por uso: en este modelo solo se paga por uso, si las funciones no se están ejecutando el coste es 0.
  • Escalado automático: el escalado de las funciones se realiza de manera automática como consecuencia de la carga de trabajo a la que estén sometidas.
  • Aceleración del Time to Market: al simplificar el desarrollo al eliminar el componente de la infraestructura, el tiempo necesario para lanzar una aplicación en el mercado es menor.

Desventajas

  • Falta de estándar: al no disponer de un estándar marcado, la portabilidad de funciones entre diferentes proveedores puede ser compleja.
  • Se produce Vendor lock-in: al depender de un único proveedor de servicios, se genera cierto grado de dependencia.
  • Se producen Cold Starts: se produce cuando una función se inicia después de haber estado parada, el tiempo de ejecución en estos casos aumenta.
  • Dificultad en el diseño de aplicaciones complejas: fragmentar aplicaciones muy grandes y complejas en funciones puede suponer todo un reto, dando lugar a mayores tiempos de desarrollo.

Serverless computing vs containers

En este apartado nos centraremos en las principales diferencias y similitudes entre ambas arquitecturas, este punto es de suma importancia ya que conocer las fortalezas y debilidades de una arquitectura sobre la otra nos ayudará, como veremos más adelante, a la hora de saber elegir que arquitectura utilizar.

¿Qué diferencia a la informática sin servidor y a los contenedores?

Forma de escalado

Una de las diferencias entre las dos arquitecturas es la manera en que se escalan los servicios. Mientras que, en la informática sin servidor, esto se realiza de manera automática y sin necesidad de intervención manual, en los contenedores es necesario el escalado manual por parte de los desarrolladores.

Control sobre la infraestructura

En la informática sin servidor no se tiene control sobre la infraestructura, esta es gestionada por el proveedor de servicios, mientras que en los contenedores se puede controlar la infraestructura, lo que permite una mayor flexibilidad a la hora de optimizar y personalizar el entorno.

Costes

Como ya se ha comentado anteriormente, los contenedores están activos las 24 horas del día, esto implica que, aunque no se estén utilizando, el proveedor del servidor va a seguir cobrando esos tiempos muertos, lo que supone un aumento de costes. En cambio, la informática sin servidor solo es pagada por uso, esos tiempos muertos donde nadie esté utilizando los servicios no se cobrarán, abaratando en cierta medida el coste total.

Realización de pruebas

A la hora de realizar pruebas encontramos otra de las grandes diferencias entre ambas arquitecturas. Mientras que los contenedores pueden ser probados de manera local con facilidad gracias a su gran portabilidad, la informática sin servidor presenta un reto, ya que, es difícil replicar en local el entorno en el que se ejecutan, por esto, muchas veces, suelen realizarse las pruebas en la nube, aumentando así la complejidad a la hora de realizar esta tarea.

¿Qué similitudes comparten la informática sin servidor y los contenedores?

A la hora de buscar similitudes entre ambas arquitecturas cabe destacar su enfoque y funcionamiento. Ambas están preparadas para utilizarse en la nube y para que implementarlas y actualizarlas sea una tarea eficiente y ágil. Esto se consigue gracias a la modularidad de ambas arquitecturas, que divide las aplicaciones en varios componentes más pequeños que pueden manejarse de manera individual.

¿Qué elegir, por qué y uso conjunto?

Llegados a este punto ya habiendo destacado los puntos fuertes de cada arquitectura se nos plantea una pregunta: ¿qué arquitectura tengo que elegir?

La respuesta a esta pregunta es simple y a la vez compleja: depende.

Depende de lo que busques a la hora de desarrollar el proyecto. Hay que analizar las características y los requisitos del proyecto y decidir en base a ello.

¿Tu proyecto va a tener tiempos muertos y buscas ahorrar en costes y despreocuparte de la gestión de la infraestructura? La informática sin servidor es la respuesta.

Serverless computing vs containers

Ejemplo de una arquitectura serverless genérica

¿Tu proyecto es complejo, necesita de gran portabilidad y además buscas tener el control sobre la infraestructura? Los contenedores son la respuesta.

Serverless computing vs containers

Ejemplo de una arquitectura basada en microservicios y contenedores genérica

Aunque parezca que haya que tomar una decisión a la hora de elegir una arquitectura frente a la otra, esto no es así, también existe la posibilidad de usarlas conjuntamente. Por ejemplo, en un proyecto no todas las partes se usan la misma cantidad de tiempo, no tienen por qué escalarse de la misma manera e igual incluso implementarlas con funciones es demasiado complejo. Este caso podría indicarnos que la mejor solución sería utilizar una arquitectura híbrida, se podrían utilizar contenedores para gestionar las secciones más complejas y difíciles de implementar y utilizar la informática sin servidor para las secciones más sencillas y que presenten un gran cambio de uso a lo largo del día, evitando así la gestión del escalado y ahorrando costes en los tiempos muertos.

Si algo tiene que quedar claro, es que no hay una arquitectura mejor que la otra, simplemente son arquitecturas diferentes y cada una de ellas se defiende mejor en un entorno determinado.

En hiberus podemos ayudarte a mover tu empresa hacia a una arquitectura de microservicios con un sistema basado en eventos puesto que contamos con un equipo de expertos en microservicios con la capacidad de analizar y aconsejarte acerca de las mejores opciones para ti y para tu empresa.

¿Quieres más información sobre nuestra área de Microservicios?

Contacta con nuestro equipo de Microservicios

    1 posts

    Sobre el autor
    Diseñador de software en hiberus
    Artículos
    Artículos relacionados

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    ¡No te pierdas nada!

    Te mantenemos al dia de tendencias y novedades sobre el futuro del trabajo, formas de hacer crecer tu negocio, liderazgo digital y muchas cosas más..

    Newsletter