Containers: “ready or not here we go”

Containers: “ready or not here we go”

Llevaba un tiempo sin estar en proyectos finales con clientes y una de mis sensaciones era que estaba dejando pasar proyectos tecnológicamente punteros, por no estar en esa primera línea de batalla. Sin embargo, la realidad que me he encontrado en los últimos meses no es esa, en el montante actual y salvo gloriosas excepciones, muchas empresas siguen poniendo las mismas barreras a la hora de usar los servicios cloud que hace diez o quince años ponían a la hora de virtualizar su centro de datos.

En concreto me ha sorprendido la baja adopción que he podido encontrar en empresas de España y Portugal en el uso concreto de contenedores como elemento de infraestructura en el que sustentar sus entornos de producción.

Si miramos al mercado y el estado del arte en cuanto a lo que contenedores ser refiere, la tendencia más extendida hoy en día en el mercado se centra en el uso de Dockers para la creación de los contenedores y Kubernetes para la gestión de estos. Aquí la pregunta que siempre sale a la hora de implementar un proyecto con nuevas necesidades de infraestructura es siempre más o menos la misma, ¿cuándo es mejor el uso de contenedores?, ¿es mejor opción a la hora de desplegar o crear nuevas aplicaciones o adaptar las aplicaciones ya existentes a otra realidad?.

Particularmente para este caso y para otros en los que hay un cambio de tecnología, mi pensamiento es casi siempre el mismo, usa tecnología diferente para proyectos nuevos y mantén una posición más conservadora en los proyectos en curso. Siempre me ha parecido mucho más difícil adaptar algo existente a una nueva realidad, que crearlo de cero para esa nueva realidad o contexto tecnológico. Las expectativas de los usuarios de la misma (en este caso el Sysadmin o similar) a la hora de administrar un nuevo entorno, sigue siempre más o menos el mismo patrón. El pensamiento generalizado es que su vida va a ser más fácil gracias a la nueva pieza tecnológica, pero si no se tienen en cuenta todas esas variables bien analizadas, una vez los problemas empiezan a aparecer y siempre aparecen en mayor o menor medida, las expectativas elevadas de nuestro usuario final se convierten en un doble filo de navaja y lo que antes era un escenario muy positivo pasar a ser lo diametralmente opuesto en menos que canta gayo.

Qué son y para qué sirven los contendores

Muchas empresas piensan en usar los contenedores como sustento tecnológico que apoye la puesta en marcha de proyectos Agile o de DevOps para dotar a su infraestructura de la agilidad necesaria. ¿Pero qué son los contenedores y cómo pueden resolver el problema de simplificar el ciclo de vida de nuestras aplicaciones?

Los contenedores permiten que el software se ejecute de forma segura independientemente de la máquina donde este corriendo. El contenedor es capaz de encapsular la aplicación, más todas sus dependencias (bibliotecas, archivos de configuración) agrupados en una sola imagen portátil.

La siguiente pregunte es evidente, ¿qué diferencia hay en el uso de una máquina virtual y un contenedor?

  • Una de las principales ventajas en el uso de los contenedores es que permite desacoplar la aplicación y sus dependencias de la infraestructura subyacente. Permitiendo eliminar los problemas causados por las diferencias en las distribuciones del sistema operativo y la infraestructura subyacente.
  • Los contenedores son apropiados en varios casos de uso del mundo real. Por ejemplo, los contenedores permiten una migración relativamente fácil de cargas de trabajo desde entornos dedicados o proveedores de servicios públicos. Cosa que a día de hoy no esta del todo resuelta para las máquinas virtuales.
  • Dado que los contenedores proporcionan aislamiento de la carga de trabajo al compartir el sistema operativo, permiten a los administradores del sistema ejecutar varias versiones de una aplicación en el mismo servidor sin interferencias.
  • Además, los contenedores son una pieza de software mucho más ligera que la máquina virtual, lo que permite que el escalado de los mismos sea sencillo y fácilmente compatibles con los proyectos de CI/CD y los entornos de prueba automatizados para dar sustentar los proyectos Agile de desarrollo de software

Recomendaciones para el despliegue de contenedores

Antes de embarcarse en cualquier nuevo proyecto tecnológico es recomendable analizar los pros y contras, así como un análisis de riesgos asociado al mismo. Para este tipo de proyectos, Gartner recomienda cuatro puntos de control a evaluar antes de iniciar cualquier proyecto de despliegue de contenedores.

  1. Gestión del cambio y análisis de habilidades: La adopción de contenedores en la empresa no puede ser propiedad del equipode operaciones e infraestructura, ya que este tipo de proyectos requieren mucho tiempo y pueden ser costosos, llevar a buen puerto este tipo de proyectos requiere de la involucración inicial de otras áreas como son  seguridad, infraestructura y operaciones, redes y desarrollo de aplicaciones. Igualmente la capacitación de estos profesionales en la nueva forma de administrar la tecnologia es un punto critico de exito de este tipo de proyectos.
  2. Despliegue como código de la infraestructura: Las implementaciones de contenedores requieren automatización y administración a través de interfaces de línea común (CLI) o interfaz de programación de aplicaciones (API). De este tipo de proyectos de IaC (Infraestructura como código) ya hable hace unas semanas de este tema, puedes encontrar más detalle en mi post sobre, IaC.
  3. Fijación de objetivos multinivel: Para medir con éxito el valor comercial de los contenedores, que solamente es una pieza tecnologíca adicional, las organizaciones deben establecer objetivos realistas. Deben desarrollar objetivos primarios y secundarios y evitar enfocarse en proyectos de iniciativas de bajo impacto.
    • Los objetivos principales son aquellos que idealmente se desea lograr como resultado directo del proyecto, como pueden ser: eficiencias y ahorros en el presupuesto, mejora del TTM (Time To Market),etc.
    • Mientra que los objetivos secundarios, pueden ser el plan B frente a una desviación del proyecto, y te permiten ser realizados con un esfuerzo minimo adicional como: el ahorro de licencias, reducción del cosye de operación de infraestructura, etc.
  4.  Seleccionar aplicaciones candidatas: Este paso final consiste en seleccionar cuidadosamente qué aplicaciones son candidatas para el proceso de refactorización o decidir si frente a un nuevo proyecto se debe implementar una nueva aplicación en contenedores o en otro tipo de infraestructura. Una vez determinado, evaluar las habilidades de los equipos, formarlos en las nuevas herramientas para permitir a los desarrolladores y operadores predecir posibles dificultades en el proyecto y adecionalmente sentirse más cómodos a la hora de evaluar nuevas personas que se puedan incorporar al proyecto.

Mercado y oportunidad

El uso de contenedores puede ayudar a las empresas a modernizar las aplicaciones heredadas y crear nuevas aplicaciones nativas de la nube que sean tanto escalables como ágiles.

Además, el ecosistema de contenedores actual es inmaduro y siguen anunciando múltiples compras y adquisidores entre los diferentes actores de este, como ya comentaba al comiendo de este post lo que parece que se está cada vez más evidente es que la tendencia del mercado posiciona a Docker como contenedor preferido del mercado y Kubernetes como sistema de gestión de estos.

Según Gartner, sus previsiones para 2020 vaticinan que más del 50% de las organizaciones mundiales lanzarán aplicaciones en contenedores en producción, en comparación con el 20% actual. El mercado de contenedores de aplicaciones se puede comparar con el mercado de OpenStack, ya que ambos se basan en software de código abierto y cuentan con la participación de nuevas empresas y proveedores establecidos. Ambos mercados han experimentado un crecimiento relativamente rápido durante los últimos años.

Este tipo de proyectos y su paso a producción todavía tienen una curva de aprendizaje abrupta debido a la inmadurez tecnológica y la falta de conocimientos operacionales de los equipos. Sin embargo, estos dos mercados son todavía emergentes según el número de proveedores actuales y los aún emergen, según 451 Research los contenedores pueden tener un impacto más amplio en el mercado que OpenStack.

Según la casa de analístas el mercado de OpenStack tenía un tamaño global de1.8 billones de dólares en 2016 y se espera que crezca hasta los 5.8 billones de dólares en el 2020 (lo que muestra un CAGR de 35 %). Mientras que la adopción empresarial de contenedores y la madurez del mercado parece estar ocurriendo más rápidamente que OpenStack y otras tendencias adyacentes, como los servicios PaaS y DevOps.

Miestras que por otro lado, el mercado de contenedores crecerá mucho más rápido en comparación con otros ya comentados, con una tasa de crecimiento acumulada (CAGR) estimada de 40% hasta 2020. 

Los segmentos de gestión y orquestación de contenedores -donde existe una competencia intensa, innovación e interrupción- ya han experimentado cierta consolidación, incluida la adquisición por parte de Apprenda de Kubernetes backer Kismatic, y la adquisición por Cisco de Docker Swarm, seguidor de ContainerX.

Deja un comentario

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