Fernando Godoy

Engenharia Backend para Sistemas de Alta Escala

Blog

Blog

Exploracoes tecnicas, estudos de caso e notas de engenharia.

Todos os posts

48 resultado(s)

Ilustração sobre @Transactional depender de proxy no Spring e falhar em chamadas internas na mesma classe.
SpringNo Spring, @Transactional não funciona sempre

26 de abr. de 20264 min

Anotar um método com @Transactional não basta. No modo padrão baseado em proxy, se a chamada não passar pelo proxy do Spring, a transação esperada simplesmente não entra em cena.

SpringJava
Ilustração técnica comparando JSON e Avro no Kafka, mostrando payload flexível de um lado e schema validado do outro.
KafkaJSON vs Avro no Kafka: o que muda na prática

21 de abr. de 20269 min

JSON e Avro não mudam apenas o formato do payload. Na prática, eles mudam como o contrato é validado, como o schema evolui, como consumers leem mensagens e como o time controla compatibilidade em produção.

KafkaAvroJSONEventosArquiteturaBackend
Ilustração sobre a diferença entre DTO e Entity no Spring, separando contrato HTTP de persistência.
SpringNo Spring, DTO não é Entity

19 de abr. de 20265 min

Usar a mesma classe como DTO e Entity acopla contrato HTTP ao modelo de persistência, expõe detalhes internos e fragiliza a evolução do sistema.

SpringJava
Ilustração técnica comparando os modos de compatibilidade BACKWARD, FORWARD e FULL na evolução de schema no Kafka.
KafkaTipos de compatibilidade no Kafka: BACKWARD, FORWARD e FULL

17 de abr. de 20266 min

Entenda o que BACKWARD, FORWARD e FULL realmente protegem na evolução de schema no Kafka, qual rollout cada modo favorece e por que BACKWARD costuma ser o padrão mais comum.

KafkaEventosArquiteturaIntegraçãoBackend
Ilustração sobre classes anotadas com @Service sem responsabilidade real no Spring
SpringNo Spring, nem todo @Service deveria existir

15 de abr. de 20265 min

Transformar toda classe intermediária em @Service cria camadas vazias, adiciona desvio na leitura e esconde onde a responsabilidade realmente mora.

SpringJava
Ilustração técnica sobre JSON flexível no Kafka, mudança de payload e quebra silenciosa entre consumidores.
KafkaJSON é flexível no Kafka. E essa é a parte perigosa.

04 de abr. de 20264 min

JSON puro parece simples para publicar eventos, mas a ausência de um contrato formal transforma mudanças pequenas de payload em quebras silenciosas, inconsistência de dados e retrabalho entre serviços.

KafkaEventosIntegraçãoBackendArquitetura
Ilustração técnica sobre eventos como contratos de integração no Kafka, e não como DTOs internos.
KafkaEvento não é DTO no Kafka: contrato vs implementação

02 de abr. de 20264 min

Publicar DTOs internos como eventos acopla serviços, fragiliza consumidores e transforma mudanças simples de payload em incidentes difíceis de diagnosticar.

KafkaArquiteturaEventosBackendIntegração
Ilustracao sobre Spring gerenciar apenas objetos registrados como Bean
SpringSpring só gerencia o que é Bean

01 de abr. de 20262 min

Spring não é mágico: ele só gerencia objetos registrados como Bean dentro do contexto da aplicação.

SpringJava
Ilustração técnica sobre auto commit no Kafka, falha antes da persistência e perda lógica de mensagem.
KafkaCommit automático pode mentir no Kafka

29 de mar. de 20265 min

O auto commit pode passar a impressão de processamento correto, mas esconder perda lógica de mensagens quando a aplicação falha depois do commit e antes de concluir o trabalho.

KafkaSistemas DistribuídosArquiteturaBackendConfiabilidade
Ilustração técnica sobre Apache Kafka 4.2.0 com destaque para share groups, Streams, Connect e upgrade.
KafkaApache Kafka 4.2.0: o que mudou de verdade na prática

15 de mar. de 202610 min

A versão 4.2.0 do Apache Kafka trouxe share groups prontos para produção, Streams Rebalance Protocol em GA, melhorias de observabilidade, Connect, segurança e pontos importantes de upgrade.

KafkaSistemas DistribuídosArquiteturaBackendStreaming
Ilustração técnica sobre rebalance, pausa no consumo e instabilidade de throughput no Kafka.
KafkaRebalance: quando escalar pode piorar o consumo

14 de mar. de 20267 min

A entrada ou saída de consumers em um consumer group pode pausar temporariamente o consumo, elevar lag e piorar latência e throughput em produção.

KafkaSistemas DistribuídosArquiteturaBackendEscalabilidade
Ilustração técnica sobre dimensionamento de partições, paralelismo e custo operacional no Kafka.
KafkaNúmero de partições não é chute. É arquitetura.

12 de mar. de 20265 min

O número de partitions de um tópico define paralelismo, throughput, rebalance e custo operacional. Escolher por achismo cria gargalo cedo ou complexidade demais sem necessidade.

KafkaSistemas DistribuídosArquiteturaBackendEscalabilidade
Ilustração técnica sobre key, particionamento, ordenação e paralelismo no Kafka.
KafkaSem key não há ordem. Nem escala.

10 de mar. de 20266 min

No Kafka, a key define a partition, preserva a ordenação por entidade e limita o paralelismo real do consumo. Escolher mal a key custa throughput.

KafkaSistemas DistribuídosArquiteturaBackendConfiabilidade
Ilustração técnica sobre partições quentes e distribuição desigual de carga no Kafka.
KafkaHot partition: o gargalo invisível no Kafka

08 de mar. de 20267 min

Lag alto nem sempre significa problema no cluster. Entenda como uma key mal escolhida ou uma distribuição desigual de eventos pode concentrar carga em uma única partition e limitar o paralelismo do consumo.

KafkaSistemas DistribuídosArquiteturaBackendConfiabilidade
Ilustração técnica sobre lag concentrado e investigação de gargalos no Kafka.
KafkaLag alto não é problema no broker. É um sintoma.

05 de mar. de 20264 min

Quando o lag sobe, a reação mais comum é abrir chamado para o time de infra ou questionar o cluster. Na maioria das vezes, o broker está perfeitamente saudável. No post anterior, vimos por que muitas "mensagens perdidas" são, na verdade, falhas de processamento no consumer. Aqui, vamos para outro sintoma clássico: lag alto.

KafkaSistemas DistribuídosConfiabilidadeObservabilidadeBackend
Conhecendo o Liquibase

21 de fev. de 201923 min

Introdução Iniciado em 2006, o Liquibase é uma biblioteca que conta com documentação completa e de fácil entendimento, com isso, utilizá-lo não exige uma curva de aprendizado muito...

ArtigosDicasExemplosJavaliquibaseversionamento
SpringSpring MVC com Annotations - Configurando a Camada de Persistência

24 de out. de 20161 min

Fala pessoal, tudo bem? Passando para compartilhar mais uma publicação minha no blog da MATERA Systems da série de posts sobre configuração do Spring sem XML. Neste post, explico c...

DicasExemplosJavaSpring FrameworkSpring Framework com AnnotationsSpring MVCSpring MVC com Annotations
SpringSpring MVC com Anotações

24 de mar. de 20161 min

Fala pessoal, tudo bem? Estou passando mais uma vez para compartilhar meu ultimo post que foi publicado à alguns dias no blog da MATERA Systems. Seguindo a linha dos meus últimos p...

DicasSpring FrameworkSpring MVCSpring MVC com Annotations
SpringSpring Framework com Annotations

06 de nov. de 20152 min

Fala pessoal, tudo bem com vocês? No ultimo Post falei sobre como podemos usar os benefícios da Injeção de Dependências (DI) e Inversão de Controle (IoC) utilizando o Spring Framew...

AnnotationsDicasFrameworkJavaSpringSpring FrameworkSpring Framework com Annotations
Criando Eclipse Luna com JDK 8 [Portable] Windows

22 de abr. de 20152 min

Olá galera, Alguma vez você precisou executar o eclipse em uma máquina que não possuía uma versão do Java SE Development Kit (JDK) instalada? Para complicar a situação, a máquina e...

DicasEclipse + JDK PortableEclipse Luna + JDK 8 PortableEclipse PortableJDK 8 PortableJDK portable
SpringTRABALHANDO COM JSE E SPRING FRAMEWORK

09 de abr. de 20154 min

Olá galera, Neste post falarei um pouco sobre o Spring Framework, uma das ferramentas mais fantásticas que conheci durante minha carreira como desenvolvedor de software. As áreas d...

ExemplosJAVA SEJSESpringSpring + JavaSpring Framework
Projeto Java Desktop com Maven 4º Post

24 de set. de 20133 min

Olá, Projetinho parado há algum tempo devido a falta de tempo, mais vamos dar sequência para concluir. Pra inicio, criei um JFrame dando o nome de Principal. Como o nome já diz, es...

Aplicação Desktop MavenJavaJAVA + MAVENJAVA SEMavenSwing
Auto Deploy Tomcat + Eclipse

18 de mai. de 20132 min

Olá galera, tudo bem? Quem trabalha com Java, Eclipse e Tomcat vai entender bem do que vou falar. Sempre que estamos programando e fazemos alguma alteração em qualquer uma de nossa...

Auto DeployDicasPermGem spaceTomcat
Busca CEP com Clean Ajax

23 de jun. de 20122 min

Recentemente precisei pesquisar algo sobre o Clean Ajax para um trabalho da pós-graduação e como não encontrei muitos exemplos resolvi disponibilizar o exemplo bem simples que dese...

AjaxClean AjaxExemplo Clean AjaxExemplosJavascript
Calculadora simples com Javascript

04 de jun. de 20122 min

Post rápido, só disponibilizando um exemplo bem simples de calculadora desenvolvida com Javascript.

calculadoracalculadora javascriptexemplos calculadoraexemplos calculadora javascriptJavascript
Projeto Java Desktop com Maven 3º Post

28 de mar. de 20126 min

Olá galera, Para este post estarei criando nossas entidades para damos inicio a parte legal do projeto. Bom como disse é sistema vai ser algo bem simples e por se tratar de algo qu...

Aplicação Desktop MavenAplicação Java Desktop MavenDeskTop MavenHibernateUtilityJavaJAVA + MAVENJava DesktopJAVA SEJAVA SE + MAVENMavenOOOrientação a ObjetosPOM.xml
VERSIONANDO APLICAÇÕES COM SUBVERSION

09 de fev. de 20121 min

Olá galera, Estou disponibilizando um resumo de artigo que fiz e foi publicado no 10º ENCONTRO DE INICIAÇÃO CIENTÍFICA E 10º FÓRUM DE PESQUISA DA UNIPAR durante meu ultimo ano da f...

ArtigosSubversionsvn
Projeto Java Desktop com Maven 2º Post

05 de fev. de 20126 min

Boa tarde galera, Para este segundo post estarei disponibilizando 3 arquivos, sendo estes um Interface denominada DAOGENERICO , uma classe que implementa essa interface denominada ...

Aplicação Desktop MavenAplicação Java Desktop Mavendao data access objectDaoGenericoDeskTop MavenHibernateHibernateUtilityJAVA + MAVENJava DesktopJAVA SEJAVA SE + MAVENnetbeansPOM.xml
Projeto Java Desktop com Maven

18 de jan. de 20123 min

Para este post estarei iniciando um projeto de aplicação desktop utilizando o Netbeans, Hibernate e o Maven. Estarei utilizando neste projeto o padrão de persistência DAO (Data Acc...

Aplicação Desktop MavenAplicação Java Desktop Mavendao data access objectdata access objectDeskTop MavenJavaJAVA + MAVENJava DesktopJAVA SEJAVA SE + MAVENMavennetbeans
Feliz 2012 à todos

04 de jan. de 20121 min

Bom galera, passando para desejar um ótimo início de ano a todos. O ultimo ano foi meio corrido e com a faculdade no ultimo ano não tive tempo para fazer muitos posts, Bom para est...

ApresentaçãoFeliz 2012
SpringSpring Framework

21 de out. de 201110 min

Olá galera, algum tempo sem postar nada devido a correria neste final de ano na faculdade, Artigos e TCC, axo que sabem como é. Bom resolvi deixar aqui pra vocês um post de um Arti...

ArtigosJavaSpringSpring + JavaSpring FrameworkTCCTrabalho de conclusão de curso
TCC - Casos de Uso

06 de jul. de 20117 min

Para este post, estarei falando um pouco sobre Diagrama de Casos de Uso, tendo como exemplo um caso de uso criado para representar uma das funcionalidade do meu projeto do TCC. O d...

Analise de SistemasCasos de UsoTCCTrabalho de conclusão de curso
SpringTCC - Ferramentas e Frameworks

24 de mai. de 20117 min

Neste post estarei falando um pouco sobre as ferramentas e frameworks escolhidos para o desenvolvimento deste trabalho. A princípio, na segunda etapa deste trabalho foi feito o lev...

Analise de SistemasEstudo de ViabilidadeHibernateJSFLevantamento de RequisitosMavenPrimefacesRequisitos não funcionaisSpringSpring SecuritySubversionTCCTrabalho de conclusão de cursoViabilidade EconômicaViabilidade Técnica
3ª Etapa TCC - Estudo de Viabilidade

01 de mai. de 20114 min

Após obtermos o conhecimento sobre a regra de negocio da empresa e termos todos os requisitos funcionais e não funcionais do sistema, passamos para o estudo de viabilidade. Algumas...

Analise de SistemasEstudo de ViabilidadeTCCTrabalho de conclusão de cursoViabilidade EconômicaViabilidade LegalViabilidade Técnica
TCC 2º Etapa – Levantamento de requisitos.

25 de mar. de 20114 min

Para esta etapa estarei falando um pouco sobre levantamento de requisitos. Após termos passado a primeira etapa do projeto que foi conhecer a regra de negócios bem a fundo entramos...

Analise de SistemasLevantamento de RequisitosRequisitos FuncionaisRequisitos não funcionaisTCCTrabalho de conclusão de curso
TCC 1ª Etapa - Conhecendo a regra de negócio

13 de mar. de 20114 min

Bom este ano, por seu meu ultimo ano na universidade tem aquele velho trabalho que põe medo e tira o sono de muita gente, o trabalho de conclusão de curso mais conhecido com TCC. R...

regra de negocioTCCTrabalho de conclusão de curso
Orientação a Objetos - OO

19 de fev. de 20117 min

Neste post, tentarei explicar de uma maneira fácil o que é a orientação a objetos. Basicamente orientação a objetos ou OO é a técnica que tem por finalidade aproximar o mundo real ...

OOOrientação a ObjetosOrietação a Objetos - OO
O que é JSF ?

12 de fev. de 20113 min

Basicamente JavaServer Faces ou simplesmente JSF, é um framework que permite a elaboração de interfaces de usuário web colocando componentes em um formulário e ligando-os a objetos...

J2EEJavaServer FacesJSF
Sobre o blog

12 de fev. de 20111 min

Este blog evoluiu comigo. Hoje compartilho engenharia backend para alta escala, arquitetura e boas práticas em Java e Kotlin, com foco em microsserviços e nuvem.

Apresentação

Cookies e analytics

Usamos Google Analytics para medir visitas e melhorar o conteudo. Voce pode aceitar ou recusar. Saiba mais.