BLOG

Los contenedores están cansados de ser encasillados.

Miniatura de Lori MacVittie
Lori MacVittie
Publicado el 9 de enero de 2017

Acción de Gracias y… pavo. Navidad y… árboles. Contenedores y…. microservicios.

Si la primera palabra que pensaste para cada uno de estos coincide con mis expectativas, entonces has sido víctima de la sobreasociación en el mercado tecnológico actual. Existe una tendencia a mencionar inmediatamente los microservicios junto con los contenedores en casi cualquier discusión centrada en uno u otro. Esto se debe en parte a que los microservicios, un enfoque arquitectónico para descomponer aplicações en servicios enfocados y ágiles, se adapta bien a la naturaleza ágil de los modelos de implementación basados ​​en contenedores. Pero no olvidemos que los contenedores son una tecnología en sí mismos. Existieron mucho antes de que los microservicios fueran un destello arquitectónico en el ojo de alguien y no están limitados a ser beneficiosos para las implementaciones de aplicaciones basadas en microservicios.

Tenga en cuenta este dato de Enterprise Development Trends 2016 , una encuesta a 2100 desarrolladores de JVM de la que Lightbend (el orgulloso proveedor autodenominado de la plataforma de desarrollo de aplicação reactivas líder en el mundo) extrajo una serie de conocimientos sobre la nube, los contenedores y los microservicios. Curiosamente, mientras que la mayoría (59%) busca contenerizar aplicações completamente nuevas, el 41% apunta a “ aplicações existentes” para su contenedorización.

objetivos de contenedor

Esto no es ninguna anomalía. Un salto rápido a una encuesta realizada en agosto de 2016 por Mesosphere a 500 usuarios de Mesos descubrió que el 51 % ejecuta aplicações monolíticas y heredadas en Mesos. El 85% ejecuta, tal vez como se esperaba, arquitecturas de microservicios.

Los contenedores claramente no son solo para aplicaciones nuevas, sino que se están aprovechando como un medio para permitir que las aplicações heredadas y monolíticas disfruten de muchos de los beneficios de los contenedores, como la portabilidad, la escala rápida y un mejor ajuste con las operaciones impulsadas por DevOps. Después de todo, nos prometieron portabilidad sin fricciones, pero lo que obtuvimos fueron largos tiempos de re-imagen debido a que cada proveedor de nube pública estandarizó un formato de imagen diferente. Mantener múltiples imágenes de oro (una por entorno, por rama menor, por rama principal... bueno, ya entiendes la idea) se convirtió en una pesadilla operativa. A los contenedores, como al tejón de miel, no les importa. Pasarán de un sistema operativo a otro, de una máquina virtual a máquina virtual, de una nube a otra. Son una de las mejores formas que se han ofrecido hasta ahora para permitir el nirvana de la migración a la nube sin inconvenientes y con costos reducidos en un abrir y cerrar de ojos (eso son aproximadamente 400 ms para quienes llevan la cuenta).

Aún así, no encasillemos a los contenedores como una tecnología de “nube”. Si bien sin duda permite muchas de las portabilidades largamente promocionadas pero rara vez realizadas entre proveedores de nube, no está restringida a la nube o incluso a entornos similares a la nube. Los contenedores ciertamente se están utilizando “en la nube”, como lo señala el reciente informe de Sumo Logic en el que encontró que el 15% de las aplicaciones examinadas utilizan Docker en producción. Pero eso no significa que los contenedores no se estén usando en otros lugares, como en las instalaciones locales. De hecho, el informe de Mesosphere antes mencionado señaló que casi la mitad (45 %) de sus usuarios son “solo locales” y la mayoría se divide entre “híbridos” y “solo en la nube”. Curiosamente, también se descubrió que “las empresas más grandes (aquellas con 500 o más empleados) tenían más probabilidades de operar localmente”.

 

 

clip_image001

Mira, los contenedores son una opción de implementación interesante que, cuando son respaldados por soluciones de orquestación de contenedores (como Docker, Docker Swarm, Mesos y Marathon, Kubernetes, etc.), proporcionan un entorno muy ágil en el cual implementar y escalar aplicações hacia arriba y hacia abajo de manera automática. Se trata de un entorno de micronube, o al menos similar a una nube, que se puede implementar en una nube pública, una nube privada o sin ninguna “nube” involucrada. Los contenedores se pueden utilizar para implementar y escalar aplicaciones monolíticas, aplicaciones modernas, aplicaciones basadas en microservicios y API. Son altamente flexibles porque su objetivo es normalizar la capa del sistema operativo de tal manera que las aplicaciones no estén estrechamente acopladas al entorno.

Los contenedores son, para ser concisos, una capa de abstracción que permite que las aplicaciones sean como tejones de miel y “no se preocupen” por detalles de nivel inferior. Cuando se monitorea y administra mediante soluciones de orquestación de contenedores, esa abstracción permite una escala automática hacia arriba y hacia abajo, hacia adentro y hacia afuera, de maneras que brindan mayor eficiencia de recursos en toda la infraestructura de aplicaciones.

Si bien los contenedores, los microservicios y la nube pueden ser muy buenos amigos, cada uno es una entidad individual que puede valerse por sí sola. Cada uno ofrece beneficios que son complementarios y, a veces, me atrevo a decir, sinérgicos con los demás. Pero no encasillemos a los contenedores en el estrecho molde de “solo” para microservicios y “solo” para la nube.

Los contenedores están cansados de ser encasillados. Permítales probar una variedad de roles en sus arquitecturas y podrá descubrir que son más que capaces de desempeñar un papel principal en cada una de ellas.