Es imposible pensar en desarrollo de software y dejar afuera a la Nube. La industria abrazó con fuerza las ventajas diferenciales del modelo cloud que, en un mundo hiperconectado, permite una expansión sin precedentes de las últimas tecnologías y no parece tener techo.
De la mano de un alto poder de procesamiento y de la descentralización de infinidad de servicios, hoy es posible construir apps de manera ágil y segura, y escalar de forma rápida, brindando respuestas instantáneas a los requerimientos de los usuarios.
Sin embargo, no se trata de simple magia: en un mundo en el que las PCs y los dispositivos móviles (smartphone, tablets, smartwatches) conviven de manera orgánica y en el que las aplicaciones se apoyan completamente en la Nube, ya sean públicas, privadas o sistemas híbridos, es necesario contar con herramientas ágiles para que los engranajes rueden de forma armoniosa, sin fallas.
Para ello, ha sido de gran ayuda la consolidación del uso de contenedores, que permiten alojar todos los componentes necesarios para que una aplicación sea ejecutada: desde el código y las librerías del sistema a los tipos de configuración.
De esta manera, permite que los desarrollos puedan ser ejecutados en cualquier momento y en cualquier lugar: ya sea una máquina local o entornos de protección, esta tecnología permite "guardar" lo necesario para correrlos sin mayores inconvenientes. Asimismo, estos paquetes pueden ser versionados, reutilizados y replicados de forma sencilla, lo que permite una expansión que hasta hace unos años parecía impensable.
Kubernetes, un arma fundamental a la hora de desarrollar aplicaciones
Ahora bien, si el número de aplicaciones crece, su gestión se puede complicar. Para solucionar esto, en 2014 nació Kubernetes, una plataforma de código abierto que permite administrar los distintos servicios que componen estas arquitecturas distribuidas.
Red Hat, la empresa de software de código abierto, fue una de las primeras que trabajó con Google en Kubernetes, incluso antes del lanzamiento, y se ha convertido en el segundo colaborador líder del proyecto.
Según una encuesta realizada a la comunidad de la Cloud Native Computing Foundation (CNCF) en 2019, un 78 % de los encuestados utiliza Kubernetes en la producción, lo cual significó un verdadero récord para esta plataforma. "El uso de Kubernetes para la producción en la comunidad nativa de la nube aumentó del 58 % en 2018, al 78 % en 2019". (CNCF Survey 2019)
Qué es Kubernetes
Kubernetes orquesta la infraestructura de cómputo, redes y almacenamiento para que las cargas de trabajo de los usuarios no tengan que hacerlo. Así, ofrece la simplicidad de las Plataformas como Servicio (PaaS) con la flexibilidad de la Infraestructura como Servicio (IaaS) y permite la portabilidad entre proveedores de infraestructura.
Por otro lado, elimina procesos manuales involucrados en la implementación y escalabilidad de las aplicaciones en contenedores, lo que no solo ayuda a la agilidad de los procesos, sino también a su seguridad.
El sistema de organización de Kubernetes permite diseñar servicios de aplicaciones que abarcan varios contenedores, programar esos contenedores en un clúster, ampliarlos y gestionar su estado a lo largo del tiempo. De esta manera, puede adoptar medidas concretas para lograr una mejor seguridad de TI.
Por otro lado, en una infraestructura de contenedores integral, la plataforma debe integrarse a las conexiones en red, el almacenamiento, la seguridad, la telemetría y otros servicios.
Kubernetes soluciona muchos de los problemas comunes en relación con la proliferación de contenedores; para ello, los ordena y agrupa en un "pod". Estos pods agregan una capa de abstracción a los contenedores agrupados y permite programar las cargas de trabajo y prestar los servicios necesarios para esos contenedores, como las conexiones de red y el almacenamiento.
Asimismo, esta solución permite equilibrar la carga en estos pods y garantizar que se cuente con la cantidad adecuada de contenedores en ejecución para respaldar las cargas de trabajo.
Sus beneficios
"Las ventajas de utilizar Kubernetes son evidentes en el esquema cloud actual. Esta tecnología no solo permite hacer un mejor uso del hardware para maximizar recursos a la hora de ejecutar aplicaciones; también posibilita controlar y automatizar las implementaciones y actualizaciones de las aplicaciones; montar y añadir almacenamiento para estos procesos, y escalar sobre la marcha. Además, permite administrar servicios de forma declarativa, que garantizan que las aplicaciones implementadas siempre se ejecuten del modo que las implementó" afirma Javier Carrique, Director Comercial de Red Hat.
De esta manera, para las empresas que diseñan su software en una plataforma de Kubernetes, la recompensa puede ser grande: desarrolladores capacitados para hacer su mejor trabajo y aplicaciones que se expandan y adaptan con flexibilidad en todas las nubes según sea necesario, en tanto esta tecnología fue diseñada para utilizarse en cualquier lugar, por lo que puede orquestar despliegues in situ, en nubes públicas o híbridos.
Kubernetes, fundamental para escalar de forma más rápida
Sin embargo, Kubernetes es una tecnología para la gestión de arquitecturas de TI a gran escala, por lo que no es apta para todos y podría presentar grandes dificultades de uso. En ese sentido, si se busca ejecutar una cantidad reducida de aplicaciones para unos pocos usuarios, Kubernetes podría causar más problemas de los que soluciona. Sin embargo, si la una empresa desarrolla y lanza sistemas de software a escala o aspira a hacerlo, debería ser su opción predeterminada.
Por último, para mantener la naturaleza basada en estándares de Kubernetes, es fundamental evaluar las soluciones que realmente sean open source. Algunas distribuciones empresariales de Kubernetes incluyen elementos open source, pero acaban haciéndolo dependiente de bases propietarias. Una distribución verdaderamente open source, como Red Hat OpenShift, siempre mantendrá elementos abiertos, desde el sistema operativo hasta el panel sin servidor