Blog Devsuperior

    Programação, desenvolvimento web, Java, Javascript, e muito mais

    Posts encontrados: 14
    Thumbnail do post
    Foto do autor Rafael Sotero
    Rafael Sotero

    Spring AI em ação: assistente de RH com RAG e Claude

    Chegou task nova: criar uma funcionalidade de IA. A boa notícia? você não precisa aprender Python ou virar cientista de dados e nem chamar a API da Anthropic na unha. O Spring AI traz a IA generativa para dentro do mundo Spring com as mesmas ferramentas que você já usa todo dia, injeção de dependência, beans e auto configuração. Neste artigo a gente constrói, do zero, um assistente de RH que responde às perguntas dos colaboradores lendo as políticas reais da empresa, sem inventar nada, usando Claude, RAG e PostgreSQL.

    Thumbnail do post
    Foto do autor Rafael Sotero
    Rafael Sotero

    Mensageria e DLQ: Retentativas e Redrive

    Um sistema event-driven em produção convive com falhas externas. Basta uma integração do consumer oscilar por alguns minutos, e ele começará a reprocessar a mesma mensagem em loop, a fila acumula silenciosamente e uma mensagem problemática pode travar o sistema inteiro. O cenário é comum e tem solução dentro do próprio SQS, sem orquestração externa e implementação artesanal de reprocessamento.

    Thumbnail do post
    Foto do autor Rafael Sotero
    Rafael Sotero

    Distribuindo Eventos com AWS SNS + SQS

    Quando um pagamento é processado, o cliente quer confirmação em tempo real, o serviço de "entrega" quer liberar o produto, o analytics quer métrica e o antifraude quer auditar. Se o `ms-billing` virar um polvo de chamadas HTTP síncronas, perdemos o desacoplamento do SQS. Mensageria continua sendo a saída, com um padrão diferente: em vez de uma fila ligada a um consumidor, um tópico SNS distribui a mesma mensagem para várias filas independentes.

    Thumbnail do post
    Foto do autor Nelio Alves
    Nelio Alves

    OAuth2 e OIDC profissional com Java e Spring: primeiros passos

    A maioria dos projetos modernos delega autenticação para serviços externos como Auth0, Okta ou Keycloak - e não há nada de errado nisso, é o caminho mais curto para começar. O problema é que, sem entender o que está acontecendo por baixo, fica difícil tomar decisões informadas: como integrar com um SPA? Por que o ID token não deveria carregar o email do usuário? Quando preciso de Authorization Code + PKCE e quando Client Credentials basta? O Spring Authorization Server (Spring AS) é a peça que permite construir o seu próprio AS em Java/Spring, expondo os endpoints OAuth2/OIDC padrão (/oauth2/authorize, /oauth2/token, /userinfo, /.well-known/openid-configuration, etc.) com todos os ajustes que você quiser. Neste post, partindo de uma baseline mínima in-memory, vamos evoluir um AS educativo (dsbooks-as) em cinco passos incrementais até chegar a um modelo persistido em banco, com login customizado, multi-clients cadastrados, e um modelo de usuário OIDC-compliant que respeita LGPD/GDPR - tudo sem mágica de bibliotecas terceiras.

    Thumbnail do post
    Foto do autor Rafael Sotero
    Rafael Sotero

    Desacoplando sistemas com mensageria no AWS SQS

    Imagine a seguinte situação: seu sistema de acabou de receber um pagamento via Stripe. O dinheiro entrou, a operadora confirmou, e o stripe te avisou, mas bem naquela hora o serviço interno que libera o produto caiu ou ficou sobrecarregado. O que acontece? O cliente pagou e não recebeu nada. Trabalhar com mensageria pode ser a solução.

    Thumbnail do post
    Foto do autor Rafael Sotero
    Rafael Sotero

    Deploy de aplicações na AWS com ECS Fargate

    Conhecer orquestradores de containers se tornou requisito mínimo para Engenheiros de Software. Ferramentas como o ECS (Elastic Container Service) resolvem os desafios de ambiente e deploy que máquinas virtuais tradicionais não conseguem entregar sozinhas.

    Thumbnail do post
    Foto do autor Rafael Sotero
    Rafael Sotero

    Use REDIS para reduzir a Latência de APIs REST

    Muitos desenvolvedores chegam ao mesmo gargalo: a API lenta. Adicionar um índice no banco alivia, mas não cura. Isso ocorre porque bancos relacionais, mesmo perfeitamente indexados, carregam uma burocracia inerente: parsing de SQL, planos de execução e leituras em disco. O Redis é o extremo oposto: elimina a burocracia operando exclusivamente em memória, com acesso direto à chave em O(1)*.

    Thumbnail do post
    Foto do autor Nelio Alves
    Nelio Alves

    Spring Boot OAuth2 OIDC - um Authorization Server mínimo in-memory

    Este post faz parte de uma série sobre a construção de um sistema de referência para autenticação e autorização com OAuth2 e OpenID Connect (OIDC) usando Spring Boot e Next.js. O objetivo da série é cobrir as principais funcionalidades de uma aplicação web típica: recursos públicos, recursos protegidos por login, controle de acesso por perfil, e login social via Google (SSO). Neste post vamos abordar o ponto de partida: a construção de um Authorization Server mínimo, com recursos in-memory.

    Thumbnail do post
    Foto do autor Rafael Sotero
    Rafael Sotero

    ChatGPT, Copilot e Claude: como desenvolvedores estão programando em 2026

    Em 2026, metade dos desenvolvedores ama trabalhar com IA, enquanto a outra metade ainda descobre seu potencial. De que lado você está? Programar continua sendo engenharia de software, mas o fluxo mudou. Hoje, agentes de IA potencializam a produtividade: gerando código, revisando soluções e ensinando novos caminhos. Meu papel é mostrar os benefícios da IA no seu dia a dia e potencializar ainda mais sua produtividade.

    Thumbnail do post
    Foto do autor Nelio Alves
    Nelio Alves

    Preparando para o Spring: composição de objetos com Java - exercício resolvido

    Muitas pessoas que estão se preparando para trabalhar com frameworks como Spring se perguntam: "Será que eu realmente estou pronto para construir ou entender um código profissional?". É comum focar apenas em anotações, configurações e integrações, mas a verdade é que a base de tudo continua sendo modelagem de domínio e orientação a objetos bem aplicada. Neste artigo, vamos desenvolver um exercício completo sobre composição de objetos em Java, implementar toda a solução passo a passo e discutir cada decisão tomada. Este conteúdo será um excelente treinamento para quem deseja atuar profissionalmente com Spring.

    Thumbnail do post
    Foto do autor Nelio Alves
    Nelio Alves

    Data e hora em Java: os tipos LocalDate, LocalDateTime e Instant

    Trabalhar com data e hora em Java parece simples até você precisar lidar com fuso horário, horários de verão, integração com APIs e formatos padronizados. Neste post, você vai organizar de vez o seu “mapa mental” sobre datas: como o Java representa tempo, quando usar LocalDate, LocalDateTime e Instant, e como o padrão ISO 8601 conecta tudo isso de forma consistente.

    Thumbnail do post
    Foto do autor Rafael Sotero
    Rafael Sotero

    Spring Batch em ação: processamento de grandes lotes de dados

    O Spring Batch é o 'canivete suíço' da JVM para lidar com grandes volumes de dados. Neste artigo, aprenda a configurar essa ferramenta robusta para resolver um desafio real: consolidar relatórios de vendas de diversas concessionárias em uma única solução eficiente.

    Thumbnail do post
    Foto do autor Nelio Alves
    Nelio Alves

    Entendendo tratamento de exceções, try, catch com Java

    Em muitos programas, especialmente nos primeiros contatos com orientação a objetos, é comum surgir a dúvida: onde devem ficar as regras de validação? Na aplicação? Dentro da classe de domínio? Neste post, você vai entender, usando um exemplo prático, como o tratamento de exceções com try e catch em Java ajuda a organizar responsabilidades, tornar o código mais claro e reforçar os princípios de encapsulamento, coesão, e delegação na construção de sistemas.

    Thumbnail do post
    Foto do autor Nelio Alves
    Nelio Alves

    Principais mudanças no Java nas versões LTS 8 a 25

    O Java evoluiu profundamente nos últimos anos. Quem parou no Java 8 costuma se surpreender com a quantidade de melhorias em linguagem, performance, APIs e modelo de releases. Neste conteúdo, apresentamos uma visão geral das versões do Java e percorremos as principais mudanças introduzidas em cada versão LTS, da 8 até a 25.