Tal y como los grandes barcos de transporte utilizan contenedores para organizar, acceder y entregar sus mercancías de forma más fácil y eficiente, el mundo del software empresarial (en especial desde la aparición de la nube híbrida) recurrió a una tecnología análoga: la virtualización basada en contenedores, también conocida simplemente como contenedores.
Los contenedores de software son ambientes de ejecución livianos que proveen a las aplicaciones con los archivos, variables y librerías que necesitan para operar. Se utilizan para garantizar que una aplicación se ejecute correctamente cuando cambie su entorno, con una reducción al mínimo de las fallas posibles y una maximización de su portabilidad. Los contenedores se asemejan a la virtualización clásica, aunque funcionan en un plano más bajo: mientras que las máquinas virtuales tradicionales habilitan la virtualización de la infraestructura computacional, los containers permiten la virtualización de las aplicaciones. A diferencia de las máquinas virtuales, los contenedores utilizan el sistema operativo (SO) de su host, en lugar de integrar uno propio.
Al no incluir un SO completo, los contenedores requieren de recursos computacionales mínimos y son rápidos y fáciles de instalar. De esta forma reducen de forma considerable la carga en los servidores y por consiguiente permiten desplegar un número mucho mayor de aplicaciones.
Los contenedores pueden entonces ser desplegados en clúster. Un contenedor individual puede así encapsular componentes únicos de aplicaciones más complejas. Al separar los componentes de esta forma, los desarrolladores pueden actualizar componentes individuales sin retrabajar la aplicación completa.
Una de las características más convenientes que los contenedores habilitan tiene que ver con la visibilidad y el manejo de recursos del hardware. Una aplicación que esté ejecutándose en un sistema operativo común y corriente es capaz de ver todos los recursos de la computadora que lo aloja. Esto incluye capacidad de la CPU, dispositivos conectados, archivos y carpetas, entre otros elementos del hardware. Por otro lado, los programas que corran dentro de un contenedor solo pueden ver la información y dispositivos habilitados para el mismo: la restricción permite un mayor control de recursos por parte de los administradores de Sistemas, un entorno más seguro para arreglos con usuarios múltiples y la posibilidad e escalar los mismos con rapidez.
Pero no todo es de ensueño en el mundo de los contenedores: la flexibilidad es su punto débil, dado que no pueden alojar un SO diferente del que les sirve de host o un kernel distinto. Si el host es Linux, por ejemplo, sus diversas distribuciones funcionan sin ningún problema, pero no un sistema operativo como Windows.
Una de los desafíos más mencionados por las compañías respecto a los contenedores es que no cuentan con almacenamiento persistente, a esto se suma la falta de herramientas de administración de almacenamiento confiables. Ambos elementos sumados se han constituído como una de las principales barreras para la adopción, según una encuesta realizada en 2017.
Por otro lado, la facilidad de despliegue puede resultar en un número demasiado elevado y crecientemente complejo de aplicaciones en contenedores múltiples. La mantención de un buen funcionamiento y administración en ese punto se transforma en un trabajo demasiado arduo para las capacidades humanas. Afortunadamente existe software de gestión de contenedores, que maneja tareas asociadas con la administración de aplicaciones contenerizadas y componentes de aplicación, de esta forma se facilita la operación básica y se asegura la interoperabilidad. Estas características pueden potenciarse si se complementan con una orquestación automatizada de contenedores, apoyada en una estrategia de contenedores completa.
La adopción de contenedores está creciendo a un ritmo muy acelerado en los últimos años. Una encuesta global de 2017 realizada por Portworx.com indicó que 32% de las compañías están gastando $500,000 dólares o más en licencias y tarifas de uso de tecnología de contenedores. La cifra en 2016 era apenas 5%.
Por otro lado, 69% de los encuestados dijeron que su compañía estaba realizando una inversión en contenedores. De esas compañías, el 10% lo está haciendo en cifras tan altas como el millón de dólares.
¿Quiénes son los reyes del mercado? Actualmente Docker se lleva el cetro sin discusión. La herramienta, diseñada para operar sobre Linux pero que ha tenido una fuerte inversión hacia Windows en el último año, nació el 2013 y ha contado con el apoyo de grandes de la industria, como Cisco, Google, Huawei, IBM, Microsoft, y Red Hat. Según una reciente encuesta recopilada por Statista, Docker se lleva una tajada del pastel que alcanza a más del 70%, aunque Mesos Containerizer, rkt y Kubernetes han visto un crecimiento importante desde el 2017.
En cuanto al software de orquestación existe una competencia mayor. La herramienta de Docker, llamada Swarm, también se encuentra alto en la lista, pero es superada por Kubernetes, mientras que Amazon Elastic Container Service ha triplicado su tamaño desde 2017.
Los contenedores como tecnología no van a dejar de crecer ni complejizarse en los proximos años. Las proyecciones más optimistas indican que el 50% de las empresas los utilizarán en 2020, por lo que sin duda serán una de las tendencias que sonarán fuerte en las IT de las empresas mexicanas en el futuro próximo.