
[06/01/2020] Desde que salió de los pasillos de Google hace cinco años, Kubernetes se ha convertido rápidamente en una de las tecnologías más populares de la década. En pocas palabras, Kubernetes es ahora la plataforma indiscutible de elección para componer y ejecutar aplicaciones compuestas de microservicios -servicios pequeños y capaces de implementarse de forma independiente, que se ejecutan en contenedores y funcionan juntos para trabajar como una aplicación más grande que se puede transportar a través de varios tipos de infraestructura.
Kubernetes es una herramienta de orquestación, lo que en este caso significa que permite a los desarrolladores ver, coordinar y administrar cargas de trabajo en contenedores y servicios con el objetivo de ejecutar sistemas distribuidos resistentes. Según las últimas cifras de la Cloud Native Computing Foundation (CNCF), publicadas en agosto del 2018, el 40% de los encuestados de empresas -más de cinco mil empresas- ya están ejecutando Kubernetes en producción.
Si bien ese es un buen progreso para el proyecto de código abierto, es importante tener en cuenta que la gran mayoría de estas organizaciones solo ejecutan un puñado de aplicaciones con Kubernetes a medida que se familiarizan con la tecnología. Pero la dirección del viaje es clara: las aplicaciones de microservicios basadas en contenedores son el futuro, y Kubernetes es su plataforma. Es por eso por lo que los tres grandes proveedores de nube han lanzado versiones administradas de Kubernetes; y Cisco, HPE, IBM/Red Hat, Microsoft, VMware/Pivotal y otros, han incorporado Kubernetes en sus ofertas de software principales.
Kubernetes está permitiendo a las empresas de todo tamaño mejorar la velocidad de su desarrollador, desplegar y aumentar en escala las aplicaciones con agilidad, y modernizar sus stacks de tecnología. Por ejemplo, el minorista en línea Ocado, que ha estado entregando alimentos frescos a los hogares del Reino Unido desde el 2000, ha construido su propia plataforma tecnológica para administrar la logística y los almacenes. En el 2017, la compañía decidió comenzar a migrar sus contenedores Docker a Kubernetes. En el verano del 2017, llevó su primera aplicación a producción en su propia nube privada.
Para Ocado y otros, los grandes beneficios de este cambio han sido un tiempo de comercialización mucho más rápido y un uso más eficiente de los recursos informáticos. Al mismo tiempo, los adoptantes de Kubernetes también tienden a citar el mismo inconveniente: la curva de aprendizaje es empinada y, aunque la tecnología facilita la vida de los desarrolladores a largo plazo, no hace que la vida sea menos compleja.
Aquí hay algunos ejemplos de grandes compañías globales que dirigen Kubernetes en producción, cómo llegaron allí y lo que han aprendido en el camino.
Bloomberg cosecha los beneficios de la adopción temprana
Bloomberg, el especialista en datos financieros, recurrió a Kubernetes en el 2015, cuando la herramienta aún estaba en alfa, antes de que pasara a producción en el 2017 -después que se demostrara la integración continua, monitoreo y pruebas necesarias.
Bloomberg procesa cientos de miles de millones de puntos de datos financieros todos los días, con 14 mil aplicaciones diferentes que alimentan únicamente a Terminal, su omnipresente producto. La organización de TI quería aumentar la velocidad a la que podría llevar nuevas aplicaciones y servicios a los usuarios y liberar a los desarrolladores de las tareas operativas.
Después de evaluar varias plataformas de orquestación, como Cloud Foundry, Mesosphere Marathon y varias ofertas de Docker, Bloomberg optó por Kubernetes porque "tenía una buena base y estaba claro que estaban enfrentando los problemas correctos. Se podía ver una visión y una hoja de ruta sobre cómo evolucionaría, que se alineaba con lo que nosotros estábamos pensando”, explica Andrey Rybka, jefe de infraestructura de cómputo en la Oficina del CTO en Bloomberg.
Con el tiempo, Bloomberg ha trabajado en una capa de plataforma como servicio local encima de Kubernetes con el fin de brindar a los desarrolladores el nivel adecuado de abstracción para que trabajen con la tecnología de manera efectiva. Esencialmente, este portal web de autoservicio es una interfaz de línea de comandos y una API REST que se integra con un sistema de control de versiones basado en Git, un sistema de compilación de CI y un repositorio de artefactos central.
Uno de los objetivos clave para Bloomberg era hacer un mejor uso de las inversiones existentes en hardware utilizando las capacidades de crecimiento autónomo de Kubernetes, junto con la capacidad de aprovisionamiento automático y flexibilización de cómputo virtual, redes y almacenamiento sin tener que emitir tickets. "Con Kubernetes podemos usar nuestro hardware de manera muy eficiente, hasta el punto en que podemos obtener tasas de utilización del 90% al 95%” en momentos de máxima demanda, afirmó Rybka como parte de un estudio de caso de la CNCF. Gran parte de esa eficiencia proviene de la capacidad de restringir los recursos para una carga de trabajo determinada, por lo que no priva a otras cargas de trabajo.
Como es el caso con la mayoría de las empresas que adoptan Kubernetes en producción, los principales desafíos surgieron en torno al uso de YAML para escribir manifiestos, que especifican cómo Kubernetes asigna los recursos. "Estos son conceptos poderosos en Kubernetes y requieren una curva de aprendizaje empinada”, afirmó Rybka.
Como afirmó Steven Bower, líder de la infraestructura de analítica y datos de Bloomberg, "Kubernetes hace muchas cosas más fáciles, pero no necesariamente más simples”.
Como resultado, Bloomberg comenzó con manifiestos básicos, limitados a un pequeño subconjunto de criterios a partir de los cuales los desarrolladores podrían ampliar su uso -a medida que se sintieran más cómodos con la tecnología- además de ejecutar muchos programas internos de capacitación.
"Tenemos una gran cantidad de infraestructura existente y existen cero posibilidades de que, milagrosamente, se traslade a Kubernetes fuera de los grandes [mainframes] de hierro”, afirmó. En cambio, la plataforma de orquestación está dirigida a aplicaciones basadas en la web y sistemas netos nuevos. En el equipo de Infraestructura de datos y analítica, donde trabaja Bower, el enfoque inicial fue implementar una nueva plataforma de cómputo de ciencia de datos para que los ingenieros de aprendizaje automático puedan ejecutar cargas de trabajo complejas utilizando herramientas como Spark y TensorFlow.
Como su consejo de despedida, Rybka habló sobre la importancia de desarrollar experiencia. "Realmente debe tener un equipo de expertos que esté en contacto con Kubernetes, así como con la CNCF y todo el ecosistema, para tener ese conocimiento interno. No se puede confiar solo en un proveedor y es necesario comprender todas las complejidades en torno a esto”, afirmó.
News UK recurre a Kubernetes para crecer a pedido
El brazo británico del gigante de los medios, News Corp, ha estado incursionando con Kubernetes desde el 2017, pasando de sus propios clústeres Kubernetes personalizados al Elastic Kubernetes Service (EKS), de Amazon Web Services, en el 2018. Esto forma parte de un stack que también incluye un conjunto de servicios de AWS, incluidos Elastic Container Service, el motor de cómputo Fargate, AWS Batch y Elastic Beanstalk.
La primera aplicación en producción trasladada a este ambiente administrado de Kubernetes fue un sistema Java previo para control de acceso e inicio de sesión de usuario. Una vez que el ambiente demostró ser lo suficientemente robusto, la organización comenzó a identificar y migrar constantemente otras aplicaciones.
A principios de este año, hablando en el evento London Futurestack de New Relic, el especialista en monitoreo, Marcin Cuber, un exingeniero de desarrollo de nubes en News UK, afirmó que "operacionalmente, esto simplifica lo que tenemos que mantener y monitorear. Además de eso, tenemos EKS en su propia VPC aislada, lo que nos permite especificar nuestros propios grupos de seguridad y listas de control de acceso a la red”.
El objetivo clave de News UK era poder crecer mejor en escala su ambiente en torno a noticias de última hora y volúmenes de lectores impredecibles. "Si existen noticias de última hora, por ejemplo, queremos que cada lector pueda recopilar actualizaciones en tiempo real, en todo el mundo y, por supuesto, tener una experiencia perfecta”, afirmó Cuber.
Kubernetes difiere del crecimiento autónomo de las máquinas virtuales solo en lo que refiere a velocidad. "Las máquinas virtuales tardan mucho en generarse y, cuando hay un pico de tráfico, no es lo suficientemente rápido como para traer nueva capacidad al AutoScalingGroup”, afirmó Cuber. "Los contenedores Docker que se ejecutan en Kubernetes son más pequeños y livianos, lo que nos permite aumentar nuestra escala en cuestión de segundos, en lugar de minutos”.
Cuber también tuvo algunos consejos para cualquier organización que busque adoptar Docker y Kubernetes. Primero, hacer que las imágenes de Docker sean lo más pequeñas posibles y centrarse en ejecutar aplicaciones sin estado con Kubernetes. "Esto mejorará su escalabilidad y portabilidad”, afirmó.
Lo siguiente es ejecutar comprobaciones de estado para sus aplicaciones y usar YAML para implementar cualquier cosa. "De esta manera, puede utilizar credenciales temporales que caducarán poco después de su implementación y nunca tendrá que preocuparse por las credenciales estáticas ubicadas”, agregó.
News UK también quería reducir costos al combinar clústeresde EKS con instancias spot de AWS -donde AWS vende capacidad de cómputo sobrante a una tasa de descuento, pero también puede reclamar esa capacidad en cualquier momento.
"Existe una gran ventaja de usar instancias puntuales; estamos ahorrando alrededor del 70% en comparación con los precios a demanda”, afirmó Cuber. Para evitar el problema de la eliminación de los nodos, los ingenieros configuraron una función AWS Lambda, que detecta la señal de terminación de AWS y drena automáticamente los nodos debido a que se ven afectados.
El beneficio final y más suave de dirigir Kubernetes en News UK se resume al reclutamiento. "Kubernetes es de código abierto y esto es sexy. Queremos atraer ingenieros modernos que se preocupen por las tecnologías nativas de la nube”, agregó.
Amadeus es leal a Kubernetes
Amadeus, el gigante español de tecnología de viajes, ha estado trabajando con Kubernetes desde la versión 0.7 de hace cinco años. En los dos años siguientes, la compañía estaba ansiosa por ver cosas como el monitoreo, las alertas y el ecosistema más amplio antes de enviar cualquier aplicación crítica para el negocio a Kubernetes. La compañía ahora siente que hizo la apuesta correcta.
"Queríamos ir más rápido con Kubernetes, así que tomamos los pasos para aprender cómo operar Kubernetes y cómo monitorearlo, hacer alertas”, afirma Julien Etienne, director de ingeniería de software para plataformas de nube en Amadeus.
Amadeus es uno de los tres grandes sistemas de distribución global que permite a las agencias de viajes y motores de metabúsqueda como Expedia y Kayak, vender vuelos, habitaciones de hotel y reservas de autos de alquiler. A fines del 2016, la organización comenzó a trasladar su primera aplicación -para disponibilidad de las aerolíneas- a Kubernetes en producción, de la mano de la plataforma OpenShift de Red Hat. En realidad, el plan era mover primero una aplicación de reserva de hotel. Sin embargo, a medida que el proyecto se expandía, la aplicación de disponibilidad de aerolíneas, que fue construida para Linux y necesitaba ser trasladada a la nube pública para satisfacer mejor las crecientes demandas de sus clientes de la aerolínea por menos latencia, llegó a producción más rápido.
"Lo bueno que tuvimos desde el principio es que todas nuestras aplicaciones están en Linux, por lo que son amigables desde el principio”, afirmó Etienne. "Por supuesto, eran monolíticas, pero en realidad se trataba más de cómo mover aplicaciones existentes a contenedores y luego a Kubernetes, por lo que la posición era bastante sencilla”.
El cambio a Kubernetes encaja con un objetivo de negocio más amplio para que Amadeus cambie de implementaciones on premises a la nube pública -principalmente con su socio Google Cloud- para que pueda aumentar mejor su escala y de esa manera satisfacer la demanda estacional, además de reducir los costos de infraestructura del abastecimiento excesivo.
En términos de desafíos, Amadeus es una organización de ingeniería sólida, por lo que una vez que se completó la capacitación, los desafíos técnicos se volvieron insignificantes en comparación con el cambio cultural que las herramientas como Kubernetes requerían de la organización.
"Uno de los principales desafíos es cambiar la mentalidad, en términos de lo que significa para los desarrolladores”, afirmó Etienne. "Solían pensar en la máquina en la cual se ejecuta la aplicación y ahora uno se olvida de la máquina y todo se basa en la configuración con archivos YAML en todas partes”.
"Todos ya se estaban preparando para los contenedores, por lo que el mayor cambio fue operar las aplicaciones de una manera agnóstica”, agregó.
El objetivo general de Amadeus es mover todas las cargas de trabajo de producción para que se ejecuten en un solo modelo operativo con Kubernetes, y la organización está entre el 10% y el 15% del camino hasta ahora. "Como con cualquier estrategia, si alcanzamos ese objetivo, es demasiado temprano para saberlo”, afirmó Sebastien Pellise, director de gestión de soluciones de plataforma de Amadeus.
Otro beneficio más suave de adoptar herramientas como Kubernetes es reclutar y retener talentos, porque "trabajar en este tipo de cosas es mucho más atractivo para los ingenieros avanzados que trabajar en un mainframe”, afirmó Dietmar Fauser, exvicepresidente senior de plataformas de tecnología e ingeniería en Amadeus, en una entrevista a principios de este año.
Preparándose para un futuro Kubernetes
Uno de los aspectos más interesantes de estos diversos estudios de caso es su consistencia. Independientemente de la industria, ya sea servicios financieros, medios, venta minorista o tecnología, las organizaciones de todo tamaño están lidiando con un cambio radical en la forma en que el software se construye y despliega en pequeños trozos de funcionalidad discretos y poco acoplados.
También existen coherencias entre los desafíos y los beneficios. Todas estas organizaciones se ven obligadas a realizar cambios culturales, a veces dolorosos, y enfrentan desafíos de reclutamiento significativos a medida que compiten por el talento con empresas como Google y Facebook. Todas estas organizaciones también están comenzando a acelerar sus ciclos de desarrollo, reducir los costos y el tiempo de inactividad, y producir más valor con mayor frecuencia a sus clientes.
En este punto, no es una exageración decir que cualquier organización que no se ponga al día con los contenedores y Kubernetes tendrá dificultades para mantenerse al día en nuestro mundo nuevo, acelerado e impulsado por software.
Scott Carey, InfoWorld