A importância dos logs na sua aplicação

Introdução As vezes não damos aos logs a importância que eles tem e com isso não conseguimos usar a capacidade que eles tem em ajudar no dia a dia de uma aplicação em produção. Nada sabe mais sobre a falha do que a própria aplicação que falhou, por tanto podemos usar os logs para saber o que estava se passando na aplicação quando ela falhou. Quando podemos usar os logs?...

March 21, 2024 · 4 min · 717 words · Mattheus Cassundé

Qualidade além da engenharia

Introdução Se você já se perguntou como melhorar a qualidade do seu software enquanto mantém uma comunicação eficaz com o time de negócio, este vídeo é para você! No mundo do desenvolvimento de software, o Behavior-Driven Development (BDD) tornou-se uma abordagem fundamental para criar software de alta qualidade que atenda às necessidades dos usuários finais. Vídeo Neste vídeo, exploraremos como utilizar o BDD para definir critérios de aceite em colaboração com o time de negócio....

March 20, 2024 · 1 min · 134 words · Mattheus Cassundé

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é

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é