-
Antirez (Salvatore Sanfilippo)
30/10/2014 12:28
O post do blog da Stripe sobre Redis revela que o uso do fork() pode causar picos de latência, especialmente em instâncias EC2 com Xen, que não é exatamente conhecido por sua velocidade. Quando a latência atinge até um segundo durante o fork, isso pode resultar em amostras com latência elevada, impactando o 99º percentil. A diferença crucial aqui é que nem todos os usuários sentirão essa latência, apenas aqueles que coincidirem com o momento do fork. Para quem trabalha com aplicativos sensíveis à latência, isso merece atenção para evitar surpresas desagradáveis.
-
Antirez (Salvatore Sanfilippo)
29/10/2014 08:17
Recentemente, os engenheiros do Stripe falaram sobre como a nova replicação sem disco do Redis pode mudar as regras do jogo. Agora, com a persistência opcional, é bacana ver a mudança na arquitetura que eles estão fazendo para atender melhor casos de uso. Além disso, a migração para PostgreSQL sublinha que às vezes um banco de dados relacional é mais adequado do que uma solução em memória, especialmente quando se mede a latência. Como @aphyr comentou, a replicação síncrona do Postgres parece ter um desempenho superior, mesmo que o Twitter esteja transbordando de opiniões intensas sobre métricas de latência.
-
Antirez (Salvatore Sanfilippo)
27/10/2014 15:34
Replicação sem disco no Redis parece uma ideia simples, mas como qualquer dev sabe, o diabo está nos detalhes. A proposta surge para resolver o problema de performance na sincronização entre master e slaves, especialmente para aqueles que não querem perder tempo com disco. "Replicação forçava usuários a usar disco, mesmo sem precisar de durabilidade" é um lembrete de que, às vezes, a tecnologia complica o que deveria ser simples. Que comece a corrida para implementar essa funcionalidade com um pouco mais de eficiência... e menos I/O desnecessário.
-
Antirez (Salvatore Sanfilippo)
21/10/2014 14:18
O dilema do Redis Sentinel traz à tona o eterno debate sobre resiliência em sistemas distribuídos. Como destacou Aphyr, "eles mataram -9 o master, o que causou um split brain...". No entanto, o verdadeiro problema foi que o mestre estava configurado para reiniciar com um conjunto de dados limpo. Isso é como se você formatasse o disco rígido antes de reinstalar o sistema operacional e ainda esperasse que tudo funcionasse normalmente. Assim, a questão não é só sobre o Sentinel, mas sobre a configuração dos nós que pode acabar em um cenário de falhas bizantinas.
-
Antirez (Salvatore Sanfilippo)
09/10/2014 11:35
Depois de mais de uma década de desenvolvimento e algumas paradas de coração, o Redis finalmente está apresentando seu suporte a clusters com o Redis 3.0.0. "Parece que a decisão de começar o projeto estava mais para a pressa do que para a preparação", e se tem uma coisa que aprendemos no mundo dos devs é que começar um projeto na hora errada pode resultar em uma bagunça maior do que código legado. O que eu mais curto é que a comunidade estava lá, insistindo no sharding e na garantia de failover, enquanto o criador foi literalmente aprendendo a lidar com programação distribuída no caminho. É isso que eu chamo de um projeto evolutivo: em vez de abrir mão, eles foram atrás, refinando e aprendendo com os erros, algo que muitos poderiam se inspirar.
-
Antirez (Salvatore Sanfilippo)
14/07/2014 06:53
Filas são como aquele amigo que promete cozinhar mas deixa a comida no micro-ondas. Elas separam a tarefa de agendar e executar operações, o que é fundamental em aplicações web. Como mencionado, um "produtor" insere uma tarefa na fila e um "consumidor" a executa. Prefira sempre a entrega "pelo menos uma vez" — é melhor lidar com tarefas repetidas do que perder uma completamente no processo, tipo quando seu código compila mas não roda. E quem não conhece o drama de re-encaminhar e-mails por causa de falhas de rede?
-
Antirez (Salvatore Sanfilippo)
16/05/2014 08:15
Usar Redis para gerenciar locks distribuídos é uma espada de dois gumes. Enquanto muitos acham ótima essa solução, outros acreditam que é uma receita para problemas de segurança. O post propõe um algoritmo que tenta equilibrar segurança e eficiência, com foco em três propriedades fundamentais. No final das contas, é como tentar fazer um pão de queijo perfeito: precisa de queijo, mas também de tempo e temperatura certos. Essa discussão pode trazer melhorias para um cenário que, admitamos, precisa de mais que um simples "expire".
-
Antirez (Salvatore Sanfilippo)
10/04/2014 06:06
As reações ao bug recente do OpenSSL são compreensíveis, afinal, quem gosta de ter que corrigir a internet toda de uma vez? O autor toca em um ponto crucial: um memcpy() sem checagem de limites não era exatamente o que esperávamos de algo tão crítico como o OpenSSL. Em vez de trocar a equipe do OpenSSL, talvez o foco devesse ser na forma como desenvolvemos este tipo de software. Como mencionado, investir em auditorias de código e usar ferramentas de análise estática pode ajudar a evitar o próximo Heartbleed.
-
Antirez (Salvatore Sanfilippo)
01/04/2014 05:16
O HyperLogLog é uma adição interessante ao Redis, especialmente para quem já ficou desesperado tentando contar IPs únicos sem estourar a memória. O fato de usar apenas 12kbytes por chave e oferecer uma margem de erro padrão de 0.81% é como achar um bug na sua aplicação e resolver com um simples 'reinicie e veja no que dá'. É um bom lembrete de como algoritmos de randomização podem fazer mágica com pouco espaço, e parece que a equipe do Redis realmente acertou a mão nessa.
-
Antirez (Salvatore Sanfilippo)
13/03/2014 19:32
A reflexão sobre a beleza de códigos minimalistas é algo que todo dev já viveu, mesmo que em um cantinho da mente. "O que o programa faz é far mais interessante do que o que ele não faz" é quase uma mantra nos dias de hoje, onde complexidade parece ser a regra. Já escrevi códigos mais curtos do que a sinopse de um filme da Marvel, e a satisfação é real. Ao mesmo tempo, é um lembrete de que, apesar da pirâmide de complexidade em software, ainda podemos buscar aquela simplicidade quase poética, bem como os grandes mestres da programação faziam no tempo em que cada byte contava.
-
Antirez (Salvatore Sanfilippo)
28/02/2014 10:30
Discutir desempenho pode parecer papo de nerd, mas é crucial entender que ele não é sinônimo de escalabilidade. O post começa bem ao decompor o desempenho em três partes: latência, operações por segundo e qualidade das operações. O autor destaca que uma operação simples, mas ineficiente, pode parecer boa até a hora de encarar um problema real. No final das contas, desempenho é um conceito mais complexo do que a maioria dos devs imagina, e vale a pena investir tempo para entender sua essência, especialmente em sistemas de banco de dados.
-
Antirez (Salvatore Sanfilippo)
26/02/2014 06:19
Hoje a gente celebra os cinco anos do Redis, e é impressionante como esse projeto open-source tem se mantido relevante. O autor reflete que, enquanto desenvolvedor, aprendeu muito em sua jornada com Redis, principalmente por ter interagido com coders brilhantes que adotaram o projeto desde o início. A importância de um bom time não pode ser subestimada; como ele mesmo diz, "grande coders não seguem a hype", e isso se aplica a cada linha de código que eles adicionam. No fim das contas, o Redis não é apenas uma ferramenta, mas um laboratório de ideias que desafia as convenções, e isso é algo que a comunidade deve continuar a explorar.
-
Antirez (Salvatore Sanfilippo)
21/02/2014 08:40
Esse algoritmo pode parecer trivial, mas a simplicidade é uma virtude no mundo da programação distribuída. A ideia de manter informações idempotentes, que não dependem de estados anteriores, pode salvar muitos desenvolvedores de dores de cabeça em projetos complexos. Com a capacidade de propagação em pacotes pequenos, ele é como a versão tech de um pacote de batatas fritas: rápido e fácil de consumir, mas ainda satisfatório. A relação com o Raft vai além do nome; o que importa é a eficiência em cenários reais.
-
Antirez (Salvatore Sanfilippo)
20/01/2014 15:13
O Redis Cluster está a caminho da sua primeira versão estável, mas como sempre, o CAP theorem entra na jogada. A ideia é que ele não se prenda ao cima ou abaixo da linha de consistência ou disponibilidade, mas tente alcançar um meio-termo, navegando pelas águas traiçoeiras da replicação assíncrona. O mais fascinante aqui é como a divergência entre nós se manifesta, criando linhas do tempo paralelas que só fazem o desenvolvedor suspirar, lembrando que o 'merge' é mais complicado do que fazer um pull request com conflitos. Se você já lutou com dados que perderam sincronia, sabe exatamente o que estou dizendo.
-
Antirez (Salvatore Sanfilippo)
18/12/2013 14:32
A equipe de desenvolvimento de Redis parece estar levando as coisas mais a sério agora que o Redis Cluster está na fase de "refinamentos". Testar em um ambiente de 6 máquinas, incluindo uma EEEpc, é o tipo de experiência que separa os bons desenvolvedores dos verdadeiros gladiadores do código. E sim, claro que um nó rodando em 32 bits vai trazer mais bugs do que uma convenção de programação em um café de desenvolvedores. O que vale é que esses testes estão expondo falhas críticas antes do lançamento.
-
Antirez (Salvatore Sanfilippo)
11/12/2013 20:19
Parece que o debate sobre Redis finalmente rendeu uma ideia válida. A proposta de Alexis sobre usar ACKs assíncronos para operações não recebidas pode parecer um trabalho extra para o cliente, mas é um passo interessante. A sugestão de reter operações não reconhecidas e 'replayá-las' quando a partição se restabelecer é uma maneira engenhosa de contornar limitações de disponibilidade. E sim, a distinção entre manter o contexto das operações e simplesmente os valores é crucial, especialmente em operações como INCR. Quem diria que debate online poderia resultar em algo prático?
-
Antirez (Salvatore Sanfilippo)
09/12/2013 22:53
Um experimento interessante na lista de discussão do Redis gerou 89 posts, mostrando que a comunidade não tem medo de debater. O cerne da questão é que o Redis troca Consistência e Disponibilidade por performance, o que pode parecer arriscado, mas é parte do DNA dele. O design do Redis Cluster faz a lição de casa ao priorizar a latência em vez de se perder em mesclagens complexas de dados. No final das contas, parece que a escolha de desempenhar bem vale a pena, desde que os usuários estejam cientes das limitações.
-
Antirez (Salvatore Sanfilippo)
05/12/2013 08:50
O novo comando 'WAIT' do Redis promete adicionar uma pitada de síncronia à replicação, mostrando que até mesmo bancos de dados de alta performance podem ter seu lado nerd. Com menos de 200 linhas de código, ele é fruto de um design que vem evoluindo desde a versão 2.8, o que significa que a implementação não foi assim um mistério de Turing. Agora, quanto à latência, temos que ver se a segurança vale o café passado mais devagar na hora de confirmar as operações.
-
Antirez (Salvatore Sanfilippo)
02/12/2013 07:52
Quem nunca? O autor perdeu tudo porque esqueceu que o Redis estava rodando sem persistência. Mas olha só, em menos de meia hora conseguiu recuperar todos os posts apenas copiolando do cache do Google. Isso mostra que, quando a arquitetura é simples, os desastres são mais fáceis de contornar. Claro, quem precisa de backups quando se tem qualidade Jedi na recuperação de dados?
-
Antirez (Salvatore Sanfilippo)
01/12/2013 14:48
Parece que o mundo open-source está se deparando com mais do que apenas debates sobre código. O post da Joyent destaca uma situação onde um 'pull request' para uma mudança na documentação foi rejeitado, e o argumento é que as pronome devem permanecer gendered. Mas vamos ser sinceros, manter "him" em vez de optar por uma forma neutra parece mais uma escolha de design de código na era dos 8 bits do que uma questão de princípios. A verdadeira batalha é garantir que nossos debates, assim como nosso código, sejam inclusivos e evoluam com o tempo. Ignorar essas vozes só perpetua problemas que já temos há muito tempo.