"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Aprovechar la configuración automática y la integración con Quarkus Dev Services para un desarrollo eficiente

Aprovechar la configuración automática y la integración con Quarkus Dev Services para un desarrollo eficiente

Publicado el 2024-11-09
Navegar:258

¡¡JPrime 2024 concluyó con éxito!!

Los organizadores de JPrime 2024 una vez más han hecho todo lo posible para ofrecer una amplia gama de temas, asegurando que haya algo para todos.

Sin embargo, el artículo de hoy no está motivado por una de las conferencias de Michael Simons sobre "La evolución de las pruebas de integración en Spring y Quarkus", aunque fue muy revelador. Exploró estrategias de pruebas de integración, centrándose en la configuración en Spring Boot.

El autor enfatizó claramente que los problemas que destacó se abordan de manera efectiva en Quarkus mediante la utilización de Dev Services (Figura 1). Esto resalta otra razón por la que veo Spring Boot con escepticismo para ciertas aplicaciones: sus complejidades contrastan marcadamente con las soluciones optimizadas de Quarkus, particularmente con el uso de Dev Services.

Harnessing Automatic Setup and Integration with Quarkus Dev Services for Efficient Development

Figura 1: JPrime 2024

Fue notable presenciar el asombro que Dev Services provocó entre los nuevos asistentes. Sin embargo, es importante tener en cuenta que Dev Services no es una característica reciente de Quarkus; ha sido una parte integral del marco durante bastante tiempo. Profundicemos en Quarkus Dev Services y exploremos sus beneficios duraderos.

Servicios de desarrollo de Quarkus

En Quarkus, los servicios de desarrollo facilitan el aprovisionamiento automático de servicios no configurados tanto en el modo de desarrollo como en el de prueba. Básicamente, si incluye una extensión sin configurarla, Quarkus iniciará automáticamente el servicio relevante (a menudo utilizando Testcontainers en segundo plano) y configurará su aplicación para usar este servicio de manera eficiente.

  1. Detección y lanzamiento automático de servicios

    Quarkus Dev Services automatiza la detección y el lanzamiento de servicios necesarios como bases de datos, intermediarios de mensajes y otros servicios backend. Esta función aprovecha las dependencias de la aplicación especificadas en pom.xml o build.gradle. Por ejemplo, agregar un controlador de base de datos activa automáticamente los servicios de desarrollo para activar una instancia en contenedor correspondiente de esa base de datos si aún no se está ejecutando. La tecnología utilizada aquí involucra principalmente Testcontainers, que permite la creación de instancias livianas y desechables de bases de datos comunes, navegadores web Selenium o cualquier otra cosa que pueda ejecutarse en un contenedor Docker.

  2. Inyección de configuración dinámica

    Una vez que se crean instancias de los servicios requeridos, Quarkus Dev Services inyecta dinámicamente los detalles de conexión del servicio relevante en la configuración de la aplicación en tiempo de ejecución. Esto se hace sin ninguna intervención manual, utilizando una característica conocida como Prueba Continua que redirige la base de datos estándar, u otras URL de servicio, a los contenedores de prueba autoaprovisionados. Las propiedades de configuración, como URL, credenciales de usuario y otros parámetros operativos, se establecen sin problemas, lo que permite que la aplicación interactúe con estos servicios como si estuvieran configurados manualmente.

  3. Comportamientos específicos del servicio

    Dev Services está diseñado para varios tipos de servicios:

    • Bases de datos: Proporciona automáticamente una base de datos en ejecución adaptada a las necesidades de su aplicación, ya sea PostgreSQL, MySQL, MongoDB o cualquier otra base de datos compatible. Los servicios de desarrollo garantizan que el contenedor de prueba correspondiente esté disponible durante el desarrollo.
    • Sistemas de mensajería: Para aplicaciones que usan sistemas de mensajería como Kafka o AMQP, Quarkus Dev Services inicia los brokers necesarios usando Docker y los conecta con la aplicación.
    • Servicios de desarrollo personalizados: Los desarrolladores pueden ampliar la funcionalidad creando extensiones Quarkus personalizadas que aprovechen el marco de servicios de desarrollo. Esto permite configuraciones personalizadas que son específicas del proyecto, ofreciendo aún mayor flexibilidad y control.
  4. Manejo de red y aislamiento de servicios

    Cada servicio creado por Quarkus Dev Services se ejecuta en su entorno aislado. Esto es crucial para garantizar que no haya conflictos de puertos, residuos de datos o problemas de seguridad entre diferentes pruebas de desarrollo. A pesar de este aislamiento, los servicios se conectan en red de manera adecuada mediante Docker, lo que garantiza que puedan comunicarse entre sí según sea necesario, imitando una atmósfera de implementación del mundo real.

  5. Gestión del ciclo de vida

    Quarkus gestiona el ciclo de vida completo de estos servicios aprovisionados dinámicamente. Cuando inicia su aplicación en modo de desarrollo, los servicios necesarios se inician automáticamente. Cuando detiene la aplicación Quarkus, estos servicios también finalizan. Esta gestión incluye el manejo de la persistencia de los datos según sea necesario, lo que permite a los desarrolladores continuar justo donde lo dejaron sin demoras en la configuración.

Uso de ejemplo

Considere que está utilizando una base de datos PostgreSQL con Quarkus. Si no se detecta ninguna configuración de PostgreSQL existente, Quarkus iniciará un contenedor Docker de PostgreSQL y conectará su aplicación automáticamente.

Estos servicios están habilitados de forma predeterminada en los modos de desarrollo y prueba, pero se pueden deshabilitar si es necesario a través de application.properties:

quarkus.datasource.devservices.enabled=false

Ampliemos el escenario en el que Quarkus utiliza una base de datos PostgreSQL y cómo los servicios de desarrollo facilitan esto con el mínimo esfuerzo.

Si Quarkus detecta que no hay ninguna configuración de PostgreSQL activa (no en ejecución o no configurada explícitamente), iniciará automáticamente un contenedor de PostgreSQL usando Docker. Esto se configura detrás de escena a través de Dev Services.

Para interactuar con la base de datos a través de una capa ORM, considere usar Quarkus Panache, que simplifica las operaciones ORM de Hibernate. A continuación le indicamos cómo configurar su entorno:

  1. Agregar dependencias

    En primer lugar, incluye las dependencias necesarias en tu pom.xml:

    io.quarkusquarkus-hibernate-orm-panacheio.quarkusquarkus-jdbc-postgresql
  2. Definir la entidad

    A continuación, defina su entidad, como CityEntity:

    @Entity
    @Table(name = "cities")
    public class CityEntity {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    @Column(name = "public_id")
    private String publicId;
    
    @OneToOne
    private StateEntity state;
    
    @Column(nullable = false, name = "created_at")
    private Instant createdAt;
    
    @Column(nullable = false, name = "last_modified")
    private Instant lastModified;
    
    @PrePersist
    protected void onCreate() {
     createdAt = Instant.now();
     lastModified = createdAt;
    }
    
    @PreUpdate
    protected void onUpdate() {
     lastModified = Instant.now();
    }
    }
    
  3. Crear el repositorio

    Implementar el repositorio que interactuará directamente con la base de datos:

    @ApplicationScoped
    public class CityRepository implements 
    PanacheRepository {
    }
    
  4. Capa de servicio

    Definir la capa de servicio que utiliza el repositorio:

    @ApplicationScoped
    public class CityServiceImpl implements CityService {
    
      @Inject
      CityRepository cityRepository;
    
      @Override
      public long countCities() {
       return cityRepository.count();
      }
    }
    
    public interface CityService {
     long countCities();
    }
    
  5. Punto final de recursos

    @Path("/cities")
    @Tag(name = "City Resource", description = "City APIs")
    public class CityResource {
    
      @Inject
      CityService cityService;
    
      @GET
      @Path("/count")
      @Operation(summary = "Get the total number of cities", 
       description = "Returns the total count of cities in the 
       system.")
      @APIResponse(responseCode = "200", description = "Successful 
      response", content = @Content(mediaType = "application/json", 
      schema = @Schema(implementation = Long.class)))
      public long count() {
       return cityService.countCities();
      }
     }
    

Cuando ejecute su aplicación Quarkus (mvn quarkus:dev), observe el inicio automático del contenedor PostgreSQL (Figura 2). Esta perfecta integración ejemplifica el poder de Quarkus Dev Services, simplificando significativamente el desarrollo y las pruebas al automatizar la configuración y la conexión a servicios externos necesarios para su aplicación.

Harnessing Automatic Setup and Integration with Quarkus Dev Services for Efficient Development

Figura 2: Registros de aplicaciones

Servicios de desarrollo de plataforma

Quarkus Dev Services agiliza las fases de desarrollo y prueba al manejar la configuración y administración de varios servicios, lo que permite a los desarrolladores centrarse más en la aplicación real. Quarkus admite una amplia gama de servicios de desarrollo, que incluyen:

  • AMQP
  • Registro de Apicurio
  • Bases de datos
  • Kafka
  • Capa de llaves
  • Kubernetes
  • MongoDB
  • ConejoMQ
  • Pulsar
  • Redis
  • Bóveda
  • Infinispan
  • Búsqueda elástica
  • Observabilidad
  • Neo4j
  • Simulación de cable
  • Microcks
  • Capa de llaves
  • y muchos más, cada uno diseñado para mejorar su entorno de desarrollo sin problemas

Conclusión

Quarkus Dev Services representa un cambio de paradigma en la forma en que los desarrolladores abordan la configuración e integración de servicios externos durante las fases de desarrollo y prueba. La automatización de la configuración del entorno no solo acelera el proceso de desarrollo sino que también reduce la posibilidad de errores de configuración, lo que facilita que los equipos se concentren en crear aplicaciones sólidas y ricas en funciones.

Una de las ventajas destacadas de Quarkus Dev Services es el énfasis en la productividad de los desarrolladores. Al eliminar la necesidad de administrar manualmente las dependencias de los servicios, los desarrolladores pueden comenzar a trabajar inmediatamente en la lógica empresarial y las características de las aplicaciones. Este flujo de trabajo optimizado es particularmente beneficioso en arquitecturas de microservicios donde múltiples servicios pueden requerir desarrollo e integración simultáneos

En conclusión, adoptar Quarkus Dev Services podría afectar significativamente la efectividad de su equipo de desarrollo y los resultados del proyecto. La simplicidad y el poder de Quarkus fomentan la experimentación,
iteraciones más rápidas y, en última instancia, un ciclo de desarrollo más rápido. Este tipo de apalancamiento tecnológico es lo que las empresas modernas necesitan para prosperar en la era digital.

Declaración de liberación Este artículo se reproduce en: https://dev.to/yanev/harnessing-automatic-setup-and-integration-with-quarkus-dev-services-for-ficient-development-27m2?1 Si hay alguna infracción, por favor contacto Study_golang@163 .comeliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3