Piense dentro de la caja: casos de uso, ejemplos y aplicaciones de contenedores

Grúa elevando un contenedor de carga naranja junto a pilas de contenedores de carga azules.

La gestión de contenedores recorrió un largo camino. Durante décadas, la gestión de entornos en contenedores fue un asunto relativamente sencillo. La idea moderna de un contenedor informático apareció originalmente en la década de 1970, y el concepto se empleó por primera vez para ayudar a definir el código de la aplicación en los sistemas Unix.

La tecnología moderna de contenerización avanzó de manera constante desde esos inicios, y cuando las compañías ejecutan contenedores ahora, obtienen mucha más utilidad por su inversión. Desde pequeñas compañías emergentes hasta grandes compañías establecido, los marcos de contenedores demostraron ser extremadamente capaces de generar flujos de trabajo estables con tiempos de ejecución optimizados y entrega continua.

¿Qué es un contenedor?

Los contenedores son unidades ejecutables de software donde el código de aplicación se empaqueta con sus bibliotecas y dependencias. Están empaquetados de manera estandarizada para que el código se pueda ejecutar en cualquier lugar, incluyendo computadoras de escritorio, TI tradicional o la nube.

Esto se realiza mediante una forma de virtualización del sistema operativo (SO) en la que se pueden utilizar características del núcleo del SO (por ejemplo, espacios de nombres y cgroups de Linux, silos y objetos de trabajo de Windows) para aislar procesos y controlar la cantidad de CPU, memoria y disco a los que pueden acceder esos procesos.

Contenedores y Docker

La tecnología de contenedores cambió fundamentalmente en 2013 con la introducción de Docker y continuó sin cesar en esta década, ganando constantemente popularidad y aceptación por parte de los usuarios. Claramente, había una fuerte pero insatisfecha demanda en el mercado de software de contenedorización de este tipo, como lo demuestra el rápido éxito de Docker y su ahora abrumadora superioridad en el mercado.

Una encuesta de IBM de 2021 reveló que el 61 % de los encuestados indicó que había utilizado contenedores en al menos el 50 % de las nuevas aplicaciones que había creado durante los últimos 2 años. Un grupo aún mayor de encuestados (64 %) informó que esperaba usar contenedores para al menos el 50 % de las aplicaciones que crearían en los próximos 2 años.

El objetivo de los contenedores es distribuir y proteger datos y ejecutar aplicaciones. Por lo tanto, tiene mucho sentido que las industrias de TI sean los principales usuarios del software de contenerización, con las siguientes industrias clasificadas como las tres principales beneficiarias (enlace externo a ibm.com):

  1. Aprendizaje automático
  2. desarrollo de software
  3. Inteligencia Artificial (IA)

Docker y Kubernetes

El mercado de aplicaciones en contenedores está dominado actualmente por dos entidades:

Docker

La plataforma de contenerización más empleada es Docker. Los contenedores Docker se crearon originalmente en torno al motor Docker en 2013 y se ejecutan de acuerdo con una interfaz de programación de aplicaciones (API). Docker es en realidad una plataforma como servicio (PaaS) y su principal beneficio es su flexibilidad. Docker puede tomar cualquier aplicación y sus dependencias asociadas y convertirla en un contenedor virtual, que luego se puede ejecutar en cualquier computadora con Windows, macOS o Linux. El sistema emplea imágenes Docker, que son plantillas de solo lectura que se emplean para crear contenedores, y Dockerfiles, que son archivos de texto que acompañan y explican las imágenes Docker. Las imágenes Docker y otras imágenes de contenedores requieren un espacio en el que ejecutar. Esto lo gestiona el tiempo de ejecución del contenedor, una solución de software que interactúa con el sistema operativo para crear el espacio necesario para ejecutar imágenes de contenedores.

Kubernetes

La plataforma de orquestación de contenedores más popular es Kubernetes, creada por Google en 2014 y sigue siendo popular por la forma estable en que automatiza el despliegue de software, permite la escalabilidad y admite la gestión de contenedores. Además, Kubernetes es un sistema de código abierto y fomenta la participación ávida de los colaboradores (que ahora monitorear el proyecto), y cada proveedor de software le da su propio giro a Kubernetes. Por ejemplo, con algunos servicios, los usuarios no solo pueden crear clústeres de Kubernetes, sino también implementar aplicaciones sitio web escalables y analizar registros.

En la actualidad, Docker y Kubernetes son, con diferencia, las herramientas más utilizadas en relación con los contenedores de ordenadores. Según recientes proyecciones de contenerización (enlace externo a ibm.com) para 2024, Dockers ahora controla un enorme 82.8 % de este mercado, mientras que Kubernetes registra una cuota de mercado del 11.52 %.

Para obtener más información sobre cómo se relacionan Kubernetes y Docker, consulte “Kubernetes vs. Docker: ¿Por qué no ambos?

Casos de uso de contenedores

No faltan casos de uso relacionados que involucran contenedores porque cada vez son más importantes, especialmente en entornos o ecosistemas de computación en la nube . Muchas organizaciones incluso están considerando los contenedores como reemplazo de las máquinas virtuales (VM) como su opción de plataforma de computación en la nube de propósito general para sus aplicaciones y cargas de trabajo. Pero dentro de ese alcance tan amplio, hay casos de uso clave en los que los contenedores nativos de la nube son especialmente relevantes:

  • Microservicios: los contenedores son pequeños, livianos y portátiles, lo que los convierte en la opción ideal para arquitecturas de microservicios , donde las aplicaciones en contenedores se construyen a partir de muchos servicios más pequeños, poco acoplados y desplegables de forma independiente. Un hipervisor se emplea para monitorear las operaciones de microservicios cuando se emplea más de una máquina virtual en una computadora.
  • DevOps: la combinación de microservicios como arquitectura y contenedores como plataforma es una combinación sólida y una base común para muchos equipos que adoptan los entornos de DevOps y desarrollo como la forma en que eligen gestionar el desarrollo de software.
  • Multinube híbrida: Debido a que puede ejecutar contenedores de manera consistente en cualquier lugar, en computadoras portátiles, en las instalaciones y en entornos de nube, son una infraestructura y arquitectura subyacentes ideales para los proveedores de nube, así como para cualquier nube híbrida y cualquier escenario de nube híbrida y multinube en el que las organizaciones se encuentren operando en una combinación de múltiples nubes públicas y nubes privadas en combinación con un centro de datos on-premises.
  • Sin servidor: la tecnología sin servidor libera a los desarrolladores nativos de la nube que trabajan en la creación de aplicaciones de tener que pensar en las demandas y limitaciones del servidor, que se mantienen en segundo plano. Un beneficio importante del método sin servidor es que promueve el enfoque mental necesario que un desarrollador necesita al crear aplicaciones, sin abrumarlo con innumerables detalles.

Casos de uso y soluciones relacionados

Los contenedores, la contenerización o la orquestación de contenedores también tienen en cuenta las siguientes soluciones relacionadas:

  • Modernización y migración de aplicaciones: uno de los enfoques más comunes para la modernización de aplicaciones es optimizar y contenerizar las aplicaciones en preparación para una eventual migración a una arquitectura en la nube. Este proceso debe ocurrir antes de la creación del código de la aplicación, que es el código fuente que contiene todas las instrucciones para esta aplicación.
  • Contenedores separados: los contenedores separados se han popularizado porque ayudan muy bien a los usuarios de microservicios. Como su nombre indica, los contenedores separados se utilizan principalmente para ayudar a mantener los microservicios mejor organizados al permitir a los usuarios mantener diferentes aspectos de un contenedor "abarrotado" dentro de múltiples contenedores particionados. También se considera que los contenedores separados aumentan la eficiencia de las operaciones al hacer que las actualizaciones necesarias sean rápidas y sencillas.
  • Multiarrendamiento: el multiarrendamiento es un sistema de arquitectura propio, estructurado en torno a un sistema de usuarios (llamados arrendatarios) que operan una única aplicación dentro de un entorno compartido. Aunque algunas opciones de personalización pueden estar disponibles en un sistema multitenencia, esas opciones están limitadas con el propósito para mantener el sistema simple y fácil de operar. Los contenedores funcionan bien en la gestión de despliegues multiarrendatario porque se pueden ejecutar varias aplicaciones en un único host.

Tipos de contenedores

Hay dos tipos básicos de contenedores, y cada uno sirve a un grupo diferente de tecnologías de contenedores:

Contenedores del sistema

También conocidos como “contenedores del sistema operativo”, los contenedores del sistema le permiten ejecutar muchos procesos diferentes simultáneamente. Los contenedores del sistema son ideales para gestionar aplicaciones tradicionales y manejar aplicaciones monolíticas diseñadas para realizar una sola función, expresada a través de un archivo ejecutable lógico. Estos contenedores también están equipados para alojar la arquitectura, las configuraciones y las herramientas necesarias para ejecutar máquinas virtuales. Como medida predeterminada, los contenedores del sistema prohíben los sistemas de archivos en capas.

Tecnologías de contenedores servidas: BSD Jails, Linux VServer, LXC, OpenVZ, Solaris Zones

Contenedores de aplicaciones

Los contenedores de aplicaciones no son tan versátiles como los contenedores del sistema, que pueden ejecutar varios procesos al mismo tiempo. Los contenedores de aplicaciones llevan incluso ese nombre porque están pensados para servir a una aplicación llevando a cabo una y sólo una acción ejecutable. Los contenedores de aplicaciones existen para empaquetar y operar un solo servicio, y no admiten sistemas de archivos en capas.

Tecnologías de contenedores servidas: Docker, Rocket

IBM y los contenedores

La contenerización requiere un esfuerzo y equipamiento adicionales, pero paga dividendos. Las herramientas de orquestación de contenedores pueden facilitar una experiencia de contenedores más sencilla para sus entornos de producción, independientemente de dónde se encuentren sus productos en sus respectivos ciclos de vida.

Con los servicios de contenedores de IBM, basados en tecnologías de código abierto como Kubernetes, puede facilitar y acelerar su transición a la nube de una manera rápida, segura y productiva.

Autor

Phill Powell

Staff Writer

IBM Think