Pular para o conteúdo

Autor

Equipe Tech do Sonne

46 publicações

Migrations de banco: evoluir o schema sem quebrar produção

Migrations de banco: evoluir o schema sem quebrar produção

Como versionar o schema, escrever migrations reversíveis e aplicar mudanças de estrutura em produção sem downtime, com o padrão expand-contract explicado.

Por Equipe Tech do Sonne

Ler →
Chaves primárias: sequencial, UUID ou ULID?

Chaves primárias: sequencial, UUID ou ULID?

Auto-incremento, UUID e ULID comparados por unicidade, ordenação, tamanho, localidade de índice e segurança. Como escolher a chave certa sem arrependimento.

Por Equipe Tech do Sonne

Ler →
SQL x NoSQL: escolher o banco pelo formato do dado

SQL x NoSQL: escolher o banco pelo formato do dado

Relacional, documento, chave-valor, colunar e grafo comparados pelo formato e pelo padrão de acesso do dado, não por moda. Um guia de decisão prático.

Por Equipe Tech do Sonne

Ler →
JOINs de SQL explicados de forma visual

JOINs de SQL explicados de forma visual

INNER, LEFT, RIGHT, FULL e CROSS JOIN explicados com exemplos concretos de tabelas, condições de junção e as armadilhas que multiplicam ou somem linhas.

Por Equipe Tech do Sonne

Ler →
Níveis de isolamento: os fenômenos da concorrência no banco

Níveis de isolamento: os fenômenos da concorrência no banco

Dirty read, non-repeatable read e phantom read explicados, e como READ COMMITTED, REPEATABLE READ e SERIALIZABLE trocam garantia por desempenho.

Por Equipe Tech do Sonne

Ler →
Transações e ACID: o que garante que seu dado não corrompe

Transações e ACID: o que garante que seu dado não corrompe

Atomicidade, consistência, isolamento e durabilidade explicados na prática, com exemplos de transferência bancária, commit, rollback e falhas reais.

Por Equipe Tech do Sonne

Ler →
Modelagem relacional: normalização até a 3FN sem susto

Modelagem relacional: normalização até a 3FN sem susto

Entenda 1FN, 2FN e 3FN com exemplos concretos de tabelas, chaves e dependências funcionais, e quando desnormalizar sem quebrar a integridade.

Por Equipe Tech do Sonne

Ler →
Acessibilidade na prática: HTML semântico, foco e ARIA

Acessibilidade na prática: HTML semântico, foco e ARIA

Acessibilidade não é um extra: é construir com HTML semântico, gerenciar o foco e usar ARIA só quando necessário. A mecânica prática de cada peça.

Por Equipe Tech do Sonne

Ler →
Validação de formulários: no cliente para UX, no servidor para segurança

Validação de formulários: no cliente para UX, no servidor para segurança

Por que validar no cliente e no servidor não é redundância: um cuida da experiência, o outro da segurança. A mecânica e a divisão correta de papéis.

Por Equipe Tech do Sonne

Ler →
Otimização de imagens para web: formatos, dimensões e carregamento

Otimização de imagens para web: formatos, dimensões e carregamento

Imagens costumam ser o peso maior de uma página. Entenda formatos, dimensões corretas, compressão e carregamento para servir só o necessário.

Por Equipe Tech do Sonne

Ler →
WebSockets na prática: comunicação em tempo real no navegador

WebSockets na prática: comunicação em tempo real no navegador

Como os WebSockets abrem um canal permanente entre navegador e servidor para tempo real, quando usá-los e o que muda em relação ao HTTP tradicional.

Por Equipe Tech do Sonne

Ler →
Renderização no servidor x no cliente: SSR, CSR e hidratação

Renderização no servidor x no cliente: SSR, CSR e hidratação

SSR, CSR e hidratação sem jargão: onde o HTML é montado, o que o usuário vê primeiro e por que a escolha muda velocidade, SEO e interatividade.

Por Equipe Tech do Sonne

Ler →
Cookies, sessões e tokens: mantendo o login na web

Cookies, sessões e tokens: mantendo o login na web

Como a web lembra quem você é entre requisições: cookies, sessões no servidor e tokens, com a mecânica e as decisões de segurança de cada abordagem.

Por Equipe Tech do Sonne

Ler →
Cache HTTP na prática: Cache-Control, ETag e revalidação

Cache HTTP na prática: Cache-Control, ETag e revalidação

Como o cache HTTP realmente funciona: frescor, revalidação, ETag e as diretivas de Cache-Control que decidem o que é reusado sem baixar de novo.

Por Equipe Tech do Sonne

Ler →
CORS explicado: por que o navegador bloqueia sua requisição

CORS explicado: por que o navegador bloqueia sua requisição

CORS não é o servidor te bloqueando: é o navegador protegendo o usuário. Entenda a mecânica de origens, preflight e cabeçalhos que libera a requisição.

Por Equipe Tech do Sonne

Ler →
HTTP na prática: métodos, status e cabeçalhos que todo dev usa

HTTP na prática: métodos, status e cabeçalhos que todo dev usa

Os métodos, códigos de status e cabeçalhos HTTP que aparecem todo dia no trabalho de quem constrói web, explicados pela mecânica real da requisição.

Por Equipe Tech do Sonne

Ler →
Como o navegador renderiza uma página: o caminho crítico

Como o navegador renderiza uma página: o caminho crítico

Entenda o caminho crítico de renderização: do HTML recebido ao primeiro pixel pintado, e as decisões práticas que deixam sua página rápida.

Por Equipe Tech do Sonne

Ler →
Dívida técnica: como identificar, medir e pagar sem parar o mundo
1 min de leitura

Dívida técnica: como identificar, medir e pagar sem parar o mundo

Dívida técnica não é código feio — é atrito que cobra juros a cada entrega. Um guia para identificar, medir e pagar a dívida sem heroísmo nem sprints de limpeza.

Por Equipe Tech do Sonne

Ler →
Documentação que a equipe realmente usa: o que escrever, o que jogar fora

Documentação que a equipe realmente usa: o que escrever, o que jogar fora

Por que a documentação apodrece, os quatro tipos de doc que resolvem necessidades distintas, o README e o ADR que importam, e o que nunca documentar.

Por Equipe Tech do Sonne

Ler →
Refatoração segura passo a passo: mudar o código sem quebrar o que funciona
1 min de leitura

Refatoração segura passo a passo: mudar o código sem quebrar o que funciona

Refatorar é mudar a estrutura sem mudar o comportamento — e só é seguro com rede de testes e passos pequenos. Um guia do processo, não só do código bonito.

Por Equipe Tech do Sonne

Ler →
Design patterns essenciais: os padrões que você vai reconhecer no código de todo dia
1 min de leitura

Design patterns essenciais: os padrões que você vai reconhecer no código de todo dia

Design patterns não são receitas para decorar — são vocabulário compartilhado. Um guia dos padrões que aparecem de verdade no código do dia a dia, e do risco de exagerar.

Por Equipe Tech do Sonne

Ler →
Autenticação e autorização: dois conceitos que todo mundo confunde (e não deveria)
1 min de leitura

Autenticação e autorização: dois conceitos que todo mundo confunde (e não deveria)

Autenticação é provar quem você é; autorização é decidir o que você pode. Confundir os dois é a origem de metade das falhas de segurança. Um guia de conceitos que duram.

Por Equipe Tech do Sonne

Ler →
Cache: quando usar, onde colocar e como não se enganar com dado velho

Cache: quando usar, onde colocar e como não se enganar com dado velho

Cache é a otimização mais poderosa e mais traiçoeira do desenvolvimento. Um guia sobre camadas, estratégias e o problema de verdade: a invalidação.

Por Equipe Tech do Sonne

Ler →
Complexidade de algoritmos sem susto: entendendo o Big-O de verdade
1 min de leitura

Complexidade de algoritmos sem susto: entendendo o Big-O de verdade

O Big-O assusta na entrevista e desaparece no dia a dia — mas é a ferramenta que explica por que seu código fica lento quando os dados crescem. Um guia sem susto.

Por Equipe Tech do Sonne

Ler →
Tratamento de erros que não engana: exceções, resultados e falhas que você consegue depurar

Tratamento de erros que não engana: exceções, resultados e falhas que você consegue depurar

Erros esperados não são bugs, e código que engole exceção esconde a causa. Um guia prático de tratamento de erros que você consegue depurar às 3 da manhã.

Por Equipe Tech do Sonne

Ler →
Os princípios SOLID na prática: cinco regras para um código que aguenta mudança

Os princípios SOLID na prática: cinco regras para um código que aguenta mudança

SOLID explicado sem dogma: o que cada princípio resolve, exemplos de violação e correção, e quando aplicá-lo custa mais do que a bagunça que evita.

Por Equipe Tech do Sonne

Ler →
Concorrência e paralelismo: o que muda quando seu código faz várias coisas ao mesmo tempo

Concorrência e paralelismo: o que muda quando seu código faz várias coisas ao mesmo tempo

Race conditions, deadlocks, locks e o modelo de memória: entenda por que código concorrente é difícil e quais padrões o tornam seguro e previsível.

Por Equipe Tech do Sonne

Ler →
Estruturas de dados essenciais: escolher a estrutura certa é escolher o desempenho

Estruturas de dados essenciais: escolher a estrutura certa é escolher o desempenho

Array, lista ligada, hash table, árvore e grafo: entenda os trade-offs de cada estrutura de dados e por que a escolha certa define o desempenho do seu código.

Por Equipe Tech do Sonne

Ler →
Code review eficaz: como revisar código sem virar gargalo nem carimbo

Code review eficaz: como revisar código sem virar gargalo nem carimbo

O que procurar numa revisão, como dar feedback que constrói, e por que a maioria dos code reviews desperdiça a oportunidade mais valiosa da engenharia em equipe.

Por Equipe Tech do Sonne

Ler →
Carreira em engenharia de software: o que ninguém te conta sobre a progressão

Carreira em engenharia de software: o que ninguém te conta sobre a progressão

Júnior, pleno, sênior e além: o que muda de verdade em cada nível, por que a progressão não é sobre saber mais tecnologias, e como crescer sem se perder.

Por Equipe Tech do Sonne

Ler →
Como os índices SQL realmente funcionam (e por que sua query está lenta)

Como os índices SQL realmente funcionam (e por que sua query está lenta)

A B-tree, a busca sequencial, os índices compostos e o plano de execução: entenda o que acontece por baixo de uma query para tornar bancos de dados rápidos.

Por Equipe Tech do Sonne

Ler →
Design de APIs REST: os princípios que separam uma API agradável de uma dor de cabeça

Design de APIs REST: os princípios que separam uma API agradável de uma dor de cabeça

Recursos, verbos, códigos de status, versionamento e paginação: um guia prático para projetar APIs REST que os consumidores entendem e que envelhecem bem.

Por Equipe Tech do Sonne

Ler →
Git além dos comandos: entendendo o modelo mental que evita as enrascadas

Git além dos comandos: entendendo o modelo mental que evita as enrascadas

Commits, branches, merge e rebase fazem sentido quando você entende o grafo por baixo. Um guia do modelo mental do Git e dos fluxos de trabalho que funcionam.

Por Equipe Tech do Sonne

Ler →
A pirâmide de testes: por que testar rápido e testar o suficiente não são a mesma coisa

A pirâmide de testes: por que testar rápido e testar o suficiente não são a mesma coisa

Unitários, de integração e end-to-end: entenda a pirâmide de testes, o que cada camada prova, e como montar uma suíte que dá confiança sem virar um peso morto.

Por Equipe Tech do Sonne

Ler →
Acoplamento e coesão: os dois eixos que decidem a arquitetura do seu software

Acoplamento e coesão: os dois eixos que decidem a arquitetura do seu software

Antes de escolher microsserviços ou monólito, entenda acoplamento e coesão — os dois princípios que realmente determinam se seu sistema será fácil ou impossível de evoluir.

Por Equipe Tech do Sonne

Ler →
Clean Code na prática: escrevendo código que a próxima pessoa consegue ler

Clean Code na prática: escrevendo código que a próxima pessoa consegue ler

Nomes, funções, comentários e níveis de abstração: um guia prático de clean code para escrever código legível, testável e barato de manter no longo prazo.

Por Equipe Tech do Sonne

Ler →
Go errors v2: do 'if err != nil' ao que muda em 1.

Go errors v2: do 'if err != nil' ao que muda em 1.26

errors.Join, %w, wrapping em cadeia: o que evoluiu nos últimos cinco anos e por que importa.

Por Equipe Tech do Sonne

Ler →
Rust no front da fila: media-svc na real

Rust no front da fila: media-svc na real

Por que escolhemos Rust pra dois serviços de uma plataforma 90% Go e o que aprendemos.

Por Equipe Tech do Sonne

Ler →
ULID em coluna UUID: a interop que evitou uma migr

ULID em coluna UUID: a interop que evitou uma migração inteira

Como armazenar ULIDs em colunas UUID sem perder funcionalidade nem performance.

Por Equipe Tech do Sonne

Ler →
Caddy on_demand_tls explicado em 10 minutos

Caddy on_demand_tls explicado em 10 minutos

Como servir TLS pra milhares de domínios sem pre-provisionar certificado — e como evitar abuso.

Por Equipe Tech do Sonne

Ler →
NATS JetStream pra outbox, com o mínimo de cerimônia

NATS JetStream pra outbox, com o mínimo de cerimônia

Padrão outbox sem Kafka, sem Debezium, sem sofrimento. Cinco serviços em produção dizem que funciona.

Por Equipe Tech do Sonne

Ler →
SpiceDB sem mitologia: schema, caveats e por que importa

SpiceDB sem mitologia: schema, caveats e por que importa

Authz como serviço com modelo Zanzibar — quando vale, como modelar, onde a complexidade aparece.

Por Equipe Tech do Sonne

Ler →
Postgres schema-per-service: o por que e o quando dói

Postgres schema-per-service: o por que e o quando dói

Uma instância de Postgres, 15 schemas, 15 serviços. A defesa de uma escolha contra-intuitiva.

Por Equipe Tech do Sonne

Ler →
Ansible idempotente: 15 playbooks pra um deploy reproduzível

Ansible idempotente: 15 playbooks pra um deploy reproduzível

Como camverly-ops cobre provisão, deploy, update e bootstrap sem precisar de SSH manual.

Por Equipe Tech do Sonne

Ler →
Astro 5 SSR no Node 22: lições do web-public em produção

Astro 5 SSR no Node 22: lições do web-public em produção

Por que SSR em Astro é diferente do que Next.js te ensinou, e o que ganhamos com isso.

Por Equipe Tech do Sonne

Ler →
SystemD que não vaza: NoNewPrivileges, ProtectSystem e PrivateTmp

SystemD que não vaza: NoNewPrivileges, ProtectSystem e PrivateTmp

Três flags que isolam serviços a custo zero. O que cada uma faz e quando ativar.

Por Equipe Tech do Sonne

Ler →