Uma das características que mais gosto em Rust é que o compilador faz um enorme esforço para detectar prováveis erros de tempo de execução na compilação. O preço que pagamos por essa “ajuda” do compilador é ter de nos adaptar a alguns conceitos exóticos em programação. Os benefícios são as garantias de que “erros bobos” […]
The Thundering Herd Problem
I have a client who implemented the following caching strategy: In this strategy, each server maintains his own local and in-memory cache preventing repetitive requests to the original data source. The beauty of this strategy is that it is simple to understand and to implement. Of course, it has some drawbacks. For example, requests for […]
Como a linguagem Rust resolve o desafio de desalocação de objetos (com ownership, sem memory-leaks e sem GC)
Escrever programas que lidam bem com a memória não é tarefa fácil. Em C++, é fácil escrever programas que não desalocam objetos (os famosos memory-leaks) ou que tentam usar objetos que já foram desalocados. Em C# (e Java), é fácil sobrecarregar o GC e sofrer penalidades sérias de performance. Rust tenta resolver esse problema através […]
Conciliando Agilidade com Práticas de Arquitetura de Software
Como desenvolvedores, nosso trabalho é entregar software que o cliente quer e precisa, com o melhor tempo e custo, mitigando riscos. Muitos desenvolvedores, adeptos de processos ágeis, ansiosos em dispensar processos desnecessários no desenvolvimento, acreditam que técnicas de arquitetura de software podem ser descartadas. Infelizmente, [tweet]a busca “cega” (quando desprovida de critérios) pela agilidade tem […]
Risk-driven Architecture: O que é? Por que é importante?
TL;DR Deveríamos determinar que técnicas e métodos de arquitetura de software utilizar conforme o risco associado a execução ou aos resultados de cada projeto. Quanto maior o risco, maior o rigor necessário. Essa é a ideia central de uma aborgagem que vem crescendo em popularidade chamada Risk-driven Architecture. Esse é o primeiro post de uma […]
Vídeo da nossa palestra sobre microsserviços na APIX 2018!
Ano passado, estivemos presentes na APIX – conferência organizada pela Sensedia. Na ocasião, falamos sobre nossas experiências em projetos com microsserviços. Aqui está o registro. Neste ano, participaremos novamente do evento. Confira em nossa agenda.
Essential aspects to take in consideration when selecting a caching strategy
In the last post, we discussed the basics of caching. In this post, I would like to recommend the adoption of a convenient abstraction that can help us to identify the best approach for caching for different contexts. The abstraction I recommend here was inspired by an excellent Plurasight course, authored by Elton Stoneman (the […]
Caching Basics: Why? When? What? Where? Writing, replacement, and invalidation Strategies
[tweet]Caching is essential for the scalability and performance of data-intensive applications. But it can be a nightmare if not well-designed or well-implemented[/tweet] Let me share three stories with you: Story #1 Some time ago, I helped a company which was facing performance issues in a .NET web application. With no apparent reason, that application was […]
Vídeo do Hangout sobre Performance no Canal .NET
Ontem a noite, tivemos a oportunidade de bater-papo com o pessoal do Canal .NET sobre performance. Abaixo, está o registro em vídeo dessa conversa. Se desejar, deixe sua opinião e dúvidas nos comentários.
Elimine tarefas repetitivas e melhore o engajamento do seu time de SRE.
A disciplina de SRE, site reliability engineering, em um dos seus propósitos é elimiar tarefas repetitivas e aumentar a tração em atividades de engenharia. Na prática, algumas divisões nas tarefas de um SRE, precisam ser adotadas para garantir o engajamento, as divisões devem ser feitas atendendo a seguinte perspectiva, tarefas operacionais, tarefas de engenharia e […]