Entrevista de Design de Sistemas: Projete a Netflix
"Projete a Netflix" é um problema dominado por leitura, regido por um único fato: servir vídeo em escala global é, muito mais, um problema de entrega de conteúdo e armazenamento do que de computação. O entrevistador quer ver você separar o plano de controle (navegação, busca, recomendações) do plano de dados (transmitir os bytes propriamente ditos) e raciocinar sobre como entregar petabytes próximos aos usuários.
Siga uma ordem: esclareça os requisitos, estime a escala, projete o pipeline de upload/transcodificação, depois o caminho de reprodução através de uma CDN, e termine com bitrate adaptativo e trade-offs. O guia abaixo segue essa estrutura para que você pratique o raciocínio, não memorize uma arquitetura.
1. Esclarecer os requisitos
Separe o funcional do não funcional e delimite o escopo com precisão. O núcleo é: usuários navegam por um catálogo e assistem a vídeos de forma fluida em diferentes dispositivos e condições de rede.
- Funcional: navegar/buscar o catálogo, iniciar a reprodução, qualidade adaptativa, continuar de onde parou, múltiplos dispositivos.
- Não funcional: disponibilidade muito alta, baixa latência de início, reprodução fluida (sem travamentos), alcance global.
- Fora do escopo (diga isso): os detalhes internos de ML de recomendações, faturamento, especificações de DRM — mencione-os e deixe-os de lado.
2. Estimar a escala
Os números justificam o design orientado a CDN. Suponha centenas de milhões de assinantes e muitos milhões de streams simultâneos no pico. Um único stream consome vários Mbps, então a saída agregada chega a dezenas de terabits por segundo — impossível de servir a partir de poucos data centers centrais, o que motiva imediatamente o cache na borda.
3. Pipeline de ingestão e transcodificação
Os masters enviados são processados offline, não no caminho de reprodução. Cada título é transcodificado em muitas renditions — várias resoluções e bitrates — e segmentado em pequenos trechos (de poucos segundos cada) para o streaming adaptativo.
- Fazenda de transcodificação: converte o master em renditions H.264/H.265/AV1 em vários bitrates; é um trabalho em lote embaraçosamente paralelo.
- Segmentação e empacotamento: divide cada rendition em segmentos curtos com um manifesto (HLS/DASH) que os descreve.
- Armazena as saídas em object storage (tipo S3) como fonte de verdade, e depois distribui o conteúdo popular para a borda.
4. CDN e o caminho de reprodução
A reprodução é servida a partir da borda, não da origem. Os segmentos de vídeo são armazenados em cache em nós de CDN fisicamente próximos dos usuários (a Netflix opera seus próprios appliances Open Connect dentro dos ISPs). O cliente busca o manifesto e então obtém os segmentos do nó de borda saudável mais próximo.
O plano de controle (catálogo, busca, perfis de usuário, 'continuar assistindo') é um conjunto separado de serviços de API sem estado, apoiados por seus próprios bancos de dados e caches — ele retorna metadados e uma URL de manifesto, e é completamente desacoplado da pesada entrega de bytes.
- Cache de borda (CDN/Open Connect): entrega a grande maioria dos bytes; pré-posiciona títulos populares por região antes da demanda.
- Armazenamento de origem: object store que serve de apoio aos cache misses.
- APIs do plano de controle: catálogo, autorização de reprodução, favoritos — payloads pequenos, escalados horizontalmente, com cache na frente.
5. Streaming de bitrate adaptativo
A reprodução fluida sob redes variáveis vem do cliente, não do servidor. O player monitora o throughput e o nível de buffer, e alterna a qualidade do segmento para cima ou para baixo entre segmentos usando a lista de renditions do manifesto — bitrate maior em conexões rápidas, menor para evitar travamentos em conexões lentas.
6. Trade-offs a verbalizar
Encerre com as tensões que um entrevistador está ouvindo: o custo de armazenamento de pré-computar todas as renditions versus a latência da transcodificação sob demanda (a Netflix pré-computa — armazenamento é mais barato que atraso de início); cachear tudo versus cachear o que é popular na borda (um catálogo de cauda longa não pode viver inteiro em cada borda); e consistência forte versus eventual para dados do plano de controle, como 'continuar assistindo' (eventual está bem). Nomear isso é o que torna a resposta de nível sênior.
Pratique o design de sistemas da Netflix com ajuda em tempo real
O assistente de entrevistas de design de sistemas da Natively pode te manter estruturado durante uma rodada em tempo real — sugerindo a próxima dimensão a cobrir e mostrando os trade-offs em tempo real, tudo no seu próprio dispositivo.
