Hace tiempo me enamoré de MongoDB; era la base de datos por defecto para todos mis proyectos. El status quo cambió cuando decidieron cambiar la licencia (perdiendo el soporte de las principales distribuciones Linux), y cuando decidieron requerir extensiones AVX en el procesador, limitando los entornos virtuales en los que ejecutarlo.
En el mundo de PHP, hemos visto una tendencia de sustitución del venerable Apache por Nginx y php-fpm. Hay muchas razones para ello, con muchos indicando que el rendimiento de este último par es claramente superior; a mí me gusta mucho la separación de responsabilidades entre el servidor web y el intérprete de PHP.
Tal como el mundo de las aplicaciones va adoptando arquitecturas orientadas a microservicios nos encontramos con la necesidad de alojar más aplicaciones pequeñas, y normalmente con requisitos distintos en cuanto al lenguaje de programación, su versión o sus librerías; esto nos lleva a la adopción de contenedores, pero no siempre es posible.
Como ya sabéis, este blog ha ido cambiando las tecnologías tal como han ido saliendo nuevas o más adecuadas. La siguiente que me veo obligado a apartar es Shorewall, debido a que su desarrollador se ha retirado y no lo va a seguir adaptando a las situaciones siempre cambiantes.
Ya hace tiempo que trabajo a nivel personal con varios blogs hechos con generadores estáticos y algunas aplicaciones simples PHP. Como ninguno tiene una carga demasiado alta, decidí unificarlos en pocos servidores pequeños para economizar. En algún momento se me ocurrió que podía hacerlo de forma estándar.
Ha vuelto a pasar: tengo una máquina virtual con un disco secundario que se queda pequeño.
Añado otro disco, lo preparo, sincronizo los datos y configuro su montaje en el /etc/fstab,
usando su nombre de dispositivo. Eventualmente, reinicio el servidor, tras retirar el disco
antiguo y su nombre de dispositivo ha cambiado, causando que la máquina no arranque.
Todos sabemos que podemos construir jaulas enteras de Debian con una herramienta propia llamada debootstrap, pero pocos saben que es la misma con la que se instala la distribución si usamos el instalador oficial que viene en los CDs descargables. sin embargo la configuración posterior no es trivial.
Nunca dejo de maravillarme de la cantidad de keywords y parámetros que nos ofrece SSH. Sin embargo, tanta funcionalidad tiene un precio, que es la dificultad de descubrirlos todos y, a la larga, nos quedamos con solo unos pocos. Otro problema es la creciente longitud de nuestras líneas de comandos.
En los anteriores artículos de la serie vimos como montar un entorno entero basado en docker swarm; añadimos un par de servicios de infraestructura básica, como son el balanceador y un cluster de bases de datos. Eran pasos que se hacen una sola vez y raramente se modifican. Ahora toca provisionar aplicaciones, en un proceso que vamos a repetir frecuentemente.
El siguiente artículo de la serie está dedicado a los balanceadores. Harto de mantener varias instancias sincronizadas entre sí y modificar los pools de balanceo cada vez que hay que hacer un despliegue, he optado por la versión fácil de traefik, que nos permite “montar y olvidar”, con mantenimiento cero.