[tweet]Software bom, que atende ao negócio com custo apropriado, demanda boas práticas de engenharia de software.[/tweet] Dentre essas práticas, destaca-se, sem dúvidas, o desenvolvimento de testes automatizados. Entretanto, não podemos ignorar o fato de que estes custam tempo e dinheiro, afinal, são códigos que precisam ser produzidos e mantidos. Quando são mal feitos, não compensam […]
Sistemas distribuídos, como os baseados em microsserviços, exigem adoção de práticas para observabilidade
[tweet]O racional de converter um monólito em microsserviços é transferir parte da complexidade do desenvolvimento para a operação.[/tweet] Afinal, microsserviços tem menos código para entender, logo, desde que pouco acoplados, individualmente, são mais baratos de manter. Em compensação, quanto mais processos para “operar”, mais complexa se torna a operação. Daí a emergência para, em contextos […]
Palestra “Priorizando dívidas técnicas e modernizando o legado”
A pressão por entregas na maioria dos projetos faz com desenvolvedores tenham que assumir alguma forma de dívida técnica. Com o tempo, essas dívidas técnicas, se não resolvidas, acabam comprometendo significativamente a capacidade dos times de continuar as demandas dos negócios. Em nossa experiência, estratégias ingênuas de resolução de dívidas técnicas falham, com muita frequência, […]
Ao “extrair” um microsserviço de um monólito, elimine duplicação de “features” e estruture os times adequadamente
Uma vez que um time, transformando um monólito em microsserviços, tenha efetivamente, 1) adotado práticas e técnicas para desassociar os processos de deploy e release; 2) colocado um “primeiro” microsserviço imperfeito em produção e 3) controlado acessos a base de dados; devemos garantir que todo “código morto” no monólito seja eliminado e garantir que os […]
Pequenas mudanças no código, impacto gigantesco em produção
As vezes, pequenas mudanças no código podem ter impacto gigantesco na performance de um sistema em produção. Constatamos isso, recentemente, trabalhando na otimização de uma API externa para cálculo de fretes. Sempre que aparecem dificuldades para suportar a escala, é comum considerar aumentar o poder computacional melhorando a configuração do hardware utilizado ou investindo em mais […]
Devemos saber diferenciar aplicações IO-bound e CPU-bound para trabalhar de maneira eficiente com Python
Em que casos a utilização das bibliotecas para desenvolvimento de aplicações concorrentes é apropriada e pode resultar em um aumento de performance, utilizando Python? Para responder essa pergunta, primeiro precisamos discutir sobre como o interpretador do Python funciona. No decorrer do post, ao detalhar o funcionamento do interpretador, estaremos nos referindo ao CPython, que traz […]
Transformando monólitos em microsserviços, comece a restringir o acesso de bases de dados “ASAP”
Em um post anterior, indicamos que a primeira implementação de microsserviço, a partir de um sistema monolítico, não precisa (nem deve) ser perfeita. É plenamente razoável que essa primeira implementação ainda acesse diretamente, por exemplo, a base de dados do sistema monolítico. Além disso, é muito importante que o acesso ao microsserviço aconteça através de […]
The Pragmatic Programmer, 20th anniversary edition
A primeira edição do livro que estamos recomendando, publicada há mais de 20 anos, é considerada uma das obras mais influentes disponíveis para a boa prática da programação. A versão revisada, The Pragmatic Programmer, 20th anniversary edition – de David Thomas e Andrew Hunt – consegue ser ainda melhor. O livro aborda temas complexos de forma […]
Vídeo da palestra sobre “Distributed Tracing” no DevDay 2019
Nesse post, vídeo da palestra sobre arquitetura e tracing distribuído que ministramos no DevDay 2019. Essa palestra está relacionada entre as “10 mais” da InfoQ Brasil no mês de janeiro. Boa parte do conteúdo dessa palestra já foi discutido em uma série sobre o tema aqui nos sites da EximiaCo. Na palestra, também fazemos uma […]
Quando adotar técnicas de aprendizagem computacional?
Machine Learning e outras técnicas de IA estão revolucionando os negócios e são aspecto central dos saltos de produtividade que temos observado. Todos os grandes players – incluindo Microsoft, IBM, Google, etc – oferecem alternativas para reduzir as curvas de aprendizado e custo associados as técnicas e tecnologias. Entretanto, ainda consideramos baixa a adoção de […]