coding weekly #320

Newsletters - 20/Nov/2024 - por Campus Code
A sua newsletter da Campus Code • Edição 320 - Novembro de 2024

Hey! Tudo bem?

Código legado é sinônimo de grandes desafios para a equipe de desenvolvimento. Isso porque aplicações ou trechos de código que foram criados em tecnologias, padrões ou práticas antigas continuam sendo utilizados e geram discussões complexas, como a escolha por modernizar ou reescrever. Selecionamos alguns artigos com estratégias para lidar com sistemas legados.

Você também vê 5 lições de um pequeno incidente de produção, como a Uber reduziu o log em 99%, a importância da indexação para o desempenho de bancos de dados, top-level await no Node.js 23 e transações distribuídas em Go.

Boa leitura!

LEGADO

Uma mulher olha para o teto no interior de uma casa, com vários tipos de lâmpadas natalinas emaranhadas, e a legenda 'refatorando código legado'.
Guia de desenvolvimento para trabalhar com código legado

Esse guia compila estratégias práticas para lidar com bases de código legadas, partindo do princípio de focar em uma parte do código por vez. O autor destaca a importância de entender o histórico do código e detalha o que é necessário priorizar em um cenário de introdução de novas funcionalidades enquanto lidam com melhorias incrementais.

Sistemas legados e costuras

Martin Fowler explora como lidar com sistemas legados identificando e criando "seams" (ou costuras): pontos onde é possível alterar o comportamento do sistema sem modificar diretamente o código-fonte. Esses pontos são valiosos para simplificar testes, inserir sondas para ganhar visibilidade e redirecionar o fluxo de programa para novos módulos como parte da modernização de sistemas legados.

Modernizando código Ruby legado usando RuboCop e Standard

Esse artigo aborda a importância de manter um estilo de código padronizado e consistente na modernização de sistemas legados. Explica, também, como configurar as gems RuboCop e Standard para corrigir automaticamente problemas de estilo.

CAMPUSCODERS INDICAM

Um homem vestindo casaco e capuz olha incrédulo para a tela de um computador, com a mão na boca.
5 lições de um pequeno incidente de produção

Uma pequena falha em um projeto resultou no não envio, por e-mail, de uma edição diária de resumos de artigos populares sobre AWS. Era um problema simples relacionado ao tamanho das mensagens na fila do SQS, mas a experiência ensinou o valor de práticas como observabilidade, arquitetura robusta e testes, além de reforçar a importância do sistema estar preparado para problemas mais graves no futuro.

Como a Uber reduziu o log em 99%

Esse artigo detalha como a Uber otimizou drasticamente o armazenamento de logs em seus sistemas distribuídos. A empresa identificou que uma parte significativa dos dados de log era redundante ou não essencial. Para resolver isso, implementaram um método de compressão específico, adaptando ferramentas open-source para melhor atender às suas necessidades.

A importância da indexação para o desempenho de bancos de dados

Esse texto explica como a criação de índices apropriados em colunas específicas permite que o sistema de gerenciamento de banco de dados (SGBD) localize e recupere rapidamente os dados necessários, resultando em tempos de execução de consultas mais rápidos e melhor desempenho geral.

Node.js 23 e o top-level await

O novo recurso no Node.js 23 permite que arquivos CommonJS (require()) carreguem módulos ESM, mas isso pode trazer complicações que afetam toda a árvore de dependência do arquivo onde foi aplicado. O autor desse artigo discute os possíveis problemas de compatibilidade com versões anteriores e traz estratégias para mantenedores de pacotes.

Transações distribuídas em Go

Implementar transações distribuídas exige cuidado para evitar problemas de consistência e desempenho, além de não comprometer a simplicidade do sistema. Esse artigo explora os desafios e soluções relacionados a transações distribuídas em sistemas baseados em microsserviços usando a linguagem Go.

Campuscoder que contribuiu com a curadoria da semana: André Benjamim 💚

Campus Code