English English French French Spanish Spanish German German
Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Contenedores vs Serverless: ¿A quién eliges y cuándo?

Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Tanto los contenedores como los modelos de despliegue y desarrollo serverless son parte de la cultura de tener una arquitectura escalable y disponible de acuerdo al uso de la aplicación. Esto hace que sea difícil elegir entre los dos y eso es exactamente lo que vamos a discutir en esta publicación.

What are containers?

Los contenedores no solo ofrecen la posibilidad de superar algunas limitaciones de la virtualización tradicional sino que sientan las bases para un cambio radical en la forma de entender el desarrollo y ciclo de vida de los servicios.

La idea detrás de los contenedores no nació en el mundo Linux sino que tiene sus raíces en una tecnología conocida como FreeBSD jail, que apareció en el año 2000 y que permite particionar un sistema FreeBSD en subsistemas (jail) aislados entre sí y entre sí para el sistema subyacente extendiendo el concepto de chroot.

Esto se introdujo en el mundo de Linux con el proyecto Linux Vserver y se integró en los años siguientes con nuevas tecnologías, incluidas cgroup, systemd y Linux Kernel Namespace, delineando así el proyecto Linux Container (LXC).

En 2008, con la llegada de Docker, se agregaron nuevas herramientas y nuevas ideas, como la posibilidad de crear imágenes en capas (es decir, resultantes de la fusión de múltiples imágenes) y la introducción del registro de imágenes. Por lo tanto, los proyectos de contenedores en el mundo Linux han recibido un nuevo impulso que llevó al nacimiento de Open Container Initiative, cuyos miembros, incluidos Docker y Red Hat, colaboran para definir estándares abiertos y compartidos para las tecnologías de contenedores.

Con estas premisas y estas herramientas disponibles, es natural cuestionarnos para entender si existen alternativas a la virtualización tradicional.

Más allá de los aspectos más estrictamente técnicos, un contenedor Linux es el conjunto de uno o más procesos aislados del resto del sistema, que:

  • Tener una interfaz de gestión estándar (para iniciar, detener, variables de entorno)
  • Optimizar el uso de recursos con respecto a las máquinas virtuales
  • Simplifique la gestión de aplicaciones más grandes (repartidas en varios contenedores)

La presencia de los estándares propuestos por los organismos de normalización también garantiza la interoperabilidad y la posibilidad de orquestar contenedores incluso entre nubes diferentes.

El concepto de imágenes y la forma de construirlas y agregarlas constituye el aspecto más significativo e innovador, no tanto desde el punto de vista tecnológico, como por el impacto que tiene en el desarrollo y la gestión operativa, con consecuencias que afectan también a la forma de entender el negocio.

Las imágenes son inmutables, esto significa que cada contenedor ejecutado desde la misma imagen es idéntico a los demás, no contiene información de estado ni datos persistentes. La persistencia se confía a otras herramientas como bases de datos externas y sistemas de archivos. Esto determina, en primer lugar, una clara distinción entre el entorno de ejecución de la aplicación y los datos sobre los que opera, introduciendo lógicas de separación funcional que aportan beneficios en términos de limpieza, gestión de procesos y seguridad.

La verdadera innovación en el proceso de desarrollo y en el ciclo de vida de la aplicación radica en que una vez creado un entorno operativo completo y consistente sobre una o más imágenes, separadas de los datos sobre los que opera, será capaz de pasar por todas las fases desde el desarrollo hasta la producción sin sufrir cambios.

What is Serverless?

Los contenedores, aunque permiten una mejor asignación de recursos en comparación con las máquinas virtuales, en realidad no le permiten escalar a cero y crecer linealmente: cuando un contenedor no brinda servicios, aún permanece activo como proceso. Una respuesta a esta necesidad puede venir de enfoques sin servidor.

La asignación de recursos verdaderamente eficiente requiere que todo el poder de cómputo se cree instancias solo bajo demanda y se libere inmediatamente después de su uso.

Google dio los primeros pasos en esta dirección con la introducción de Google App Engine en 2008, pero el verdadero impulso llegó con la introducción por parte de Amazon en 2014 de AWS Lambda, el primer modelo verdadero de FaaS. Posteriormente, se agregaron soluciones alternativas propuestas por otros proveedores: Microsoft con Azure Functions, IBM y Google con sus propias Cloud Functions. El mundo del código abierto también se ha movido en esta dirección con el lanzamiento de productos como Apache OpenWhisk, OpenLambda y IronFunctions.

Fuente: epsagon.com

Computación sin servidor es una de las formas de distribuir servicios en un contexto de nube que implica la ejecución de aplicaciones o, más correctamente, funciones, sin requerir ninguna visibilidad de la infraestructura subyacente: el aprovisionamiento, el escalado y la gestión se realizan de forma automática y lineal solo frente a real peticiones y necesidades. Por lo tanto, el término serverless no debe entenderse como la "ausencia" de servidores, sino como la transparencia de los sistemas involucrados desde el punto de vista de los desarrolladores y usuarios.

Esta característica significa que el Paradigma DevOps, típica en el uso de tecnologías contenerizadas, se abandona para volver a una nueva distinción más clara entre la infraestructura y el componente de aplicación, introduciendo dos nuevos conceptos en el mundo de la nube:

  • Faas (Function as a Service) permite a los desarrolladores tener un entorno de ejecución para sus aplicaciones (ya sean C #, Java, Node.js, Python, etc.) que se instancia solo en respuesta a ciertos eventos.
  • BaaS (Backend as a Service) permite delegar en terceros las funciones típicas de las aplicaciones sin tener que implementarlas personalmente (por ejemplo el caso de servicios como Auth0 que ofrece funciones de gestión de identidad y autenticación).

Hay muchas Marcos sin servidor Disponible en el mercado.

The main difference between serverless and containers

Los contenedores son muy importantes por el impulso que ha ido tomando la arquitectura Serverless, principalmente por incorporar conceptos y la cultura de dejar de usar las viejas máquinas virtuales y servidores clásicos. Todo puede estar alojado localmente o en la nube, sin complicaciones ni complejidad.

La gran diferencia entre una arquitectura sin servidor que utiliza FaaS y contenedores es la falta de preocupación por los procesos que se ejecutan a nivel del sistema operativo. Incluso con servicios como Docker que ofrecen capacidades de abstracción similares a la tecnología de contenedores, especialmente cuando se usan junto con Kubernetes, la arquitectura sin servidor y FaaS permiten un grado aún mayor de este tipo de abstracción en el desarrollo de aplicaciones.

En una arquitectura Serverless que utiliza FaaS, la escalabilidad de la aplicación se gestiona de forma automática y transparente, y además tiene la capacidad de una alta granularidad del servicio para su mejor rendimiento. Las plataformas que usan contenedores necesitan que este aprovisionamiento se gestione manualmente, incluso con herramientas automatizadas.
Al final, el estilo de la aplicación y la infraestructura disponible determinarán cuál de las dos formas de implementación será la mejor utilizada. La arquitectura sin servidor tiene un alto nivel de abstracción de procesamiento del sistema operativo, mientras que los contenedores evolucionan y desarrollan formas de automatizar la escalabilidad y la disponibilidad.

How to choose between serverless and containers?

En este resumen hemos tratado de resaltar cuán radical es la transformación que está sacudiendo el mundo de los servicios TI en los últimos años, redefiniendo infraestructuras, modelos de desarrollo e incluso modelos de negocio.

Sin embargo, lo que puede parecer un proceso evolutivo en el que las nuevas tecnologías están destinadas a sustituir a las anteriores, en realidad es un camino mucho menos lineal: existen y probablemente existirán durante mucho tiempo escenarios en los que cada una de las tres tecnologías será la sólo uno aplicable, otros en los que deberán integrarse y cada uno encontrará su propio espacio.

No todas las cargas de trabajo son portátiles en contenedores: en algunos casos, sería necesario rediseñar y reescribir la aplicación. No es seguro que esto siempre sea posible, por lo que todavía hay situaciones en las que las máquinas virtuales permiten un control del sistema o una flexibilidad que las hace indispensables.

Containers and Serverless Use Cases

Contenedores encuentran su uso ideal en aplicaciones complejas, que requieren un alto nivel de control del entorno operativo, posiblemente con largos tiempos de procesamiento y que al mismo tiempo se prestan a la implementación en un entorno contenedorizado.

Incluso si el uso de los recursos es menos eficiente que un enfoque sin servidor, el rendimiento es mejor en promedio, ya que al menos el primer contenedor siempre está activo y no es necesario instanciarlo desde cero.

El diseño, el desarrollo y la administración pueden ser más simples, ya que la presencia de marcos y estándares compartidos permite la orquestación entre nubes de diferentes proveedores con un escalado mucho más simple que los servidores virtuales.

Por el contrario, en los contenedores, las modificaciones a las funciones individuales requieren la creación y el despliegue de una nueva imagen, con la expansión de los tiempos de liberación y la posibilidad de error. El crecimiento del número de instancias en respuesta al aumento de la carga genera dificultades en el seguimiento y posibles problemas de rendimiento ya que la capacidad de crecimiento siempre está limitada por la velocidad de los componentes que garantizan la persistencia de los datos.

Un ejemplo típico de uso puede ser un gran sitio de comercio electrónico que consta de numerosas partes, como la lista de precios, gestion de almacenes, y pagos, cada uno de los cuales puede empaquetarse en un contenedor para el cual el tiempo de ejecución y los límites de memoria no constituyen un problema.

El enfoque sin servidor puede ser ideal en un contexto de microservicios y en escenarios, como el IoT, donde ciertas funciones deben invocarse solo cuando ocurren eventos específicos y no ser parte de un servicio siempre activo.

Al ser un modelo estrictamente de pago por uso, permite la optimización de costes, especialmente en los casos en los que es difícil proceder con un dimensionamiento a priori o predecir la carga a la que habrá que hacer frente.

La dificultad de diseño y la ausencia de estándares, que en muchos casos determina el problema del lock-in de proveedores, todavía constituyen una fuerte limitación del campo de uso.

Palabras finales

En resumen, ninguna tecnología es mejor que otra en un sentido absoluto: cada una responde a necesidades específicas. Pueden coexistir e integrarse, según sea necesario, en un solo proyecto. Por lo tanto, el mejor enfoque no es decidir un camino previo para el desarrollo de sus aplicaciones, sino comenzar con un análisis cuidadoso de las características y requisitos para elegir la arquitectura más adecuada.

Gracias a nuestros patrocinadores
Más lecturas excelentes sobre computación en la nube
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Trata Intruder