perri.to: Un mejunje de cosas

Juju Recargado

  2016-11-01


Juju Recargado

La semana pasada vio la luz una nueva versión de juju y creo que es momento de hacer un pequeño repaso de lo que me gusta de él.

Empecé a trabajar en Canonical hace casi tres años, en el equipo de juju. Lo que me llevó al trabajo no fue la empresa, aunque tenga una larga trayectoria de trabajo relacionado con FLOSS.

Originalmente me atrajeron dos aspectos de juju:

  • Es un proyecto grande en Go y tenía muchas ganas de meterme más a fondo con eso.
  • Propone una nueva forma de pensar el devops y el concepto de big software.

Un poco de contexto.

Bueno, he sido administrador de sistemas a tiempo completo o parcial durante buena parte de mi carrera. Terminé cambiando de áreas de interés principalmente porque me di cuenta de algo sobre la administración de sistemas: cada cosa nueva que necesitás aprender te dispersa más. No es que sabés Apache y después Nginx pasa a ser la cosa del momento y cambiás uno por otro; necesitás mantener cierto nivel de dominio en ambos. Por un tiempo me pareció manejable, podía dominar una cantidad determinada de aplicaciones y conformarme con un nivel de conocimiento razonable para el resto. Pasó el tiempo y me di cuenta de que el stack seguía creciendo y necesitaba especializarme en algunos de los nichos del ahora creciente DevOps, lo cual no era muy práctico si vivís donde vivo yo: nuestro acceso a la tecnología no es excelente y hagas lo que hagas, si querés estar en la mejor posición posible para alcanzar tu potencial, tiene que ser de forma remota. En aquel momento, la administración de sistemas remota no era muy común, los racks necesitaban cableado y golpes y gritos en persona.

Y entonces, después de unos años como dev, entra en escena La Nube (alias las computadoras de otra gente).

Se abrió un camino flamante para la gente con inclinaciones hacia La profesión antes conocida como administrador de sistemas. Una miríada de herramientas de orquestación estaba en auge y uno podía volcar el conocimiento administrativo en infinitos fragmentos de despliegue. Bueno, eso no me alcanzaba.

Surgió el mismo problema: podía escribir fragmentos sobre el software que dominaba y fragmentos de cargo cult sobre el software que no; básicamente era una especie de maestro del collage.

Finalmente “what I like about you”

Y entonces eché un vistazo a la promesa de juju, que era exactamente lo que quería.

  • Declarativo vs Imperativo: juju propone declarar tu modelo, un modelo que represente mejor tus necesidades de software en lugar de una lista de pasos rígida.
  • Empaquetar conocimiento con bordes claros: un charm, la unidad más pequeña de lógica en juju, es literalmente una bolsa de conocimiento destilado; tu charm instala todo lo que necesitás con la mejor configuración posible (podés encontrar varios charms para una misma aplicación afinados para distintos usos) y sabrá cómo escalar de la mejor manera para esa aplicación y, finalmente, exportará los endpoints relevantes para conectarse con ella.
  • Definición clara de las interacciones: dados los bordes adecuados expuestos por los charms, tu modelo puede limitarse a expresar relaciones entre ellos solo para las partes relevantes (por ejemplo, querés que wordpress se relacione únicamente por la parte http con nginx, y ambos charms lo saben y harán ese tipo de relación por vos).
  • Escalado del conocimiento: esta es quizás la parte más importante; a medida que el software crece en complejidad (ver la mención a big software más arriba), o bien necesitás dispersarte más y saber demasiado poco sobre demasiado, o bien encontrar una manera de aprovechar el conocimiento de otra gente de forma comoditizada que te permita adquirir tanto como sea posible sin bajar la calidad; dado que un charm es básicamente conocimiento y juju en sí tiene conocimiento profundo sobre los proveedores de nube subyacentes, estás obteniendo el mejor conocimiento posible sobre cada parte de tu software y podés concentrarte en lo que sea tu parte y en lo que genera valor para tu producto.

En conclusión, el software se está volviendo grande, eso es un hecho, no hay vuelta atrás dada la escala de usuarios y redes. Juju tiene el potencial de ser uno de los grandes jugadores acá, con la capacidad de empaquetar know how, escalar conocimiento y desplegar la representación de tu modelo único en muchos entornos con resultados equivalentes. El lenguaje común que propone juju es una fina representación que espero gane impulso entre los grandes jugadores de big software, y ojalá esté ahí para aportar mi granito de arena.