Desarrollador, pon contenedores en tu vida

No, en este post no te voy a vender las virtudes de desplegar su aplicación sobre docker. Mucho se ha escrito sobre el tema y mucho se seguirá escribiendo. También se ha escrito de lo malo que es docker y de lo no tan malo que es.

Este post está destinado especialmente a todos aquellos desarrolladores que no desplegáis vuestras aplicaciones con Docker. Porque los que ya usáis docker en el ciclo de entrega ya sabéis lo que voy a contar y además os parece obvio.

Seguro que alguna vez has tenido que instalarte Redis, Mongo, Couchbase, MySql, ElasticSearch, RabbitMq o cualquier otro software similar para hacer una prueba puntual, por requisitos de un proyecto fugaz o para hacer un spike y decidir si finalmente introduces esa pieza o no en tu infraestructura.

Lo normal antes de tener contenedores era instalar el software en cuestión en nuestra máquina o tal vez recurrir a una máquina virtual. Lo de la máquina virtual era práctica habitual cuando sabíamos que el software a instalar iba a causar estragos en nuestra máquina, ya fuera en forma de mierda repartida por todo el sistema o en forma de losa de 500kg para el rendimiento.

Pues ahora tenemos una opción más, con las ventajas de aislamiento de las máquinas virtuales pero muchísimo más sencillo. Gracias al hub de docker tenemos al alcance de un “docker run” imágenes oficiales de todos los programas mencionados antes y muchos más. Incluso tenemos algunas no oficiales que pueden ser de mucha ayuda, como Oracle. Si, Oracle, porque quién narices quiere instalarse Oracle para hacer 4 pruebas pudiendo tirar de una imagen preconfigurada!.

Si las imágenes están curradas (suelen estarlo), podrás incluso personalizar aspectos del funcionamiento de la aplicación. Por ejemplo, la imagen de Redis está preparada para poder usar tu propio “redis.conf” o simplemente para usar redis con contraseña.

Por cierto, aunque las imágenes del repositorio de Microsoft aún no se consideran oficiales dentro del hub de Docker, son las oficiales de Microsoft, son de fiar 😉

Tal como lo he mencionado parece que esto de usar Docker durante el desarrollo es algo que sólo vale para hacer pruebas. Pues no, puedes usarlo en tu día a día y así evitar contaminar tu sistema con instalaciones que luego tienes que actualizar cada cierto tiempo, acumulando cada vez más y más “restos”.

Un último briconsejo: Si tienes la oportunidad, intenta usar las versiones tageadas como “alpine”. Evidentemente, las versiones “alpine” están basadas en Alpine Linux, una distribución “security-oriented” que pesa sólo 5Mb. En la mayoría de los casos, teniendo en cuenta que lo que queremos probar es únicamente el software de la imagen que hemos bajado, será suficiente. Como referencia, la imagen “latest” de Redis ocupa 74Mb y la “alpine” ocupa sólo 8Mb.

Modesto San Juan

Desarrollo software e intento hacerlo bien