Estratégias de Paralelismo e Divisão de Responsabilidades em Sistemas Complexos

Paralelismo é extremamente funcional quando temos algumas responsabilidades bem definidas dentro do nosso sistema, a divisão de responsabilidade entendo que é o principal ponto de partida. Escopo Vamos imaginar um sistema que fará o fechamento da folha de pagamento dos funcionários. Nesse fechamento hipotético precisamos identificar quantidade de horas extras dos funcionários, multiplicar o resultado pelo valor da hora do funcionário e adicionar o valor encontrado ao salário para assim chegarmos ao valor final a ser pago....

November 4, 2023 · 4 min · 755 words · Mattheus Cassundé

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é

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é

[Dica rápida de CDI] - Observando o início

As vezes precisamos executar alguns comandos quando nossa aplicação é iniciada, portanto quem usa algum framework moderno consegue saber quando sua app subiu e com o CDI não é diferente. date: ‘2022-08-30’ CDI contém uma funcionalidade de ajuda na implementação do padrão de projeto Observer. A Própria especificação usa esse padrão em suas rotinas internas, vamos usar umas dessas chamadas para observarmos quando o CDI for carregado ao levantar o servidor de aplicação, com o código abaixo fica fácil:...

August 30, 2022 · 2 min · 246 words · Mattheus Cassundé

Injeção de dependência Dinâmica

Hoje vou falar um pouco sobre injeção de dependência sob demanda. E comum encontrarmos beans ou controllers ou qualquer outra classe com várias injeções de dependências e na maioria das vezes uma boa parte dessas injeções são usadas em momentos pontuais da rotina. Quando a classe que contém esses injects e instanciada, a CDI vai se virar para criar e disponibilizar todas as suas dependências, já imaginou se em cada uma das dependências existir uma lógica no seu construtor?...

August 28, 2022 · 1 min · 198 words · Mattheus Cassundé