Hoy aprendí #1

Eryx - Coop&Tech
Eryx
3 min readFeb 27, 2024

--

En Eryx nos gusta compartir el conocimiento y eso es lo que hacemos en Hoy Aprendí. Descubrí tips e insights claves de nuestro equipo técnico para aplicarlos en tu día a día.

Deploy Blue/Green en AWS: cómo abordar la complejidad de actualizaciones críticas

Por Caro Lang

¿Para qué sirve?

Cuando queremos cambiar una configuración muy grande de una base de datos, lo que solemos hacer es crear una base nueva con la configuración deseada, probar las cosas, redirigir el tráfico a la base nueva y apagar la base anterior después de un tiempo. Esto requiere mucho downtime o incluso puede suponer un problema de sincronización entre las bases (porque cuando hacés el cambio en realidad estás en una base del pasado). AWS tiene una herramienta para hacer cambios “en caliente”, o sea sin downtime.

¿Qué es un Blue/Green deployment?

La base de producción es la azul. Al usar un deploy blue/green, se crea una copia llamada base verde, con la nueva configuración de solo lectura y sincroniza automáticamente todo el tráfico. Es decir: no se puede escribir en la base verde sino que todo va a la azul. Así se puede probar (sólo lecturas, pero en nuestro caso eso alcanzaba con una probabilidad alta).

En un momento se hace un switch en el que se redirige el tráfico (como la base verde ya está creada, es muy rápido). En ese momento la verde pasa a ser azul (o sea se convierte en producción) y la azul pasa a ser gris (o blue-old). La base gris queda pero ya no está más sincronizada.

Lo único que falta es eventualmente borrar la base gris.

¿Es perfecto?

No, porque en caso de que el cambio no haya sido exitoso o satisfactorio y lo querramos revertir, hay que cambiarle el nombre a mano y sacarle un flag de sólo lectura que se pone cuando se hace gris.

Todo este periplo podría haber sido un botón, rápido y fácil para cambiar en un entorno de producción. Lo resolvimos creando un grupo de opciones que tenía esos cambios ya hechos por si ocurría alguna emergencia.

Soporte para el desarrollo de paquetes pip

por Maia Numerosky

Contexto

Estamos desarrollando un paquete de Python, una Command Line Interface (CLI), para correr modelos de machine learning en una GPU remota de Google Cloud con solo una línea de comando.

Para probarlo, debemos correr:

  • `pip install .` (esto resuelve las dependencias, “empaqueta” nuestro código e instala nuestro paquete)
  • `cv-vertex-ai-trainer -c config.toml` para utilizar nuestra herramienta

¿Qué pasa si estamos desarrollando nuestra CLI y queremos testearla nuevamente sin reinstalar el paquete después de cada cambio?

Cómo lo resolvimos

El modo editable nos permite hacer exactamente eso: instalar nuestro paquete y poder ver reflejados los cambios que hacemos en el mismo de manera inmediata. Esto nos provee feedback rápido en el ciclo de desarrollo.

`pip install -e .` hace prácticamente lo mismo que la instalación convencional. La diferencia es que, en lugar de copiar los archivos del paquete a la carpeta, `site-packages` de nuestro ambiente de Python, pip crea un link que apunta a la ubicación del paquete en el file system. Esto significa que los cambios realizados en el código fuente se verán reflejados inmediatamente en el ambiente de Python sin necesidad de reinstalar el paquete.

Documentando con markdown

por Agus Garassino

Contexto

En muchos casos la documentación es una parte fundamental del proceso de desarrollo. Esto ayuda a otros programadores a entender nuestro código, poder modificarlo y mejorarlo. Un código bueno se entiende sin muchos comentarios. Sin embargo, a veces el dominio del proyecto en sí mismo es difícil de comprender, por ejemplo en la criptografía o en la ciencia de datos. A la hora de escribir una biblioteca también es importante acompañarla con un texto explicativo que facilite su uso.

Cómo lo resolvimos

Hay muchas herramientas para escribir documentación. A la hora de elegir una, priorizamos aquella que resuelva el problema de la manera más simple, siguiendo el principio KISS.

Una muy utilizada es mdbook. Esta herramienta genera una web automática a partir de archivos de markdown. Se puede dividir en capítulos y regala algunas features para los lectores, como poder modificar los colores del texto para facilitar su lectura. Es muy fácil de usar y dado que genera una web permite compartir rápidamente el resultado con el resto del equipo.

Seguinos también en Instagram y LinkedIn.

--

--