About us
Uma comunidade dedicada à excelência em engenharia de software e boas práticas. Abordando desde a base com algoritmos e estruturas de dados até a arquitetura de sistemas avançadas.
Nossa Missão:
Criar um espaço colaborativo onde desenvolvedores e engenheiros de software podem aprender, compartilhar conhecimento e crescer juntos. Nosso foco está em promover as melhores práticas de desenvolvimento, Algorítimos, Estruturas de Dados, System Design, Domain-Driven Design, Arquitetura limpa e tópicos avançados.
Nosso principal objetivo é fazer com que nós como comunidade e quanto indivíduos possamos evoluir juntos, ajudando uns aos outros a alcançarmos o próximo nível como engenheiros de software.
Upcoming events
2

Clube do Livro DDIA: Capítulo 7 - Sharding - Parte 1
·OnlineOnlineDividir os dados entre várias máquinas parece simples até você adicionar uma máquina nova e descobrir que quase todas as chaves mudaram de lugar. A forma de dividir decide quais consultas ficam baratas, onde a carga se acumula e quanto custa crescer.
Vamos abrir o Capítulo 7, 'Sharding', de Designing Data-Intensive Applications (2ª edição), de Martin Kleppmann e Chris Riccomini.Vamos discutir quando vale dividir um banco em shards, quando é melhor não dividir, e como escolher a forma de dividir os dados para espalhar volume e escritas entre os nós.
Vamos passar pela diferença entre sharding e replicação (e pelos muitos nomes que um shard recebe), pelos prós e contras de shardear e pelo uso de shards para multitenancy, com isolamento de recursos e de falhas, backup por cliente e residência de dados. Depois, as formas de dividir dados chave-valor: key range sharding, com range scans eficientes e o risco de hot spots quando a chave é um timestamp, e hash sharding, do hash mod N que move quase tudo ao número fixo de shards, ao hash range e à variante do Cassandra e do ScyllaDB, até chegar ao consistent hashing.E, como sempre, trazendo para o dia a dia: quando uma máquina só ainda dá conta (e hoje ela dá conta de muita coisa), como escolher uma partition key sem se arrepender depois, por que usar timestamp como chave joga todas as escritas num shard só e o que pesar antes de dar um shard para cada cliente. Uma conversa aberta, sem aula e sem dono da razão.
✨ Participa da Comunidade!
🌐 Site: https://craftcodeclub.io
💬 Comunidade: https://craftcodeclub.io/join
📅 Próximos eventos: https://craftcodeclub.io/events
📖 O livro PT: https://link.amazon/B0j5WeuXg
📖 O livro EN: https://link.amazon/B0ct3Q7K7
📚 Clube do Livro DDIA: https://craftcodeclub.io/book-clubs/designing-data-intensive-applicationsO que você vai ver:
- Sharding vs replicação: cada registro num shard só, mas cada shard replicado em vários nós
- Shard, partition, range, region, vnode, tablet: o mesmo conceito com nomes diferentes, e nada a ver com network partitions
- Prós e contras: escalar volume e escritas, ao custo da partition key, de joins e de transações entre shards
- Sharding para multitenancy: isolamento de recursos, permissões e falhas, cell-based architecture, backup por cliente e residência de dados
- Key range sharding: a enciclopédia da Figura 7-2, range scans e hot spots em chaves próximas
- Pre-splitting, split e merge de shards, e por que dividir um shard custa caro
- Hash mod N: por que adicionar um nó move quase todas as chaves
- Número fixo de shards: 1.000 shards em 10 nós e a dificuldade de escolher esse número
- Hash range sharding e a variante do Cassandra e do ScyllaDB, com limites aleatórios entre os ranges
- Consistent hashing, rendezvous hashing e jump consistent hashing
🎥 Encontros passados que você também vai gostar
- Clube do Livro DDIA: Capítulo 7 - Sharding - Parte 2
- Clube do Livro DDIA: Capítulo 6 - Replicação - Parte 3
- Clube do Livro DDIA: Capítulo 6 - Replicação - Parte 2
- Clube do Livro DDIA: Capítulo 6 - Replicação
- Clube do Livro DDIA: Capítulo 5 - Encoding and Evolution - Parte 2
- Clube do Livro DDIA: Capítulo 5 - Encoding and Evolution
- System Design #09: Consistent Hashing - Scaling Horizontal | ByteByteGo Book Club
- Read Replica: Escalando Acessos ao Banco de Dados
- System Design #10: Design de Key-Value Store Distribuído | ByteByteGo Book Club
- Deep Dive - Relógios Lógicos: de Lamport a Bloom Clocks
#DDIA #DesigningDataIntensiveApplications #Sharding #Particionamento #SistemasDistribuídos #BancoDeDados #CraftCodeClub #ClubeDoLivro #EngenhariaDeSoftware
4 attendees
Clube do Livro DDIA: Capítulo 7 - Sharding - Parte 2
·OnlineOnlineOs dados já estão divididos. Aí uma única chave passa a receber mais tráfego do que um shard aguenta, um nó lento é dado como morto e o cluster começa a mover dados no pior momento possível.
Vamos para a segunda e última parte do Capítulo 7, 'Sharding', de Designing Data-Intensive Applications (2ª edição), de Martin Kleppmann e Chris Riccomini. Saímos de como dividir os dados para o que acontece com um banco shardeado em produção: carga desigual, rebalanceamento, roteamento de requisições e índices secundários.Vamos passar por workloads com skew e hot keys, como o post de uma celebridade, e pelas técnicas para aliviar um shard quente; pelo rebalanceamento automático vs manual e o risco de falhas em cascata quando ele se junta à detecção automática de falhas; pelas três formas de levar uma requisição até o nó certo e por quem guarda a verdade sobre onde está cada shard (ZooKeeper, etcd, Raft embutido e gossip); e pelos índices secundários locais e globais, com o trade-off entre escrita barata e leitura barata. Para fechar, os principais pontos do capítulo e o problema que ele deixa em aberto: escritas que precisam tocar vários shards.
E, como sempre, trazendo para o dia a dia: como lidar com um post que viraliza e concentra a carga numa chave só, quando vale deixar o rebalanceamento nas mãos de uma pessoa, como o seu banco descobre em que nó está cada shard e por que uma busca por índice secundário pode acabar consultando todos os shards. Uma conversa aberta, sem aula e sem dono da razão.
✨ Participa da Comunidade!
🌐 Site: https://craftcodeclub.io
💬 Comunidade: https://craftcodeclub.io/join
📅 Próximos eventos: https://craftcodeclub.io/events
📖 O livro PT: https://link.amazon/B0j5WeuXg
📖 O livro EN: https://link.amazon/B0ct3Q7K7
📚 Clube do Livro DDIA: https://craftcodeclub.io/book-clubs/designing-data-intensive-applicationsO que você vai ver:
- Workloads com skew: chaves distribuídas por igual não significam carga distribuída por igual
- Hot keys: isolar a chave num shard só, dividir as escritas com prefixos aleatórios e o custo disso na leitura
- Heat management e adaptive capacity: como os serviços de nuvem automatizam isso
- Rebalanceamento automático vs manual: autoscaling, o custo de mover dados e as falhas em cascata
- Roteamento de requisições: qualquer nó, uma camada de roteamento ou clientes que conhecem os shards
- Quem decide onde fica cada shard: ZooKeeper, etcd, Raft embutido, config servers do MongoDB e gossip do Riak
- Índices secundários locais: escrita num shard só, leitura em todos (scatter/gather) e latência de cauda
- Índices secundários globais: leitura num shard só, escrita em vários e índices que podem ficar desatualizados
- Resumo do capítulo: key range vs hash, coordenação e o problema das escritas entre shards
🎥 Outros vídeos que você também pode gostar
- Clube do Livro DDIA: Capítulo 7 - Sharding - Parte 1
- Clube do Livro DDIA: Capítulo 6 - Replicação - Parte 3
- Clube do Livro DDIA: Capítulo 6 - Replicação - Parte 2
- Clube do Livro DDIA: Capítulo 6 - Replicação
- Clube do Livro DDIA: Capítulo 5 - Encoding and Evolution - Parte 2
- Clube do Livro DDIA: Capítulo 5 - Encoding and Evolution
- Clube do Livro DDIA: Capítulo 4 - Armazenamento e Recuperação - Parte 2
- System Design #10: Design de Key-Value Store Distribuído | ByteByteGo Book Club
- System Design #09: Consistent Hashing - Scaling Horizontal | ByteByteGo Book Club
#DDIA #DesigningDataIntensiveApplications #Sharding #Particionamento #SistemasDistribuídos #BancoDeDados #CraftCodeClub #ClubeDoLivro #EngenhariaDeSoftware
3 attendees
Past events
11

