Llegamos a ustedes gracias a:



Reportajes y análisis

Desempacando los contenedores

Kubernetes vs Docker Swarm versus Mesosphere DC/OS

[15/01/2018] El mercado de contenedores se encuentra en un período de feroz competencia, y con Kubernetes respaldado por Google separándose un poco del resto, nos preguntamos si el espacio naciente sigue siendo un mercado mixto con mucho espacio para la competencia.

En resumen, los contenedores de aplicaciones pueden incluir componentes de tiempo de ejecución desde la seguridad hasta la supervisión, la red de orquestación y el almacenamiento, básicamente el código requerido para ejecutar y modificar un software, en un solo paquete, independientemente de la infraestructura en la que se encuentre.

Si eso les recuerda a las máquinas virtuales o MVs, no está solo: aquí, Google explica la diferencia entre los contenedores y las máquinas virtuales: "En lugar de virtualizar la pila de hardware como con el enfoque de máquinas virtuales, los contenedores virtualizan en el nivel del sistema operativo, con múltiples contenedores ejecutándose directamente sobre el núcleo del sistema operativo. Esto significa que los contenedores son mucho más livianos: comparten el núcleo del sistema operativo, comienzan mucho más rápido y usan una fracción de la memoria en comparación con arrancar un sistema operativo completo".

Estos contenedores se organizan luego usando una plataforma de orquestación, como Amazon ECS, Docker Swarm, Mesosphere DC/OS, HashiCorp Nomad y los extremadamente populares Kubernetes.

Una plataforma de orquestación le permite organizar e implementar contenedores, así como automatizar procesos dentro y alrededor de ellos.

¿De dónde vienen los contenedores? ¿Quién los está utilizando y por qué?

Todas las organizaciones, desde los emprendimientos hasta las grandes empresas, están experimentando con contenedores, o haciendo que se ejecuten en producción. Diríjase a este post en AquaSec para obtener una historia concreta de contenedores, desde los días de Unix hasta la explosión de su uso cuando Docker entró en escena en el año 2013.

Los contenedores van de la mano con las prácticas de desarrollo continuo, agile y devops. Esto se debe a que, en resumen, permiten a los desarrolladores hacer mucho más con menos recursos, y llevar rápidamente cambios o actualizaciones a las aplicaciones en pruebas o producción.

Aunque la sabiduría recibida dice que las empresas más grandes son más lentas en adoptar nuevas tecnologías, en realidad han sido las grandes empresas las que impulsan la adopción de contenedores.

La popular plataforma de contenedores de código abierto Kubernetes (conocida como K8s para abreviar) provino de los propios laboratorios de Google, primero como el proyecto interno Borg para la gestión de clústeres.

De hecho, gran parte del desarrollo de los contenedores se debe a las contribuciones de la comunidad de código abierto.

Sin embargo, ciertas plataformas de contenedores han sido comercializadas por proveedores especializados. Por lo tanto, vale la pena diferenciar entre la tecnología de contenedores y la empresa de contenedores.

Por ejemplo, Docker es 'el negocio', que ofrece soluciones como Docker Enterprise Edition, pero también existe la Edición comunitaria de Docker de forma gratuita.

Del mismo modo, la empresa propietaria Mesosphere abrió su sistema operativo Datacenter (DC/OS). Pero Mesosphere también ofrece una edición empresarial con características adicionales.

Para complicar las cosas, hay una gran cantidad de polinización cruzada entre los principales jugadores de contenedores. Por ejemplo, verá la integración de DC/OS con Kubernetes, y Docker anunció a principios del año pasado la integración de Docker Swarm con Kubernetes.

Una publicación útil en el blog de Mesosphere explica la decisión de la empresa: lo esencial es que es algo así como manzanas y naranjas para ver las distintas plataformas de contenedores a través de una lente adversaria, porque la realidad para el desarrollador y los equipos de operaciones es que podrían estar usando cualquier combinación de software de contenedor.

Eso no quiere decir que estas plataformas no compitan. De hecho, la competencia es feroz.

Visión general del mercado

El espacio contenedor es un mercado relativamente incipiente y se pueden realizar comparaciones tanto sobre la evolución de la nube hacia la nube híbrida, como con la forma en que las MV y los proveedores de MV se abren al soporte multiplataforma.

La administración de sistemas de uso mixto no es un fenómeno nuevo dentro de las organizaciones grandes. Jay Lyman, analista principal de 451 Research en desarrollo, devops y operaciones de TI, se remonta a los días de HP, IBM, BMC y CA hace 10 años.

"Era común ver más de uno implementado en una gran empresa", anota Lyman. "En parte por razones técnicas y en parte por el hecho de que se trata de grandes organizaciones, con quizás cientos o miles de divisiones. No es realista que cada equipo de tecnología, cada equipo de desarrolladores, o cada línea de negocios utilice la misma tecnología".

Lyman compara el mercado de los contenedores con la nube pública de hace unos años: "Escuchamos que Amazon era el único que importaba, y ese no es el caso hoy en día: los vemos compitiendo muy intensamente, Microsoft con Azure, Google Cloud, Alibaba, podría decirse que incluso IBM y Rackspace.

"Al igual que vemos que el uso de la nube híbrida con la nube pública y privada y los entornos en las instalaciones sigue siendo relevante, sucede lo mismo con la gestión de contenedores y la orquestación", indica el ejecutivo.

Dicho esto, Kubernetes actualmente cuenta con el mayor respaldo de los proveedores.

Según una investigación reciente de 451, hay más de 30 proveedores que respaldan a Kubernetes. Docker Swarm y Apache Mesos / Mesosphere DC/OS están en el segundo nivel, con soporte de proveedores de "un poco más que una docena de seguidores cada uno", según Lyman. "Entonces los más pequeños, Rancher y HashiCorp, tienen entre una docena y 20 o más seguidores de proveedores".

En resumen: "Es un ambiente mixto: nada está matando a nada; escuchamos cómo Kubernetes va a matar a Docker -he visto eso, y es como: bueno, probablemente no", señala Lyman.

El analista y vicepresidente de investigación de Gartner, Richard Watson, señala que la integración de Docker con Kubernetes debería alejar a los proveedores de una "discusión técnica de casillas de verificación".

"Obligará a que algunos proveedores como Red Hat, SUSE, Canonical y otros en ese espacio mejoren su juego", anota Watson, y agregó que la integración de Kubernetes en todos los ámbitos permitirá a los proveedores desarrollar mejor sus ofertas.

"Red Hat tendrá su estilo, Docker tendrá su estilo, y podrán competir más en esas cosas en lugar de quién ofrece qué", añade Watson.

OK, ¿cuál es la diferencia?

Kubernetes: Lyman de 451 señala que la aparición de Kubernetes ocurrió al mismo tiempo que se hacían más comunes las estrategias de nube híbrida.

Kubernetes es un "marco de aplicaciones distribuidas", por lo que en ese sentido es más que solo un software de administración y organización de contenedores: está destinado a aplicaciones distribuidas, con dependencias distribuidas y que se ejecuta en una infraestructura distribuida. "Eso lo equipara con la nube híbrida", señala.

"Creo que parte del motivo por el que Kubernetes ha tenido tanto impulso, y la razón por la que es un líder claro, es que representa contenedores en ejecución y clústeres de contenedores a gran escala, a escala masiva, a escala de Google", explica Lyman.

El resultado de esto es que Kubernetes tiene una "comunidad de software de fuente abierta bastante vibrante" con un montón de soporte de proveedores, pero también usuarios empresariales a gran escala que aportan código a Kubernetes, aprovechándolo a escala. Por otro lado, se percibe a Kubernetes como particularmente complejo, y podría haber mucho que aprender para las organizaciones que ya luchan por contratar personal calificado.

Kubernetes también cuenta con herramientas de monitoreo y registro desde el principio. Google integró el software de tiempo de ejecución de contenedores de CoreOS Rkt en el 2015, trayendo a Kubernetes la capacidad de ejecutar contenedores Linux sin depender de Docker.

Docker Swarm: La principal ventaja de Docker Swarm es que es un lugar más simple para comenzar que Kubernetes. "Hay menos complejidad y falta de habilidades que obtienes con Kubernetes", anota Lyman.

"Creo que la gran ventaja de Docker Swarm es que el software de gestión de contenedores Swarm está integrado de forma nativa con el software de tiempo de ejecución del motor de contenedores, con Docker", agrega. "Es una buena integración para los clientes: si sus desarrolladores recién están comenzando, está integrada con el motor, por lo que tiene sentido usar esas capacidades.

Swarm es también la segunda opción del mercado más compatible con los proveedores.

Richard Gall, de la imprenta bajo demanda y defensora del código abierto, Packt, cree que tiene sentido que las empresas elijan Docker Swarm sobre Kubernetes si quieren ponerse en marcha rápidamente. "Si necesita una solución de orquestación de contenedores ahora, es probable que la simplicidad sea un factor importante en su toma de decisiones", anota Gall.

En términos de desafíos, existe la percepción de que Docker Swarm no es tan capaz de llegar a la misma escala masiva que Kubernetes.

Mesosphere DC/OS: Una gran ventaja para Mesosphere DC/OS es la conexión existente con aplicaciones de big data, por lo que ya se abrió paso en las organizaciones antes que en contenedores, para administrar marcos de big data como Hadoop, Spark o Hakka.

Entonces, Mesos tuvo la ventaja de ser el primero en moverse, aunque Lyman cree que "muchas de las organizaciones que lo tienen en práctica buscan migrar y estandarizarse a Kubernetes, pero eso tomará algo de tiempo".

La plataforma de orquestación de contenedores de código abierto Marathon ofrecida por Mesosphere para Mesos y DC/OS ayuda a los contenedores Mesos y Docker.

Casos de uso

Royal Caribbean recurrió a Mesosphere DC/OS en septiembre del 2017 para implementar un conjunto de aplicaciones a bordo de su flota global de más de 40 barcos.

Ahora descrito como 'uno de los sistemas distribuidos flotantes más grandes del mundo', Royal Caribbean enfrentaba un ancho de banda limitado en el mar, extendía el soporte de TI y requería la funcionalidad de su centro de datos "sin los datos adecuados", escribe Mesosphere en este estudio de caso: Una presentación de Royal Caribbean.

La empresa necesitaba una plataforma para organizar los servicios de contenedores y datos a escala, y encontró que Mesosphere DC/OS era la mejor opción para mantener los sistemas sincronizados con los datos accesibles en tiempo real entre el barco y la costa, a pesar de la conectividad limitada.

De vuelta en tierra, Finnish Railways optó por asociarse con Accenture para crear una nueva plataforma común de aplicaciones utilizando Docker Enterprise Edition (Docker EE, por sus siglas en inglés) como parte de su programa de modernización. El ferrocarril estatal, que opera más de cinco mil millas de vías en total, anteriormente tenía equipos aislados que funcionaban en infraestructura heredada con hasta 20 proveedores entre ellos.

Cuando la organización comenzó a actualizar su sistema de reservas heredado, comenzó a reescribir las aplicaciones con microservicios, y pasó de plataformas propietarias a componentes de código abierto, y desde la implementación de Docker EE, los desarrolladores comenzaron a migrar aplicaciones existentes a Docker, con el objetivo final de la estandarización en Docker.

Markus Niskanen, gerente de integración de Finnish Rail, señala que esto dio como resultado un ahorro de tiempo y una reducción de costos tangibles. "Ahora que hemos utilizado la arquitectura de contenedores, podemos obtener más capacidad que antes. Podemos empacar más aplicaciones en la misma capacidad que antes", indica Niskanen.

Sin embargo, eso no quiere decir que todo estuvo bien. "No hace falta decir que esta forma de operar es bastante lenta y propensa a errores", anota. "Los desarrollos tardan por lo menos horas y si algo sale mal aún más. Se necesita tiempo y dinero. Mucho de esto. Y todo esto nos aleja del desarrollo de cosas nuevas", añade.

Nube pública

La nube pública, por supuesto, está de moda, con la ventaja de poder escalar la potencia de cálculo muy rápidamente, y ejecutar instancias de prueba y producción con solo presionar un botón.

No es de extrañar entonces que los "tres grandes" proveedores admitan todos los contenedores en ejecución y la organización de contenedores en sus plataformas, con Kubernetes que ahora es compatible con AWS, Azure y Google Cloud.

AWS: Los clientes habían estado implorando por la integración de Kubernetes con Amazon Web Services (AWS) desde hace algún tiempo, y el gigante de la computación en la nube finalmente lo entregó en su conferencia re: Invent en noviembre del 2017.

Amazon ejecuta dos modelos de precios para su propio servicio Elastic Container. Existe el modelo de Fargate recientemente lanzado, donde pagará los recursos de vCPU y memoria que solicite su aplicación de contenedor, redondeados al segundo más cercano y con un cargo mínimo de un minuto. Luego está el modelo de lanzamiento EC2 en el que paga los recursos de AWS (instancias EC2 o volúmenes EBS) que crea para almacenar y ejecutar su aplicación.

Google Cloud Platform: Google Compute Engine, según la compañía, puede ejecutar casi cualquier tecnología o herramienta de contenedor, incluidos Docker y, por supuesto, Kubernetes. El proveedor ofrece un tutorial completo sobre cómo lanzar Docker Swarm en Google Compute Engine, hecho por Romin Irani.

En noviembre pasado, Google eliminó los precios fijos por hora por cada grupo e introdujo los precios de instancia por nodos en el clúster, por lo que los clientes pagarán por cada uno de ellos hasta que se eliminen. Aquí hay una calculadora y los recursos de Compute Engine se ejecutan por segundo a un costo de uso mínimo de un minuto.

Microsoft Azure: Microsoft creó Docker Swarm para el Azure Container Service disponible a mediados del 2016, utilizando el stack de Docker y es compatible con todas las herramientas compatibles con Docker para administrar aplicaciones en Azure Container Service.

La idea era proporcionar una plataforma "nativa de Docker" con la misma base de código abierto que Docker Universal Control Plane. Ahora Microsoft se jacta de que Docker tiene una "integración profunda" con Azure, de modo que existen todos los beneficios de Docker con la infraestructura nativa de Azure, sin configuración adicional.

Conténgase

Volviendo a las similitudes del enfoque de la organización con respecto a la nube, las tecnologías de contenedores que elija para su organización dependerán de las cargas de trabajo que esté realizando y de la configuración de la infraestructura existente de su empresa.

Una organización intrigada por los servicios de contenedores probablemente haría lo mejor en seguir el ejemplo del desarrollador y los equipos de operaciones: ¿cómo se ve la infraestructura actual? ¿Qué hay de la red de producción? ¿Qué cargas de trabajo son las más adecuadas para qué?

¿Ya se está ejecutando un entorno de varias nubes? Confíe en sus desarrolladores y equipos de operaciones para elegir las tecnologías de contenedores más adecuadas para cada nube que está ejecutando. Si confía su nube pública a un solo proveedor, ahora existen las opciones tanto para AWS como para Azure, ya sea aprovechando DC/OS, Docker o Kubernetes.

Markus Niskanen, de Finnish Railway, señala que, en su opinión, todas las empresas deberían por lo menos investigar la posibilidad de adoptar contenedores.

"Si no lo hacen, probablemente lo lamentarán más tarde", anota. "Los contenedores no son uno de esos sueños exagerados, sobrevalorados, evangelizadores de cualquier otra tecnología; son reales y pueden marcar una gran diferencia en su organización".

Pero en última instancia, dependerá de la hoja de ruta a largo plazo de su organización, hermanada con el estado actual de su arquitectura y el desarrollo de aplicaciones.

"En Finnish Rail, hace un par de años decidimos ir con contenedores y estamos cosechando los beneficios de esa decisión ahora y aún más en el futuro", señala Niskanen. "También tenemos otros tipos de soluciones, pero los contenedores y Docker EE serán la columna vertebral de nuestra arquitectura. Solo debe tener en cuenta que los contenedores no son la solución ideal que siempre deba usar, sino una herramienta muy poderosa en su caja", añade.

Jay Lyman de 451 Research está de acuerdo en que es mejor no adoptar un enfoque totalmente descendente. "No es bueno decir: 'oh, vamos a usar esto'", comenta Lyman. "Las organizaciones intentan estandarizarse, y sobre todo en Kubernetes, con el software de orquestación de gestión de contenedores.

Añadió que es probable que el mercado experimente una coexistencia competitiva durante algún tiempo. "Continuarán coexistiendo, incluso dentro de la misma organización, y todos se apoyarán entre sí", finaliza Lyman.

Puede ver también