Artículos técnicos

Cómo ahorramos la mitad de la factura de la nube usando Kubernetes

Author picture

Ricardo Cardona

CTO
Jun 17, 2021
3 min

Desde hace un año comenzamos nuestro camino en Kubernetes (AKS) en Azure. Este artículo presenta una breve recopilación de los resultados que tuvimos durante este proyecto. Al final tendremos algunas recomendaciones que pueden servir a las empresas que tengan Kubernetes como una opción para el despliegue de sus aplicaciones.

Antes de Kubernetes

  • Rápida y fácil implementación de nuevas aplicaciones en Visual Studio
  • Escalado sencillo para ayudar a reducir los costos fuera de las horas de trabajo
  • El poderoso ecosistema de Azure ofrece una gran cantidad de funcionalidades que se integran bien con Azure App Service

Sin embargo, también tenía ciertos inconvenientes:

  • Los saltos entre tamaños de despliegues pueden resultar costosos
  • Puede terminar poniendo muchos huevos en la misma canasta, algo para tener en cuenta es que la mayoría de sus datos probablemente se administrarán y procesarán a través de los productos/servicios de Microsoft y esto último sube el costo de la factura
  • Si se está mudando de un servicio local a Azure App Service (o cualquier solución en la nube), probablemente tendrá que reconsiderar cómo se hacen las cosas para lograr los mismos resultados finales (y/o los recursos pueden volverse costosos rápidamente)

Finalmente, Azure App Service es excelente si está iniciando un nuevo proyecto web y necesita una infraestructura que sea rápida, estable, segura y escalable. El servicio tiene un tiempo de disponibilidad muy alto y admite una variedad de lenguajes y tecnologías (aunque realmente brilla con la pila .NET: C #, ASP.NET, Entity Framework, etc.). Si está pensando en migrar una aplicación existente, puede terminar incrementando la factura en lo que respecta a los recursos, si el software no está optimizado adecuadamente para utilizar los servicios de la nube de manera eficiente o si quiere empezar a utilizar tamaños más grandes en los despliegues.

Con la llegada de Kubernetes

En nuestra empresa queríamos:

  • Simplificar y acelerar nuestro proceso de desarrollo.
  • Mejorar la estabilidad y la seguridad de las implementaciones.
  • Simplificar la creación de nuevos ambientes: desarrollo, pruebas o producción.
  • Reducir costos optimizando el uso de los recursos.
  • Si Kubernetes es el director de la orquesta, los músicos son los contenedores. Los contenedores distribuyen una aplicación y sus dependencias en una imagen que puede ejecutarse en casi cualquier lugar, optimizando el desarrollo y la implementación.

    Kubernetes organiza, administra y automatiza la utilización de recursos, el manejo de fallas, la disponibilidad y la escalabilidad de los contenedores.

    El primer paso fue pensar nuestras aplicaciones como contenedores. Esto requiere una serie de consideraciones tanto en el diseño como en la implementación de la aplicación. La agrupación en clústeres de contenedores, las redes y la automatización de la implementación son en realidad problemas muy difíciles de resolver. Nos dimos cuenta de esto y decidimos apostar por una de las herramientas disponibles. Kubernetes parecía ser la mejor opción, ya que contaba con el respaldo de Google, Microsoft, Red Hat, AWS y otros grupos que claramente saben cómo ejecutar implementaciones a gran escala. Escogimos Azure Kubernetes Service (AKS) que alivia la administración de Kubernetes.

    Los cambios no solo fueron solo tecnológicos, se requirieron reformas en la metodología interna de desarrollo. La liberación de versiones se hizo más estricta incluyendo validaciones previas sobre las nuevas funcionalidades. Adicionalmente, tuvimos que tomar decisiones desde el diseño para que cada nuevo componente contara con los atributos requeridos por el contenedor que sería ejecutado en Kubernetes. Como resultado final:

    Incrementamos la calidad de los entregables distribuidos al cliente.

    Para disminuir la factura de la nube empleamos varias estrategias. La más importante fue dejar de utilizar App Services y unificar los procesos más grandes en Kubernetes. De esta forma usamos los recursos con mayor eficiencia porque podíamos compartir las máquinas entre diferentes procesos, además de la posibilidad de incrementar o reducir el tamaño del clúster cuando lo deseáramos.

    Los cambios no solo fueron solo tecnológicos, se requirieron reformas en la metodología interna de desarrollo. La liberación de versiones se hizo más estricta incluyendo validaciones previas sobre las nuevas funcionalidades. Adicionalmente, tuvimos que tomar decisiones desde el diseño para que cada nuevo componente contara con los atributos requeridos por el contenedor que sería ejecutado en Kubernetes. Como resultado final: La reducción de la factura no fue un trabajo exclusivo de Kubernetes. Adicionalmente, hicimos cambios en la arquitectura de la aplicación que mejoraron su rendimiento Implementamos un mejor cache, removimos peticiones de red innecesarias y ajustamos muchos procesos internos.  Después de este afinamiento logramos mejorar el rendimiento y disminuir el tamaño del clúster a la mitad. Todo esto tuvo como resultado la disminución en más del 50% la factura de Azure.

    Conclusiones

    Kubernetes es una gran tecnología. Hay muchas áreas en las que sin duda podría ayudarle. Al igual que con cualquier tecnología en la que pretenda ejecutar su aplicación de producción, querrá sopesar sus riesgos y ver si los beneficios los superan.

    Personalmente, estoy muy emocionado con Kubernetes. Tenemos cargas de trabajo en producción corriendo desde el año pasado. Existen beneficios reales que se obtienen de la orquestación, el escalado automático, la utilización del servidor y las capacidades de recuperación automática que ofrece Kubernetes, que hacen nuestra aplicación más robusta. Sin embargo, Kubernetes es un sistema bastante complejo con muchas partes móviles. Su ecosistema está en constante evolución y agrega más capas a la mezcla a medida que pasa el tiempo.

    La complejidad de instalar, asegurar, mantener y monitorear Kubernetes requiere una profunda comprensión de la herramienta, nuevos conjuntos de habilidades, conocimientos operativos y experiencia que deben tenerse en cuenta antes de emprender un proyecto con esta tecnología. Los recursos como Kubernetes Failure Stories son útiles para descubrir cuáles podrían ser los problemas más comunes e incluso cómo puede solucionarlos.

    Subscríbete a nuestro blog

    Siempre actualizado con iMedicalBlog

    Thank you! Your submission has been received!
    Oops! Something went wrong while submitting the form.