Puede resultar difícil encontrar un ingeniero de software que no conozca la utilidad ' Make '. ' GNU Make ' es una herramienta que controla la generación de ejecutables y otros elementos relacionados con la compilación del código de la aplicación.
Las capacidades de ' Make ' son muy variadas, desde la compilación e instalación de código hasta la recopilación de todas las dependencias de una aplicación. Su diseño es tan eficiente que incluso podemos usarlo para implementar el proceso de despliegue de tu solución. Veamos cómo lograrlo.
Una de nuestras necesidades recientes fue automatizar el despliegue de nuestros servicios en la nube . Dado que nuestro sistema es fundamental para muchos otros productos y servicios, terminamos necesitando múltiples entornos para distintos fines, como pruebas funcionales, pruebas de rendimiento, integración, etc.
Para satisfacer esta demanda de un entorno dedicado, pensamos en usar la utilidad ' Make ' en lugar de otras herramientas específicas para la nube. Y estamos muy contentos de que nuestra elección tecnológica haya funcionado tan bien. A continuación, les explicamos los detalles.
Decidimos minimizar el número de herramientas y tecnologías nuevas y limitarnos a las de código abierto, ya que reducir al mínimo los costes operativos era una de las prioridades. Ya utilizábamos la herramienta « Make » para compilar nuestros componentes escritos en « Go ». El siguiente paso era usarla para iniciar la compilación de imágenes Docker, subirlas al repositorio privado y lanzar/crear todos los servicios en la nube necesarios para el funcionamiento de nuestros servicios.
La regla de destino del Makefile nos ayudó a dividir todo el flujo en módulos independientes más pequeños. Escribimos reglas de destino separadas para cada paso, como la creación de una imagen de Docker, el envío de la imagen y el lanzamiento de clústeres, etc.
Creación de código y creación de imágenes de Docker
construir:
@echo “Compilación de código…”
# Los comandos de compilación específicos del idioma van aquí.
docker-build: compilación
@echo “Construyendo imagen de Docker…”
$(DOCKERBUILD) . -t $(ENV)$(NOMBRE_BINARIO) -f $(PROJBASE)/Dockerfile
Enviando la imagen de Docker al repositorio privado
docker-push:
@echo “Enviando imagen de Docker a Cloud Hub…”
# Esto contiene comandos específicos del proveedor de servicios en la nube para enviar la imagen de Docker al repositorio correspondiente
Implementar la aplicación en la nube correspondiente
desplegar:
@echo “Implementando la aplicación en el entorno…”
# Esto contiene comandos específicos del proveedor de servicios en la nube para implementar la aplicación en el clúster.
# Por ejemplo, para la nube de AWS, esto contendrá un comando cloudformation para crear una pila.
# Asimismo, Terraform también se puede utilizar para implementar la aplicación en la nube respectiva.
Iniciar la creación de la tabla
crear-tabla:
# Esto contiene la creación de todas las tablas de aplicaciones.
@sh implementación/creación_de_tabla.sh
Iniciar la implementación de extremo a extremo
Implementación de extremo a extremo: docker-build docker-push crear tabla implementar
Eso es todo. ¿No es un enfoque simple pero efectivo para impulsar la implementación de aplicaciones? Además, permite implementar aplicaciones en cualquier nube de forma rentable. Además, es un método de implementación independiente de la nube, por lo que no hay una conexión directa.



