No se puede negar que la nube es un gran catalizador para la innovación, ya que brinda a las empresas un espacio para probar diferentes técnicas o adoptar una nueva tecnología de manera anticipada.
Uno de los temas cada vez más populares en la tecnología de la información (TI) son los sistemas de contenedores, como Docker y el más popular orquestador de contenedores Kubernetes. Los responsables de la toma de decisiones de las distintas empresas no pueden evitar preguntarse si los contenedores deberían integrarse en su propia infraestructura TI.
En las redes de muchas organizaciones y empresas consolidadas, los contenedores existen desde hace poco tiempo. No formaban parte de las estructuras de red tradicionales basadas en un centro de datos. Kubernetes está actuando ahora como una plataforma de gestión de contenedores y, curiosamente, las industrias establecidas y reguladas como la banca y los servicios financieros muestran un mayor interés, siendo los primeros en adoptar esta tecnología, mientras que otras industrias todavía están observando y evaluando los pros y los contras. Estas últimas miran primero de qué se trata, si puede incorporarse a sus redes y ser útil en absoluto para obtener una ventaja en el mercado.
Para empezar debemos comprender que Kubernetes es una plataforma de código abierto, que orquesta sistemas de tiempo de ejecución de contenedores en un clúster de recursos de hardware en red. Originalmente lo desarrolló Google, que necesitaba una nueva forma de ejecutar miles de millones de contenedores a la semana a escala. Para ello, con los años, desarrolló tres sistemas diferentes de gestión de contenedores, de los cuales el más reciente es el sistema de código abierto Kubernetes.
Kubernetes ayuda a los desarrolladores a escribir aplicaciones que se ejecutan en un clúster, ya que se utiliza para la orquestación de sistemas de tiempo de ejecución de contenedores en un clúster de recursos de hardware en red. Como señala Google, “el principal objetivo de Kubernetes es facilitar la implementación y la gestión de sistemas distribuidos complejos, además de seguir beneficiándose del uso mejorado que permiten los contenedores”.
Según datos de IDC (International Data Corporation), más del 50% de las organizaciones a nivel mundial han implementado contenedores en sus entornos, y más del 34% en entornos de producción. Las aplicaciones nuevas y existentes representan una proporción aproximadamente igual que las aplicaciones en contenedores. De hecho, la tecnología de contenedores espera tasas de crecimiento anuales del 67% para el periodo 2018-2023.
¿Para qué sirve Kubernetes?
Kubernetes se utiliza fundamentalmente para implementar y gestionar un clúster de aplicaciones en contenedores y sirve también para establecer una propia plataforma CaaS. Asimismo, ayuda a gestionar arquitecturas de aplicaciones de microservicios y ahora es una herramienta crítica para compilar sólidas y modernas canalizaciones de CI/CD de DevOps.
Kubernetes agrupa un conjunto de contenedores. Un ejemplo podría ser un servidor de aplicación, una caché de Redis y una base de datos SQL. En el caso de los contenedores de Docker, se trata de un proceso por contenedor. Kubernetes coloca estos contenedores en un grupo que gestiona en la misma máquina para reducir la sobrecarga de red y aumentar la eficiencia del uso de recursos, esto favorece principalmente a las aplicaciones que tienen una alta concurrencia de usuarios, manejando de manera óptima las redirecciones hacia los diferentes servidores.
Además aprovisionará y gestionará los recursos de hardware subyacentes designados en tu configuración. A continuación, multiplicará y distribuirá contenedores de aplicaciones por los recursos de hardware. De esta forma, Kubernetes puede orquestar contenedores a través de máquinas o en la misma máquina.
Asimismo, ayuda a optimizar el desarrollo de aplicaciones para la nube. Al utilizarlo en el comienzo del desarrollo de un nuevo proyecto, el diseño y la implementación de microservicios generarán, a menudo, un fuerte retorno de la inversión. A medida que avanza el proyecto, se beneficiará de las funciones de escalado automático, supervisión e implementación sencilla que ofrece Kubernetes.
Se puede utilizar para programar trabajos informáticos que requieran una gran cantidad de recursos. Algunos proyectos pueden requerir grandes cargas de trabajo que consuman recursos de máquinas durante un periodo prolongado. Imagina un proyecto que ejecuta una simulación compleja, como el plegamiento de proteínas, el análisis genético o la representación gráfica en 3D. A menudo, los proyectos de este tipo suelen tener un clúster especializado de recursos informáticos para ejecutar la simulación de forma asíncrona. Kubernetes es una herramienta ideal.
¿Quién debe usar Kubernetes?
Kubernetes es ideal para proyectos de software modernos de alto rendimiento, puede ser usado para todo tipo de aplicaciones, pero sin duda alguna los sistemas que están ubicados en cientos o miles de servidores requieren este tipo de orquestadores para así optimizar tiempos y recursos.
Sin embargo, trasladar un proyecto existente a Kubernetes resulta lento y costoso. Teniendo eso en cuenta, suele ser más adecuado para proyectos en sus primeras fases. Sin embargo, puede que el retorno de la inversión para migrar un sistema antiguo y asentado a Kubernetes haga que el coste merezca la pena.
En resumen, los beneficios de usar Kubernetes incluyen:
- Ágil creación y despliegue de aplicaciones: Mayor facilidad y eficiencia al crear imágenes de contenedor en vez de máquinas virtuales.
- Desarrollo, integración y despliegue continuo: Permite que la imagen de contenedor se construya y despliegue de forma frecuente y confiable, facilitando los rollbacks pues la imagen es inmutable.
- Separación de tareas entre Dev y Ops: Puedes crear imágenes de contenedor al momento de compilar y no al desplegar, desacoplando la aplicación de la infraestructura.
- Observabilidad. No solamente se presenta la información y métricas del sistema operativo, sino la salud de la aplicación y otras señales.
- Consistencia entre los entornos de desarrollo, pruebas y producción: La aplicación funciona igual en un entorno local y en la nube.
- Portabilidad entre nubes y distribuciones: Funciona en Ubuntu, RHEL, CoreOS, tu datacenter físico, Google Kubernetes Engine y todo lo demás.
- Administración centrada en la aplicación: Eleva el nivel de abstracción del sistema operativo y el hardware virtualizado a la aplicación que funciona en un sistema con recursos lógicos.
El informe de VMware (Cloud Computing Company), sobre El Estado de Kubernetes 2021, tiene un aspecto similar: el 65% de los participantes ya utiliza Kubernetes dentro de su producción. En el año 2020, sólo el 59% lo decía. A su vez, el 98% también dijo que está viendo grandes ventajas en la implementación de Kubernetes.
Con el auge de los contenedores, Kubernetes también entrará cada vez más en escena para gestionar el nuevo entorno. Probablemente, iniciará esta marcha triunfal con las startups y las grandes corporaciones en primer lugar, ya que las primeras pueden construir sus redes e incorporar en consecuencia la nueva tecnología de forma inmediata, mientras que las segundas disponen del dinero y el personal necesarios para incorporar con éxito la nueva tecnología.