Garantice una implementación confiable de microservicios con el complemento Maven de información de compilación de Spring Boot

Aprenda cómo mejorar la confiabilidad de su proceso de implementación validando sus implementaciones de microservicios con el complemento Spring Boot Build Info Maven.

        En términos de microservicios, nos enfrentamos a un desafío único: al implementar un contenedor, no pudimos verificar que se haya implementado la última versión del contenedor con el código esperado. Es fácil verificar cuándo se implementa una nueva característica y se puede probar en producción. Sin embargo, para las aplicaciones fintech, no necesariamente podemos validar API de producción nuevas. En algunos casos, también hay correcciones de errores para las API existentes y no se puede ejecutar ese caso de uso de API en producción. A veces, el equipo de DevOps nos notifica que el contenedor se ha levantado e implementado desde el entorno UAT inferior, pero cuando comienza el tráfico de producción real, no vemos que las correcciones de errores surtan efecto. Para evitar esto, queremos asegurarnos de que haya una manera de verificar el código más reciente al enviar contenedores.
        En nuestro caso estamos tratando con microservicios basados ​​en Spring. Aquí es donde el complemento Spring Boot Maven resulta útil. El complemento Maven de información de compilación debe agregarse al archivo pom.xml del proyecto.

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <executions>
        <execution>
          <goals>
            <goal>
              build-info
            </goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

        Una vez configurada la información de compilación y creado el proyecto, puede ver el archivo build-info.properties en el directorio target/classes/META-INFO. Se parece a esto:

build.artifact=core-build-info-api
build.group=com.dzone
build.name=core-build-info-api
build.time=2023-07-29T15\:47\:25.387Z
build.version=1.0-SNAPSHOT

        Para acceder a estas propiedades en tiempo de ejecución, Spring proporciona la clase BuildProperties, que expone todas las propiedades en el archivo anterior. A continuación se muestra un fragmento de código para un servicio genérico que genera información de compilación para microservicios implementados:

@Service
public class BuildInfoService {

    @Autowired
    BuildProperties buildProperties;

    @Autowired
    Environment environment;

    public BuildInfoResponse getBuildInfo(){
        BuildInfoResponse buildInfoResponse = new BuildInfoResponse();
        buildInfoResponse.setName(this.buildProperties.getName());
        buildInfoResponse.setVersion(this.buildProperties.getVersion());
        buildInfoResponse.setTime(this.buildProperties.getTime());
        buildInfoResponse.setActiveProfile(this.environment.getActiveProfiles());
        buildInfoResponse.setSpringVersion(this.buildProperties.getVersion());
        buildInfoResponse.setGroup(this.buildProperties.getGroup());
        buildInfoResponse.setArtifact(this.buildProperties.getArtifact());
        return buildInfoResponse;
    }
}

        Luego puede inyectar este servicio y crear un punto final genérico para exponer la información de compilación del contenedor. En nuestro caso, creamos un paquete genérico llamado core-build-info que incluye los servicios anteriores y un controlador genérico de la siguiente manera:

@RestController
@RequestMapping("/${build-info.path}")
public class BuildInfoController {

    @Autowired
    BuildInfoService buildInfoService;

    @GetMapping("/build-info")
    public BuildInfoResponse getBuildInfo() {
        return this.buildInfoService.getBuildInfo();
    }
}

Todos los microservicios comerciales o de servicios públicos hacen referencia al paquete común y configuran las siguientes propiedades en el archivo de propiedades del perfil de Spring:

env=DEV
build-info.path=api/app-name/build

El nombre de la aplicación puede ser la ruta del servicio base de su negocio.
Después de integrar el paquete público, puede utilizar la siguiente URL para acceder al punto final del microservicio, que devuelve lo siguiente:

{
    "name": "core-build-info-api",
    "version": "0.0.1",
    "time": "2023-07-29T16:13:42.251Z",
    "artifact": "core-build-info-api",
    "group": "com.dzone",
    "activeProfile": [
        "DEV"
    ],
    "springVersion": "6.0.10"
}

        Puede verificar las versiones si configura incrementos de versión durante la compilación. Alternativamente, siempre puedes recurrir a verificar el tiempo de compilación, en este caso "2023-07-29T16:13:42.251Z".

        En conclusión, lidiar con microservicios y garantizar las últimas implementaciones de código puede presentar desafíos únicos. Desarrollamos un enfoque sólido para superar este desafío aprovechando las capacidades del complemento Spring Boot Maven y creando un paquete común para exponer la información de compilación. Este proceso nos permite confirmar que la versión y compilación correctas del microservicio se implementan en producción, lo que brinda confianza y seguridad a nuestro proceso de implementación. El valor de este enfoque en el mundo real es obvio: ahora es lo primero que verificamos al implementar contenedores.

Supongo que te gusta

Origin blog.csdn.net/qq_28245905/article/details/132202299
Recomendado
Clasificación