Escalando leituras: o que Big Techs esperam que você saiba (System Design #1)
Como Escalar Leituras de Banco de Dados em Entrevistas
Introdução ao Problema
- O vídeo começa com um cenário de entrevista onde o entrevistador apresenta um problema de desempenho em um banco de dados que recebe 50.000 leituras por segundo.
- Pedro Camaforte, desenvolvedor sênior, introduz a série sobre System Design e promete explicar conceitos como índices, connection pooling, read replicas e caching.
Identificação do Gargalo
- A motivação para a série é baseada em um artigo de Lucas Faria sobre os principais conceitos abordados em entrevistas para empresas Tier S.
- Exemplos são dados sobre aplicações que têm muitas leituras comparadas a escritas, sugerindo que isso pode causar gargalos no banco de dados.
Soluções Iniciais
- Antes de considerar soluções complexas, é crucial verificar se as tabelas têm índices corretos e se está sendo utilizado connection pooling.
- Uma tabela sem índice pode ter latências altas; otimizar índices pode reduzir o tempo de resposta drasticamente.
Connection Pooling
- Connection pooling ajuda a evitar delays na abertura de novas conexões com o banco, melhorando a performance sob alta carga.
- Combinando índices e connection pooling, é possível resolver até 80% dos problemas iniciais relacionados à leitura.
Read Replicas
- Quando as soluções iniciais não são suficientes, entra-se no conceito de read replicas para distribuir a carga entre múltiplas fontes.
- É importante discutir os trade-offs das read replicas, como o delay na replicação que pode ser crítico dependendo da aplicação (ex: finanças).
Caching como Solução Avançada
- O caching é apresentado como uma solução eficaz para hotspots específicos que recebem cargas excessivas.
- Ele permite responder rapidamente às requisições sem sobrecarregar o banco principal.
Estratégias para Invalidação do Cache
- A invalidação do cache deve ser considerada quando há mudanças nos dados; três estratégias incluem expiração automática, deleção ou atualização do cache junto com o banco.
CDN e Arquitetura Global
- A CDN (Content Delivery Network) é discutida como uma solução para melhorar a entrega de arquivos estáticos globalmente.
Erros Comuns em Entrevistas
- Um erro comum que leva à eliminação imediata dos candidatos é não entender completamente o problema antes de propor soluções arquiteturais.
Perguntas Cruciais Durante Entrevistas
- Programadores seniores devem fazer perguntas relevantes sobre a aplicação antes de sugerir soluções técnicas específicas.
Exemplo Prático: Encurtador de URL
- Um exemplo prático ilustra como aplicar os conceitos discutidos ao lidar com um encurtador de URL recebendo 60.000 requisições por segundo.