Pular para o conteúdo
Cesar Schutz

Artigos — página 2

27 artigos publicados

  1. Desenvolvimento de Software8 min de leitura

    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).

    #Gradle#Spring

  2. DevOps9 min de leitura

    Kubernetes CronJob — concorrência, retries e tempo máximo de execução

    Os campos que protegem rotinas agendadas: concurrencyPolicy, startingDeadlineSeconds, activeDeadlineSeconds, backoffLimit, restartPolicy e timeZone, e o que eles não garantem.

    #Kubernetes#Concorrência

  3. SRE9 min de leitura

    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 LogstashEncoder e o suporte nativo do Spring Boot 3.4+ (ECS, Logstash e GELF), com saídas reais, comparativo e critério de escolha.

    #Spring#Logs#Trade-offs

  4. DevOps10 min de leitura

    SIGTERM e SIGKILL — o ciclo de término de um pod no Kubernetes

    Como o Kubernetes encerra um pod: SIGTERM, SIGKILL e grace period, a corrida com os endpoints que o preStop resolve, exit codes, o graceful shutdown do Spring Boot e a pegadinha do PID 1.

    #Kubernetes#Spring

  5. SRE8 min de leitura

    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.

    #Logs#Spring

  6. Arquitetura de Software8 min de leitura

    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.

    #Trade-offs#Microsserviços

  7. Segurança10 min de leitura

    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.

    #JWT#Criptografia

  8. Dados6 min de leitura

    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.

    #Trade-offs#AWS

  9. Atualizações do Java46 min de leitura

    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.

    #LTS#Migração#JVM#Gradle

  10. Atualizações do Java56 min de leitura

    Java 25 (LTS) — arquivos-fonte compactos, Scoped Values, cache AOT e criptografia pós-quântica

    Do Java 22 ao 25, para quem vem do Java 21: arquivos compactos, import module, construtores flexíveis, Scoped Values, cache AOT, headers compactos, criptografia pós-quântica e as 66 JEPs.

    #LTS#Linguagem#JVM#Criptografia

  11. Atualizações do Java52 min de leitura

    Java 21 (LTS) — virtual threads, pattern matching e Sequenced Collections

    O que mudou do Java 17 ao Java 21: virtual threads, pattern matching para switch, record patterns, Sequenced Collections, ZGC geracional e as 38 JEPs do Java 18 ao 21, com a versão em que cada recurso chegou.

    #LTS#Linguagem#Virtual Threads#Concorrência

  12. Atualizações do Java53 min de leitura

    Java 17 (LTS) — records, sealed classes, text blocks e switch expressions

    Do Java 12 ao 17, versão a versão: records, sealed classes, text blocks, switch expressions, pattern matching para instanceof, ZGC e Shenandoah em produção e o que quebra vindo do Java 11.

    #LTS#Linguagem#JVM#Migração

  • Desenvolvimento de Software8 min de leitura

    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).

    #Gradle#Spring

  • DevOps9 min de leitura

    Kubernetes CronJob — concorrência, retries e tempo máximo de execução

    Os campos que protegem rotinas agendadas: concurrencyPolicy, startingDeadlineSeconds, activeDeadlineSeconds, backoffLimit, restartPolicy e timeZone, e o que eles não garantem.

    #Kubernetes#Concorrência

  • SRE9 min de leitura

    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 LogstashEncoder e o suporte nativo do Spring Boot 3.4+ (ECS, Logstash e GELF), com saídas reais, comparativo e critério de escolha.

    #Spring#Logs#Trade-offs

  • DevOps10 min de leitura

    SIGTERM e SIGKILL — o ciclo de término de um pod no Kubernetes

    Como o Kubernetes encerra um pod: SIGTERM, SIGKILL e grace period, a corrida com os endpoints que o preStop resolve, exit codes, o graceful shutdown do Spring Boot e a pegadinha do PID 1.

    #Kubernetes#Spring

  • SRE8 min de leitura

    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.

    #Logs#Spring

  • Arquitetura de Software8 min de leitura

    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.

    #Trade-offs#Microsserviços

  • Segurança10 min de leitura

    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.

    #JWT#Criptografia

  • Dados6 min de leitura

    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.

    #Trade-offs#AWS

  • Atualizações do Java46 min de leitura

    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.

    #LTS#Migração#JVM#Gradle

  • Atualizações do Java56 min de leitura

    Java 25 (LTS) — arquivos-fonte compactos, Scoped Values, cache AOT e criptografia pós-quântica

    Do Java 22 ao 25, para quem vem do Java 21: arquivos compactos, import module, construtores flexíveis, Scoped Values, cache AOT, headers compactos, criptografia pós-quântica e as 66 JEPs.

    #LTS#Linguagem#JVM#Criptografia

  • Atualizações do Java52 min de leitura

    Java 21 (LTS) — virtual threads, pattern matching e Sequenced Collections

    O que mudou do Java 17 ao Java 21: virtual threads, pattern matching para switch, record patterns, Sequenced Collections, ZGC geracional e as 38 JEPs do Java 18 ao 21, com a versão em que cada recurso chegou.

    #LTS#Linguagem#Virtual Threads#Concorrência

  • Atualizações do Java53 min de leitura

    Java 17 (LTS) — records, sealed classes, text blocks e switch expressions

    Do Java 12 ao 17, versão a versão: records, sealed classes, text blocks, switch expressions, pattern matching para instanceof, ZGC e Shenandoah em produção e o que quebra vindo do Java 11.

    #LTS#Linguagem#JVM#Migração