Artigos — página 2
28 artigos publicados
AOP no Spring — JDK Dynamic Proxy, CGLIB e aspects customizados
Como o Spring aplica log, transação e métricas fora da regra de negócio: conceitos de AOP, JDK Dynamic Proxy ou CGLIB (e por que o Boot prefere CGLIB), a self-invocation e aspects próprios.
AopUtils.
getTargetClass() — desembrulhando os proxies do SpringCom o bean envolto em proxy,
bean.getClass()devolve a classe do proxy e a leitura de anotações falha. ComoAopUtils.getTargetClass()recupera a classe real e quando usarultimateTargetClass().AtomicBoolean — o sinalizador thread-safe da parada graciosa
Por que um
booleancomum pode não ser visto por outra thread, quandovolatilebasta, por que preferirAtomicBooleane como ligar oSIGTERMa um job sem encerrar a JVM no meio de um lote.Gradle — quando usar implementation, api, compileOnly e as demais configurações
Cada configuração de dependência do Gradle alimenta um classpath: compilação, execução, processadores de anotação ou testes. Guia para bibliotecas e starters Spring Boot, com o papel do
platform(BOM).Kubernetes CronJob — concorrência, retries e tempo máximo de execução
Os campos que protegem rotinas agendadas:
concurrencyPolicy,startingDeadlineSeconds,activeDeadlineSeconds,backoffLimit,restartPolicyetimeZone, e o que eles não garantem.Logging estruturado em Spring Boot — LogstashEncoder vs o suporte nativo do 3.4+
Cada log como uma linha JSON pesquisável: o caminho clássico com
LogstashEncodere o suporte nativo do Spring Boot 3.4+ (ECS, Logstash e GELF), com saídas reais, comparativo e critério de escolha.SIGTERM e SIGKILL — o ciclo de término de um pod no Kubernetes
Como o Kubernetes encerra um pod:
SIGTERM,SIGKILLe grace period, a corrida com os endpoints que opreStopresolve, exit codes, o graceful shutdown do Spring Boot e a pegadinha do PID 1.Wide events e canonical log lines — a evolução do logging estruturado
Um evento rico em contexto por requisição, no lugar de dezenas de logs parciais: as canonical log lines da Stripe, cardinalidade e Observability 2.0, um filtro em Spring Boot e tail sampling.
Overhead vs overkill — o custo de toda escolha e o exagero dela
Overhead é o custo extra que toda decisão técnica cobra; overkill é a solução desproporcional ao problema. As seis dimensões do overhead e um critério prático para reconhecer overengineering.
JWT — a estrutura e o significado de cada campo
As três partes de um JWT, campo a campo: headers JOSE (
alg,kid…), claims registradas (iss,sub,exp…), algoritmos de assinatura e cuidados de validação. O payload não é criptografado.Data lake vs data warehouse — e onde entra o lakehouse
Schema-on-write vs schema-on-read, ETL vs ELT, dado curado vs dado bruto: o comparativo direto entre Data Warehouse e Data Lake, por que os dois costumam trabalhar juntos e o que o Lakehouse propõe unificar.
Guia de atualizações do Java
Como planejar a migração entre LTS do Java: ciclo de releases, distribuições e licenças, versões mínimas do ecossistema, processo em cinco fases com rollback, segurança, desempenho, containers e CI.
AOP no Spring — JDK Dynamic Proxy, CGLIB e aspects customizados
Como o Spring aplica log, transação e métricas fora da regra de negócio: conceitos de AOP, JDK Dynamic Proxy ou CGLIB (e por que o Boot prefere CGLIB), a self-invocation e aspects próprios.
AopUtils.
getTargetClass() — desembrulhando os proxies do SpringCom o bean envolto em proxy,
bean.getClass()devolve a classe do proxy e a leitura de anotações falha. ComoAopUtils.getTargetClass()recupera a classe real e quando usarultimateTargetClass().AtomicBoolean — o sinalizador thread-safe da parada graciosa
Por que um
booleancomum pode não ser visto por outra thread, quandovolatilebasta, por que preferirAtomicBooleane como ligar oSIGTERMa um job sem encerrar a JVM no meio de um lote.Gradle — quando usar implementation, api, compileOnly e as demais configurações
Cada configuração de dependência do Gradle alimenta um classpath: compilação, execução, processadores de anotação ou testes. Guia para bibliotecas e starters Spring Boot, com o papel do
platform(BOM).Kubernetes CronJob — concorrência, retries e tempo máximo de execução
Os campos que protegem rotinas agendadas:
concurrencyPolicy,startingDeadlineSeconds,activeDeadlineSeconds,backoffLimit,restartPolicyetimeZone, e o que eles não garantem.Logging estruturado em Spring Boot — LogstashEncoder vs o suporte nativo do 3.4+
Cada log como uma linha JSON pesquisável: o caminho clássico com
LogstashEncodere o suporte nativo do Spring Boot 3.4+ (ECS, Logstash e GELF), com saídas reais, comparativo e critério de escolha.SIGTERM e SIGKILL — o ciclo de término de um pod no Kubernetes
Como o Kubernetes encerra um pod:
SIGTERM,SIGKILLe grace period, a corrida com os endpoints que opreStopresolve, exit codes, o graceful shutdown do Spring Boot e a pegadinha do PID 1.Wide events e canonical log lines — a evolução do logging estruturado
Um evento rico em contexto por requisição, no lugar de dezenas de logs parciais: as canonical log lines da Stripe, cardinalidade e Observability 2.0, um filtro em Spring Boot e tail sampling.
Overhead vs overkill — o custo de toda escolha e o exagero dela
Overhead é o custo extra que toda decisão técnica cobra; overkill é a solução desproporcional ao problema. As seis dimensões do overhead e um critério prático para reconhecer overengineering.
JWT — a estrutura e o significado de cada campo
As três partes de um JWT, campo a campo: headers JOSE (
alg,kid…), claims registradas (iss,sub,exp…), algoritmos de assinatura e cuidados de validação. O payload não é criptografado.Data lake vs data warehouse — e onde entra o lakehouse
Schema-on-write vs schema-on-read, ETL vs ELT, dado curado vs dado bruto: o comparativo direto entre Data Warehouse e Data Lake, por que os dois costumam trabalhar juntos e o que o Lakehouse propõe unificar.
Guia de atualizações do Java
Como planejar a migração entre LTS do Java: ciclo de releases, distribuições e licenças, versões mínimas do ecossistema, processo em cinco fases com rollback, segurança, desempenho, containers e CI.