No, kubernetes no es matar moscas a cañonazos

No es la primera vez que encuentro por las redes sociales publicaciones que se mofan de desplegar pequeñas aplicaciones en kubernetes. Como broma, incluso a mí me parece graciosa. El problema es cuando un CTO, que tiene que aprobar la inversión, no entiende la broma y asocia kubernetes a algo costoso que sólo se pueden permitir grandes empresas.

Incluso instalar un blog personal en kubernetes puede tener utilidad divulgativa y puede ser tan caro como pagar un droplet Docker básico e instalar kubernetes con un único nodo utilizando k0s. Entiendo que de esta forma no tenemos las principales ventajas que puede aportar un orquestador pero nos sirve para instruir.

Desarrollar una aplicación para kubernetes va más allá del postureo de usar lo último. Si lo único que quieres es añadir una pegatina en tu portátil quizá kubernetes no es para ti.

En base a mi experiencia diseñar una aplicación para kubernetes implica coger un problema y trocearlo en pequeños servicios simples, sencillos de implementar, mantener y actualizar.

Pequeños trozos de código que trabajan de forma independiente, de forma que cada uno puede estar implementado en el lenguaje que más se adapte a los requerimientos del problema, o simplemente, el lenguaje que le resulte más cómodo a cada programador.

Pequeños servicios empaquetados, sin referencias externas ni requerimientos de software, reutilizables, que son sencillos de testear y distribuir.

Pequeños servicios aislados que incluso puedes implementar en tu sistema con versiones diferentes, algo muy útil para desplegar actualizaciones de forma progresiva para evitar dejar a todos tus clientes sin servicio.

Pequeños servicios escalables, incluso bajo demanda, de forma que puedes optimizar el uso de recursos en función de lo que necesites y el ahorro que esto supone.

Pequeños servicios instalados en un sistema que por defecto ya tiene resueltos aspectos muy comunes del ciclo de desarrollo de software, tanto de forma nativa como por contribuciones de terceros, como son:

  • Escalabilidad.
  • Seguridad.
  • Almacenamiento.
  • Tolerancia a fallos.
  • Recopilación y centralización de logs.
  • Monitorización.

Un clúster de tres nodos en Azure ronda los 200€ mensuales. Puede parecer una inversión importante pero si puedes permitírtelos para tu proyecto no lo veo una mala inversión. Para llegar a ser una gran empresa tienes que empezar a pensar como una empresa grande.

17