Pular para o conteúdo

Design clássico · Sênior

Plataforma de vídeo (YouTube/Netflix)

Projeto de entrevista clássico. Pontos centrais: entrega de blobs e vídeo.

16 min de leitura · Conteúdo revisado em 22 de outubro de 2026

Resposta curta

Projeto de entrevista clássico. Pontos centrais: entrega de blobs e vídeo. O exercício clássico pede uma plataforma de compartilhamento de vídeo como o YouTube, e a mesma solução vale para Netflix ou Hulu. O escopo é estreito de propósito: enviar um vídeo e assistir a um vídeo, em apps móveis, navegadores e smart TVs.

01 · CONTEXTO

Subir e assistir: dois botões, dois problemas

O exercício clássico pede uma plataforma de compartilhamento de vídeo como o YouTube, e a mesma solução vale para Netflix ou Hulu. O escopo é estreito de propósito: enviar um vídeo e assistir a um vídeo, em apps móveis, navegadores e smart TVs. O resto do produto fica de fora do desenho.

Os objetivos que guiam o desenho são upload rápido, streaming fluido, troca de qualidade durante a reprodução e custo baixo de infraestrutura, tudo com alta disponibilidade e capacidade de crescer. Já o tamanho dos arquivos depende da fonte: uma delas fixa um teto de vídeos pequenos e médios, a outra exige suportar arquivos de dezenas de GB, o que muda a forma de enviá-los. Quanto à escala, uma fonte parte de milhões de usuários ativos por dia e a outra de cerca de um milhão de vídeos enviados e cem milhões assistidos por dia.

A conta de armazenamento mostra o tamanho do problema: com cinco milhões de usuários ativos por dia, dez por cento enviando um vídeo de 300 MB, são 150 TB novos por dia. Do outro lado, servir esses vídeos pela CDN custa caro, e esse custo vai pesar nas decisões do final do caso.

02 · UPLOAD

Blob storage, CDN e uma fila no meio

Montar blob storage e CDN do zero é complexo e caro, então o desenho usa serviços prontos de nuvem. O sistema fica com três peças: o cliente, a CDN, de onde o vídeo sai, e os servidores de API, por onde passa tudo que não é o streaming em si. Como os servidores de API não guardam estado, a camada escala na horizontal.

  1. O cliente pede aos servidores de API uma URL pré-assinada. O balanceador reparte as requisições, e a API autoriza o destino exato onde aquele arquivo pode ser gravado.

    Diagrama da arquitetura: Fluxo de upload de vídeo
    CLClientepede URL
    NWBalanceador de carga
    CPServidores de API
    DBBanco de metadados
    CHCache de metadados
    DBArmazenamento original
    CPServidores de transcodificação
    DBArmazenamento transcodificado
    QFila de conclusão
    CPTratador de conclusão
    EDGCDN
  2. Com a URL, o cliente envia o arquivo direto ao armazenamento original, sem passar pelos servidores de aplicação. Em paralelo, a API grava os metadados no banco e no cache.

    Diagrama da arquitetura: Fluxo de upload de vídeo
    CLCliente
    NWBalanceador de carga
    CPServidores de API
    DBBanco de metadadosmetadados
    CHCache de metadados
    DBArmazenamento originalvídeo original
    CPServidores de transcodificação
    DBArmazenamento transcodificado
    QFila de conclusão
    CPTratador de conclusão
    EDGCDN
  3. Os servidores de transcodificação buscam o original e o convertem em vários formatos e resoluções.

    Diagrama da arquitetura: Fluxo de upload de vídeo
    CLCliente
    NWBalanceador de carga
    CPServidores de API
    DBBanco de metadados
    CHCache de metadados
    DBArmazenamento original
    CPServidores de transcodificaçãotranscodifica
    DBArmazenamento transcodificado
    QFila de conclusão
    CPTratador de conclusão
    EDGCDN
  4. Ao terminar, o resultado vai para o armazenamento transcodificado e, ao mesmo tempo, um evento de término entra na fila de conclusão.

    Diagrama da arquitetura: Fluxo de upload de vídeo
    CLCliente
    NWBalanceador de carga
    CPServidores de API
    DBBanco de metadados
    CHCache de metadados
    DBArmazenamento original
    CPServidores de transcodificação
    DBArmazenamento transcodificadoformatos
    QFila de conclusãoevento de término
    CPTratador de conclusão
    EDGCDN
  5. O tratador de conclusão consome a fila e atualiza o banco e o cache de metadados, de modo que a API passa a saber que o vídeo está pronto.

    Diagrama da arquitetura: Fluxo de upload de vídeo
    CLCliente
    NWBalanceador de carga
    CPServidores de API
    DBBanco de metadadosatualizado
    CHCache de metadados
    DBArmazenamento original
    CPServidores de transcodificação
    DBArmazenamento transcodificado
    QFila de conclusão
    CPTratador de conclusãoconsome eventos
    EDGCDN
  6. Os arquivos transcodificados são distribuídos para a CDN, de onde serão transmitidos aos espectadores.

    Diagrama da arquitetura: Fluxo de upload de vídeo
    CLCliente
    NWBalanceador de carga
    CPServidores de API
    DBBanco de metadados
    CHCache de metadados
    DBArmazenamento original
    CPServidores de transcodificação
    DBArmazenamento transcodificado
    QFila de conclusão
    CPTratador de conclusão
    EDGCDNpronto para streaming

O envio se divide em dois processos paralelos: o arquivo vai para o armazenamento enquanto o cliente manda os metadados. Quando a transcodificação termina, uma fila de mensagens leva o evento até o tratador, que atualiza o banco de metadados, mantido particionado e replicado para dar desempenho e disponibilidade.

O cliente não manda o vídeo pela API: ele recebe uma URL pré-assinada e envia direto ao armazenamento de objetos. Isso evita que arquivos grandes atravessem os servidores de aplicação e, como a URL é emitida pela API, só quem está autorizado grava no lugar certo.

A fila também desacopla as etapas. Sem ela, o módulo de codificação ficaria esperando a saída do módulo de download; com ela, ele processa em paralelo os eventos que estiverem na fila.

03 · TRANSCODIFICAÇÃO

Do arquivo bruto aos formatos que cada tela entende

Transcodificar é indispensável por quatro motivos: o vídeo bruto ocupa muito espaço, muitos aparelhos e navegadores só aceitam certos formatos, quem tem banda larga deve receber qualidade maior que quem tem banda baixa, e a rede muda durante a reprodução, sobretudo no celular, o que exige trocar de qualidade no meio do caminho.

Um formato de vídeo tem duas partes. O container reúne vídeo, áudio e metadados, como uma cesta, e costuma ser reconhecido pela extensão do arquivo. O codec comprime e descomprime para reduzir o tamanho preservando a qualidade. Os protocolos de streaming, por sua vez, diferem nas codificações e nos players que suportam, e por isso é preciso escolher um que atenda ao seu caso de uso.

O trabalho é caro e demorado, e cada criador pode pedir etapas diferentes, como marca d'água ou miniatura própria. Para dar flexibilidade e paralelismo, o desenho adota um modelo de grafo acíclico dirigido, o DAG, que descreve quais tarefas existem e quais dependem de quais. A parte mais cara é a conversão dos trechos de vídeo, que consome CPU e deve rodar em muitas máquinas ao mesmo tempo, coordenadas por um orquestrador.

  1. O pré-processador pega o vídeo original e o divide em trechos curtos, reproduzíveis de forma independente, além de gerar o DAG a partir da configuração do criador.

    Diagrama da arquitetura: Pipeline de transcodificação em DAG
    DBVídeo original
    CPPré-processadordivide em trechos
    DBArmazenamento temporário
    CPAgendador de DAG
    QFila de tarefas
    CPTask workers
    DBVídeo codificado
  2. Os trechos e os metadados ficam num armazenamento temporário, para que uma falha não obrigue a recomeçar do zero.

    Diagrama da arquitetura: Pipeline de transcodificação em DAG
    DBVídeo original
    CPPré-processador
    DBArmazenamento temporáriotrechos e metadados
    CPAgendador de DAG
    QFila de tarefas
    CPTask workers
    DBVídeo codificado
  3. O agendador de DAG quebra o grafo em estágios e coloca as tarefas na fila do gerenciador de recursos.

    Diagrama da arquitetura: Pipeline de transcodificação em DAG
    DBVídeo original
    CPPré-processador
    DBArmazenamento temporário
    CPAgendador de DAGestágios
    QFila de tarefastarefas
    CPTask workers
    DBVídeo codificado
  4. O gerenciador casa cada tarefa com o worker mais adequado, e os task workers rodam as tarefas em paralelo.

    Diagrama da arquitetura: Pipeline de transcodificação em DAG
    DBVídeo original
    CPPré-processador
    DBArmazenamento temporário
    CPAgendador de DAG
    QFila de tarefas
    CPTask workersem paralelo
    DBVídeo codificado
  5. Se um worker cai no meio de uma tarefa, ela é repetida em outro worker, aproveitando os dados já guardados.

    Diagrama da arquitetura: Pipeline de transcodificação em DAG
    DBVídeo original
    CPPré-processador
    DBArmazenamento temporário
    CPAgendador de DAG
    QFila de tarefastarefa reenfileirada
    CPTask workersworker caiu
    DBVídeo codificado
  6. Concluídas as tarefas, os arquivos codificados são gravados como saída do pipeline.

    Diagrama da arquitetura: Pipeline de transcodificação em DAG
    DBVídeo original
    CPPré-processador
    DBArmazenamento temporário
    CPAgendador de DAG
    QFila de tarefas
    CPTask workers
    DBVídeo codificadoformatos finais
ComponenteO que faz
Pré-processadorDivide o vídeo em trechos independentes, gera o DAG e guarda os trechos como cache para novas tentativas
Agendador de DAGDivide o grafo em estágios de tarefas e as coloca na fila
Gerenciador de recursosMantém a fila de tarefas por prioridade e escolhe a melhor combinação de tarefa e worker
Task workersExecutam as tarefas definidas no DAG
Armazenamento temporárioGuarda dados intermediários e os libera quando o processamento do vídeo termina

04 · STREAMING

Segmentos, manifesto e bitrate adaptativo

Assistir não é baixar. Baixar copia o vídeo inteiro para o aparelho; streaming recebe o vídeo continuamente, um pouco de cada vez, e começa a tocar de imediato. A diferença pesa: baixar um arquivo de 10 GB levaria mais de 13 minutos numa conexão de 100 Mbps, e uma queda de rede no meio perderia o progresso.

AbordagemComo funcionaLimite
Baixar o arquivo inteiroO player só toca depois de copiar o vídeo todoEspera longa e risco de perder o progresso numa queda de rede
Baixar segmentosO player toca o primeiro trecho e carrega os seguintes em segundo planoMais complexo e exige o vídeo armazenado em segmentos; se a rede piora, uma única qualidade pode travar
Bitrate adaptativoO player escolhe o formato de cada segmento a partir de um manifesto, conforme a redeMais complexo ainda: depende de segmentos em vários formatos e de manifestos criados no upload

No bitrate adaptativo, um manifesto principal lista as versões disponíveis do vídeo e aponta para manifestos de cada versão. O cliente busca os metadados do vídeo, que apontam para o manifesto, escolhe um formato conforme a rede e as preferências do usuário e baixa o primeiro segmento. Se a rede piora ou melhora, ele muda o formato dos segmentos seguintes.

  1. O player pede os metadados do vídeo à API, que responde com o endereço do manifesto, lendo do cache quando possível.

    Diagrama da arquitetura: Fluxo de streaming de vídeo
    CLPlayer do cliente
    CPServidores de APImetadados
    CHCache de metadados
    DBBanco de metadados
    EDGCDN
    DBArmazenamento de alta capacidade
  2. O player baixa o manifesto, que lista as versões do vídeo, e escolhe uma conforme a rede e as preferências.

    Diagrama da arquitetura: Fluxo de streaming de vídeo
    CLPlayer do cliente
    CPServidores de API
    CHCache de metadados
    DBBanco de metadados
    EDGCDNmanifesto
    DBArmazenamento de alta capacidade
  3. Ele baixa o primeiro segmento, começa a tocar e segue carregando os próximos em segundo plano.

    Diagrama da arquitetura: Fluxo de streaming de vídeo
    CLPlayer do cliente
    CPServidores de API
    CHCache de metadados
    DBBanco de metadados
    EDGCDNprimeiro segmento
    DBArmazenamento de alta capacidade
  4. Se a rede piora, o player passa a pedir segmentos de uma versão mais leve, para não interromper a reprodução.

    Diagrama da arquitetura: Fluxo de streaming de vídeo
    CLPlayer do clienterede pior
    CPServidores de API
    CHCache de metadados
    DBBanco de metadados
    EDGCDN
    DBArmazenamento de alta capacidade
  5. Quando a CDN não tem o segmento, em geral de um vídeo pouco popular, ele vem do armazenamento de alta capacidade.

    Diagrama da arquitetura: Fluxo de streaming de vídeo
    CLPlayer do cliente
    CPServidores de API
    CHCache de metadados
    DBBanco de metadados
    EDGCDN
    DBArmazenamento de alta capacidadeorigem

Com manifestos e segmentos na CDN, o servidor de borda mais próximo entrega o vídeo e o streaming continua sem tocar o backend. Os metadados populares ficam num cache, o que poupa o banco.

05 · CUSTO E SEGURANÇA

Onde o dinheiro vai e como proteger o vídeo

O custo de CDN é o principal vilão, e a saída vem da distribuição de acessos: poucos vídeos são muito populares e muitos têm poucos espectadores ou nenhum. Dessa observação saem as alavancas de custo.

AlavancaIdeia
Só o popular na CDNOs vídeos mais populares vão para a CDN e os demais saem de servidores de armazenamento de alta capacidade
Codificar sob demandaPara conteúdo pouco popular, não guardar muitas versões codificadas; vídeos curtos podem ser codificados na hora
Distribuir por regiãoVídeos populares só em certas regiões não precisam ser enviados às demais
CDN própriaConstruir a própria CDN em parceria com provedores de internet é um projeto gigante, mas pode fazer sentido para grandes empresas de streaming

Todas essas decisões dependem do padrão de acesso, por isso o histórico de visualização deve ser analisado antes de otimizar.

Para a velocidade do upload, o cliente divide o vídeo em trechos, o que permite retomar um envio que falhou, e centros de upload espalhados pelo mundo, feitos com a própria CDN, aproximam o envio do usuário. Para a segurança, as URLs pré-assinadas restringem quem grava. Para proteger o conteúdo, há três caminhos: sistemas de DRM, criptografia AES com política de autorização e marca d'água visual.

06 · FALHAS E EXTENSÕES

Quando algo quebra e o que vem depois

O tratamento de erros separa dois tipos. Em erros recuperáveis, como um segmento que falha ao transcodificar, a ideia geral é repetir a operação algumas vezes. Em erros não recuperáveis, como um formato malformado, o sistema interrompe as tarefas daquele vídeo e devolve um código de erro ao cliente. Se um task worker cai, a tarefa vai para outro, e se o primário do banco de metadados cai, uma réplica é promovida.

Para crescer, a camada de API escala na horizontal. Os metadados podem ir para um banco particionável, e a fila de tarefas serve de sinal para aumentar o número de workers. Há ainda dois temas para o fim da entrevista: live streaming, que exige latência menor e talvez outro protocolo, e a remoção de vídeos que violam direitos autorais ou são ilegais.

Perguntas frequentes

O que é Plataforma de vídeo (YouTube/Netflix)?

Projeto de entrevista clássico. Pontos centrais: entrega de blobs e vídeo.

O que o design de Plataforma de vídeo (YouTube/Netflix) cobre?

Ele está organizado nestas seções: Subir e assistir: dois botões, dois problemas, Blob storage, CDN e uma fila no meio, Do arquivo bruto aos formatos que cada tela entende, Segmentos, manifesto e bitrate adaptativo, Onde o dinheiro vai e como proteger o vídeo e Quando algo quebra e o que vem depois.

Quanto tempo leva Plataforma de vídeo (YouTube/Netflix) e qual é o nível?

Leva cerca de 16 minutos para ler e tem nível Sênior.

Agora projete você mesmo

Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.