"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Aproveitando a configuração automática e a integração com Quarkus Dev Services para um desenvolvimento eficiente

Aproveitando a configuração automática e a integração com Quarkus Dev Services para um desenvolvimento eficiente

Publicado em 2024-11-09
Navegar:226

JPrime 2024 concluído com sucesso!!

Os organizadores do JPrime 2024 mais uma vez não mediram esforços para oferecer uma gama diversificada de tópicos, garantindo que haja algo para todos.

No entanto, o artigo de hoje não é desencadeado por uma das palestras de Michael Simons sobre "A evolução dos testes de integração no Spring e no Quarkus", embora tenha sido altamente esclarecedor. Ele explorou estratégias de testes de integração, com foco na configuração no Spring Boot.

O autor enfatizou claramente que os problemas que ele destacou são efetivamente resolvidos no Quarkus por meio da utilização de Dev Services (Figura 1). Isso destaca outra razão pela qual vejo o Spring Boot com ceticismo em relação a certas aplicações - suas complexidades são fortemente contrastadas pelas soluções simplificadas do Quarkus, particularmente com o uso de Dev Services.

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

Figura 1 – JPrime 2024

Foi notável testemunhar o espanto que o Dev Services provocou entre os novos participantes. No entanto, é importante observar que Dev Services não é um recurso recente no Quarkus; já faz algum tempo que faz parte integrante do quadro. Vamos nos aprofundar nos Quarkus Dev Services e explorar seus benefícios duradouros.

Serviços de desenvolvimento Quarkus

No Quarkus, os Dev Services facilitam o provisionamento automático de serviços não configurados nos modos de desenvolvimento e teste. Essencialmente, se você incluir uma extensão sem configurá-la, o Quarkus iniciará automaticamente o serviço relevante – geralmente utilizando Testcontainers em segundo plano – e configurará seu aplicativo para usar esse serviço de forma eficiente.

  1. Detecção e lançamento automático de serviço

    Quarkus Dev Services automatiza a detecção e lançamento de serviços necessários, como bancos de dados, corretores de mensagens e outros serviços de back-end. Esta função utiliza as dependências do aplicativo especificadas em pom.xml ou build.gradle. Por exemplo, adicionar um driver de banco de dados aciona automaticamente o Dev Services para ativar uma instância em contêiner correspondente desse banco de dados, caso ele ainda não esteja em execução. A tecnologia usada aqui envolve principalmente Testcontainers, que permite a criação de instâncias leves e descartáveis ​​de bancos de dados comuns, navegadores Selenium ou qualquer outra coisa que possa ser executada em um contêiner Docker.

  2. Injeção de configuração dinâmica

    Depois que os serviços necessários são instanciados, o Quarkus Dev Services injeta dinamicamente os detalhes relevantes da conexão do serviço na configuração do aplicativo em tempo de execução. Isso é feito sem qualquer intervenção manual, usando um recurso conhecido como Teste Contínuo que redireciona o banco de dados padrão, ou outras URLs de serviço, para os Testcontainers provisionados automaticamente. Propriedades de configuração como URLs, credenciais de usuário e outros parâmetros operacionais são definidas perfeitamente, permitindo que o aplicativo interaja com esses serviços como se eles tivessem sido configurados manualmente.

  3. Comportamentos específicos do serviço

    O Dev Services é adaptado para vários tipos de serviços:

    • Bancos de dados: Fornece automaticamente um banco de dados em execução adaptado às necessidades do seu aplicativo, seja PostgreSQL, MySQL, MongoDB ou qualquer outro banco de dados compatível. Dev Services garante que um Testcontainer correspondente esteja disponível durante o desenvolvimento.
    • Sistemas de mensagens: Para aplicativos que usam sistemas de mensagens como Kafka ou AMQP, o Quarkus Dev Services inicia os corretores necessários usando Docker e os conecta ao aplicativo.
    • Serviços de desenvolvimento personalizados: Os desenvolvedores podem estender a funcionalidade criando extensões Quarkus personalizadas que aproveitam a estrutura de serviços de desenvolvimento. Isso permite configurações personalizadas específicas do projeto, oferecendo ainda maior flexibilidade e controle.
  4. Manipulação de rede e isolamento de serviço

    Cada serviço desenvolvido pela Quarkus Dev Services é executado em seu ambiente isolado. Isto é crucial para garantir que não haja conflitos portuários, resíduos de dados ou problemas de segurança entre os diferentes testes de desenvolvimento. Apesar desse isolamento, os serviços são conectados em rede de maneira adequada usando Docker, garantindo que eles possam se comunicar entre si conforme necessário, imitando uma atmosfera de implantação do mundo real.

  5. Gerenciamento do ciclo de vida

    A Quarkus gerencia o ciclo de vida completo desses serviços provisionados dinamicamente. Ao iniciar seu aplicativo no modo de desenvolvimento, os serviços necessários são iniciados automaticamente. Quando você interrompe o aplicativo Quarkus, esses serviços também são encerrados. Esse gerenciamento inclui o tratamento da persistência dos dados conforme necessário, permitindo que os desenvolvedores continuem de onde pararam, sem atrasos na configuração.

Exemplo de uso

Considere que você está usando um banco de dados PostgreSQL com Quarkus. Se nenhuma configuração PostgreSQL existente for detectada, o Quarkus iniciará um contêiner PostgreSQL Docker e conectará seu aplicativo automaticamente.

Esses serviços são habilitados por padrão nos modos de desenvolvimento e teste, mas podem ser desabilitados se necessário por meio do application.properties:

quarkus.datasource.devservices.enabled=false

Vamos expandir o cenário em que o Quarkus está usando um banco de dados PostgreSQL e como os Dev Services facilitam isso com o mínimo de barulho.

Se o Quarkus detectar que nenhuma configuração do PostgreSQL está ativa (não em execução ou não configurada explicitamente), ele iniciará automaticamente um contêiner PostgreSQL usando Docker. Isso é configurado nos bastidores por meio de Dev Services.

Para interagir com o banco de dados por meio de uma camada ORM, considere usar o Quarkus Panache, que simplifica as operações do Hibernate ORM. Veja como configurar seu ambiente:

  1. Adicionar dependências

    Em primeiro lugar, inclua as dependências necessárias em seu pom.xml:

    io.quarkusquarkus-hibernate-orm-panacheio.quarkusquarkus-jdbc-postgresql
  2. Definir a entidade

    Em seguida, defina sua entidade, 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. Criar o repositório

    Implemente o repositório que irá interagir diretamente com o banco de dados:

    @ApplicationScoped
    public class CityRepository implements 
    PanacheRepository {
    }
    
  4. Camada de serviço

    Defina a camada de serviço que utiliza o repositório:

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

    @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();
      }
     }
    

Ao executar sua aplicação Quarkus (mvn quarkus:dev), observe a inicialização automática do contêiner PostgreSQL (Figura 2). Essa integração perfeita exemplifica o poder do Quarkus Dev Services, tornando o desenvolvimento e os testes significativamente mais simples, automatizando a configuração e a configuração da conexão com serviços externos necessários para sua aplicação.

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

Figura 2 – Logs do aplicativo

Serviços de desenvolvimento de plataforma

O Quarkus Dev Services agiliza as fases de desenvolvimento e teste, lidando com a configuração e o gerenciamento de vários serviços, permitindo que os desenvolvedores se concentrem mais no aplicativo real. Quarkus oferece suporte a uma ampla gama de serviços de desenvolvimento, incluindo:

  • AMQP
  • Registro de Apicúrio
  • Bancos de dados
  • Kafka
  • Keycloak
  • Kubernetes
  • MongoDB
  • CoelhoMQ
  • Pulsar
  • Redes
  • Cofre
  • Infinispan
  • Elasticsearch
  • Observabilidade
  • Neo4j
  • WireMock
  • Microcks
  • Keycloak
  • e muitos mais, cada um projetado para aprimorar seu ambiente de desenvolvimento de maneira integrada

Conclusão

Quarkus Dev Services representa uma mudança de paradigma na forma como os desenvolvedores abordam a configuração e integração de serviços externos durante as fases de desenvolvimento e teste. A automação da configuração do ambiente não apenas acelera o processo de desenvolvimento, mas também reduz o potencial de erros de configuração, tornando mais fácil para as equipes se concentrarem na criação de aplicativos robustos e ricos em recursos.

Uma das principais vantagens do Quarkus Dev Services é a ênfase na produtividade do desenvolvedor. Ao eliminar a necessidade de gerenciar manualmente as dependências de serviço, os desenvolvedores podem começar imediatamente a trabalhar na lógica de negócios e nos recursos do aplicativo. Este fluxo de trabalho simplificado é particularmente benéfico em arquiteturas de microsserviços onde vários serviços podem exigir desenvolvimento e integração simultâneos

Concluindo, adotar o Quarkus Dev Services pode impactar significativamente a eficácia da sua equipe de desenvolvimento e os resultados do projeto. A simplicidade e o poder do Quarkus incentivam a experimentação,
iterações mais rápidas e, em última análise, um ciclo de desenvolvimento mais rápido. Esse tipo de alavancagem tecnológica é o que as empresas modernas precisam para prosperar na era digital.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/yanev/harnessing-automatic-setup-and-integration-with-quarkus-dev-services-for-efficient-development-27m2?1 Se houver alguma violação, por favor entre em contato com study_golang@163 .comdelete
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3