Implementando Paralelismo com Virtual Threads no Java 21

Neste exemplo, veremos como implementar o paralelismo usando Java 21. Anteriormente, para alcançar paralelismo, utilizávamos e ainda usamos o CompletableFeature, que funciona muito bem, mas ainda é um pouco verboso. Para começar, criaremos dois métodos que retornam uma String. Dentro de cada método, faremos a Thread esperar por alguns segundos para simbolizar uma operação de I/O. private static String executeTask1() throws InterruptedException { logger.info("task 1"); Thread.sleep(1000); return "task1"; } O primeiro método espera 1 segundo antes de retornar a String, e o segundo método é semelhante, também aguardando 1 segundo....

October 30, 2023 · 3 min · 439 words · Mattheus Cassundé

Proxy Reverso com Apache2

O Problema Muitas vezes quando estamos iniciando uma aplicação web deixamos os usuários acessarem nosso sistema direto do servidor que nossa app está instalada. A imagem abaixo ilustra essa abordagem, agora imagina quantas informações sobre nosso sistema estamos entregando para um atacante? Aumentando a segurança Expor detalhes da nossa aplicação como IP e porta não é uma boa alternativa principalmente quando começamos a aumentar o fluxo de acesso, um atacante pode usar essas informações para derrubar nosso serviço....

October 20, 2023 · 3 min · 451 words · Mattheus Cassundé

Jenkins Pipeline com Jenkinsfile

O Problema O time está gastando muito tempo com implantações e atualizações de sistemas nos ambientes de homologação e produção, esse time faz essas operações de forma manual ou seja acessando o servidor e rodando todos os comandos necessários, vale lembrar que esse processo é repetido diversas vezes durante o mês. Precisamos de alguma forma melhorar esse processo dando mais agilidade e deixando o time livre para trabalhar em outras tarefas....

March 13, 2023 · 6 min · 1234 words · Mattheus Cassundé

Reduzindo acoplamento no desenvolvimento de software

Existem vários princípios que ajudam na implementação de códigos mais desacoplados e tudo mais, aqui a ideia e exemplificar como podemos fazer isso. Exemplo Imagine que estamos implementando um código que vende jornal, teremos uma entidade que representa a Banca e outra que representa a Carteira de um cliente. Implementação acoplada public void pagaJornal(BigDecimal valorJornal, Carteira carteira){ if(carteira.getSaldo().compareTo(valorJornal) > 0){ cateira.debitaSaldo(valorJornal); }else{ // exception SaldoInsuficiente } } Nessa primeira abordagem a Banca pega a carteira do cliente verifica se tem o valor necessário e caso sim tira o valor do jornal de dentro da certeira do cliente, talvez isso não seja tão legal pois a Banca sabe muito sobre a carteira do cliente....

September 17, 2022 · 2 min · 228 words · Mattheus Cassundé

Subindo imagens para Harbor

Introdução Harbor é uma ferramenta simples para armazenar suas imagens docker. Em nosso exemplo vamos fazer a entrega de um site simples, onde os arquivos estão dentro da pasta /dist Pré Requisitos Sua máquina deve ter o Docker instalado, aqui você pode ver como. Sua aplicação deve ter um Dockerfile com as configurações necessárias para realizar o build da sua imagem com sucesso. Por exemplo: FROM httpd:2.4 ENV IP_API=192.0.0.1 COPY ....

September 12, 2022 · 1 min · 190 words · Mattheus Cassundé