Netflix: o que acontece quando você clica em reproduzir?


Este artigo é um capítulo do meu novo livro, Explique a nuvem para uma criança de dez anos . A primeira opção foi escrita especificamente para aqueles que precisam de uma introdução às nuvens. Depois, fiz algumas atualizações e adicionei alguns capítulos - "Netflix: o que acontece quando você pressiona iniciar?" e "O que é computação em nuvem?" - que já estão um pouco além do conhecimento de um iniciante. Eu acho que eles poderão interessar até pessoas bastante experientes.

Portanto, se você precisa de uma boa introdução às nuvens ou conhece alguém que precisa, dê uma olhada. Eu acho que você vai gostar. Tenho orgulho do que fiz.

Escrevi este capítulo com base em uma dúzia de fontes, às vezes se contradizendo. Os principais fatos mudam com o tempo e dependem de quem conta a história e de qual público. Tentei fazer uma história coerente sempre que possível. Observe que este não é um guia técnico - este é um artigo com imagens grandes. Por exemplo, eu nunca mencionei microsserviços .

Netflix parece tão simples. Clique em "play" e o vídeo aparecerá magicamente. Simples, certo? Sim, na verdade não.



Após nossas discussões no capítulo "O que é computação em nuvem?" você pode esperar que o Netflix funcione com vídeo usando a AWS. Clique em "play" no aplicativo Netflix e o vídeo armazenado no S3 será transmitido diretamente para o seu dispositivo via Internet através da Internet.

Uma abordagem perfeitamente razoável - para um serviço que é muito menor.

Mas a Netflix está completamente errada. Tudo é muito mais complicado e interessante do que você imagina.

Para entender o porquê, vejamos as estatísticas da Netflix para 2017:

  • Mais de 110 milhões de assinantes.
  • Trabalhe em mais de 200 países.
  • Receita de US $ 3 bilhões por trimestre.
  • Adiciona 5 milhões de assinantes por trimestre.
  • Reproduz mais de um bilhão de horas de vídeo semanalmente. Em comparação, o YouTube reproduz 1 bilhão de horas de vídeo por dia, enquanto o Facebook reproduz 110 milhões de horas de vídeo por dia.
  • Em um dia de 2017, 250 milhões de horas de vídeo foram reproduzidas.
  • Responsável por 37% do pico de tráfego da Internet nos EUA.
  • Planeja gastar US $ 7 bilhões em novos conteúdos em 2018.

O que aprendemos?


Netflix é enorme. É global, tem muitos assinantes, reproduz uma enorme quantidade de vídeos e tem muito dinheiro.

Outro fato pertinente é que o Netflix funciona por assinatura. Os assinantes pagam Netflix mensalmente e podem cancelar a assinatura a qualquer momento. Quando você pressiona "play" para relaxar no Netflix, seria melhor se esse serviço funcionasse normalmente. Cancelar inscrição de inscritos insatisfeitos.

Dê uma olhada mais profunda


A Netflix é um ótimo exemplo das idéias que discutimos, portanto, este capítulo terá muito mais detalhes do que descrever outros serviços em nuvem. Uma razão para explorar a Netflix em profundidade é que eles fornecem muito mais informações do que outras empresas. As comunicações da Netflix são consideradas um importante ativo cultural, e a empresa mantém com mais êxito seus padrões.

Eu gostaria de agradecer à Netflix por sua abertura sobre sua arquitetura. Ao longo dos anos, a empresa deu centenas de palestras e escreveu centenas de artigos sobre os detalhes de seus padrões internos de trabalho. Isso ajuda a melhorar todo o setor.

Outro motivo para esses detalhes detalhados é que o serviço Netflix é simplesmente incrível. A maioria de nós já o usou - e quem não estaria interessado em olhar nos bastidores e descobrir como isso funciona?

Netflix é executado em duas nuvens - AWS e Open Connect


Como a empresa satisfaz os clientes? Com a ajuda das nuvens. De fato, duas nuvens diferentes - AWS e Open Connect. Os dois devem trabalhar juntos sem problemas para produzir muitas horas de conteúdo de vídeo que satisfaça os usuários.

Três partes do Netflix: cliente, back-end, rede de entrega de conteúdo


Você pode dividir mentalmente o Netflix em três partes: cliente, back-end, CDN (rede de distribuição de conteúdo).

Cliente - uma interface de usuário executada em qualquer dispositivo usado para exibir listas de vídeos e reproduzi-las. Pode ser um aplicativo móvel em um smartphone, um site em um computador desktop ou até mesmo um aplicativo em uma TV inteligente. A Netflix controla todos os clientes em todos os dispositivos.

Tudo o que acontece antes de você clicar no botão play acontece no back-end em execução na AWS. Isso inclui coisas como preparar todos os novos vídeos recebidos e processar solicitações de todos os aplicativos, sites, televisores e outros dispositivos.

Tudo o que acontece depois de clicar em "play" é processado no Open Connect. Esta é a rede de entrega de conteúdo da Netflix. Ele armazena vídeos em vários lugares ao redor do mundo. Quando você clica em "reproduzir", o fluxo de vídeo vem do Open Connect para o seu dispositivo e é mostrado pelo cliente. Não se preocupe - falaremos sobre a CDN mais tarde. Curiosamente, o processo de lançamento de vídeo da empresa não se chama "clique em" reproduzir ", mas" clique em "iniciar" no nome ". Cada setor tem seu próprio jargão.

Controlando todas as três áreas - cliente, back-end, CDN - a Netflix alcançou total integração vertical. A empresa controla sua experiência de assistir a vídeos do início ao fim. Portanto, ele simplesmente funciona quando você clica em "reproduzir" em qualquer parte do mundo. Você tem a garantia de obter o conteúdo de que precisa, aquele que deseja assistir e quando quiser.

Vamos ver exatamente como isso acontece.

Em 2008, a Netflix começou a se mudar para a AWS


O Netflix está em operação desde 1998. No início, era vendido por aluguel de DVDs. Mas a empresa viu o futuro ao transmitir vídeo sob demanda. Em 2007, a Netflix lançou seu serviço de vídeo sob demanda, que permitia que os assinantes transmitissem programas de TV e filmes através do site da empresa em computadores pessoais ou através do software especial da empresa em várias plataformas suportadas, incluindo smartphones e tablets, players digitais e jogos decodificadores e TVs inteligentes.

O futuro do streaming de vídeo sob demanda pode parecer óbvio. Em princípio, era. Pessoalmente, trabalhei em algumas startups tentando emitir vídeos sob demanda. Eles falharam. E a Netflix estava esperando pelo sucesso. A empresa definitivamente funcionou bem, mas chegou tarde ao mercado, o que a ajudou. Em 2007, a Internet era rápida e barata o suficiente para suportar serviços de streaming de vídeo. Isso não aconteceu antes. O advento do tráfego móvel rápido e não muito caro e a introdução de dispositivos móveis poderosos, como smartphones e tablets, tornaram mais fácil e barato assistir a vídeos a qualquer hora e em qualquer lugar. O momento certo é a chave do sucesso.

Netflix começou com seus próprios data centers


O EC2 estava começando em 2007, na mesma época em que o Netflix estava começando. Portanto, o Netflix não pôde começar a usar o EC2. A empresa construiu dois data centers localizados nas proximidades. E eles experimentaram todos os problemas que discutimos nos capítulos anteriores.

Construir data centers é muito caro. Leva tempo para encomendar equipamentos, sua instalação e lançamento. Imediatamente após o lançamento, eles ficaram sem energia e tudo teve que começar tudo de novo. O tempo gasto em equipamentos forçou a empresa a adotar uma estratégia de escala vertical.

A Netflix escreveu grandes programas que rodavam em computadores grandes. Essa abordagem é chamada de construção de um monólito. Um programa fez tudo. O problema é que, se você crescer tão rápido quanto o Netflix, é muito difícil criar um monólito confiável. Ele não era confiável.

A negação de serviço forçou a Netflix a mudar para a AWS


Em agosto de 2008, a Netflix não pôde enviar DVDs por três dias consecutivos devido a uma falha no banco de dados. Isso foi inaceitável. Era necessário resolver alguma coisa. A experiência de construir data centers ensinou à empresa uma coisa importante: não funcionou bem na construção de data centers. Ela era boa em entregar vídeos para seus clientes. Ela precisava se concentrar em melhorias na entrega de vídeo, em vez de melhorias na construção de data centers. A construção de data centers não era uma vantagem competitiva da empresa - sua vantagem era a entrega de vídeo.

Naquela época, a Netflix decidiu mudar para a AWS. A AWS estava apenas começando, por isso foi uma decisão ousada. A empresa mudou-se para a AWS porque precisava de uma infraestrutura mais confiável. A Netflix queria eliminar todas as fraquezas do sistema. A AWS ofereceu bancos de dados, armazenamento e data centers redundantes altamente confiáveis. A Netflix precisava de serviços em nuvem para não criar monólitos não confiáveis. A Netflix queria se tornar um serviço global sem construir seus data centers. Tais oportunidades em seus antigos datacenters não eram e não poderiam ser.

A Netflix escolheu a AWS porque não queria se envolver em trabalho duro indiferenciado. Trabalho duro indiferenciado é o que precisa ser feito, mas isso não traz nenhuma vantagem para o negócio principal, que consiste em fornecer uma visualização de vídeo de qualidade. A AWS faz todo esse trabalho duro para a Netflix. E isso dá aos netflixers a oportunidade de se concentrar em fornecer serviços comerciais valiosos.

A mudança de uma empresa de seus data centers para a AWS levou mais de oito anos. A Netflix aumentou o número de clientes oito vezes durante esse período. A Netflix agora roda em várias centenas de milhares de cópias do EC2.

AWS Netflix mais confiável


Não que a Netflix nunca tenha tido problemas com a AWS, mas, em geral, seu serviço se tornou muito mais confiável do que antes. Você não verá mais essas reclamações:





A empresa se tornou tão confiável quanto tomou medidas extraordinárias para isso. Opera em três regiões da AWS: Virgínia do Norte, Portland, Oregon e Dublin, Irlanda. Em cada um deles, o Netflix opera em três zonas de acesso diferentes.

A empresa não tem planos de aumentar o número de regiões de trabalho. Adicionar novas regiões é muito difícil e caro. A maioria das empresas opera em apenas uma região, sem mencionar duas ou três.

A vantagem de trabalhar em três regiões é que uma delas pode cair e as outras duas se encaixam e atendem clientes da região afetada. A Netflix chama a queda da evacuação da região.

Considere um exemplo. Suponha que você esteja assistindo a um novo episódio de "House of Cards" em Londres, Inglaterra. Provavelmente, seu dispositivo está conectado à região de Dublin, pois é o mais próximo. O que acontece quando a região de Dublin cai? A Netflix deixará de funcionar para você? Não. Quando um problema é detectado, o Netflix o redireciona para a Virgínia. Seu dispositivo se comunicará com a região Virgin em vez de Dublin. Você pode nem perceber falhas.

Com que frequência a região da AWS falha? Uma vez por mes Bem, na verdade a região não falha todos os meses. A Netflix realiza testes mensais. A cada mês, a Netflix descarta especificamente toda a região, apenas para garantir que seu sistema lide com falhas regionais. Você pode evacuar a região em seis minutos.

A Netflix chama isso de modelo de serviço global. Cada cliente pode ser atendido de qualquer região. Isso é incrível. E isso não acontece automaticamente. A AWS não possui um molho mágico para lidar com a falha de regiões ou atender clientes de diferentes regiões. A própria Netflix fez o trabalho. A empresa é pioneira na criação de sistemas confiáveis ​​usando várias regiões. Não conheço outras empresas que tomariam essas medidas para garantir a confiabilidade do serviço.

Outra vantagem de trabalhar nessas três regiões é que o Netflix pode cobrir o mundo inteiro. A Netflix realizou verificações e descobriu que, ao iniciar o aplicativo em qualquer lugar do mundo, em qualquer caso, você receberá um serviço rápido de uma dessas regiões.

Netflix salva usando a AWS


Isso pode surpreender muitos, mas o AWS para Netflix é mais barato. O custo da nuvem em termos de visualização do vídeo sai várias vezes menos do que ao usar data centers antigos. Porque Devido à elasticidade da nuvem.

O Netflix pode adicionar servidores conforme necessário e devolvê-los quando não forem necessários. Em vez de um monte de computadores adicionais sem fazer nada, apenas aguardando o pico de carga, a empresa usa exatamente quantos computadores forem necessários e quando necessário.

O que acontece na AWS antes de você clicar em reproduzir?


Tudo o que não está conectado com o arquivamento do vídeo é processado na AWS. Isso inclui poder de computação escalável, armazenamento escalável, lógica de negócios, bancos de dados distribuídos escaláveis, processamento e análise de big data, recomendações, transcodificação e centenas de outras funções. Você não precisa entender todos, mas, como isso pode lhe parecer interessante, explicarei brevemente.

Energia e armazenamento escaláveis ​​para computação


O poder de computação escalável é EC2 e o armazenamento é S3. Não há nada novo para nós aqui. Seu dispositivo é um iPhone, TV, Xbox, smartphone Android, tablet etc. - comunica-se com um serviço em execução no EC2. Seu dispositivo recebe uma lista de filmes em potencial para assistir entrando em contato com um computador executando o EC2. Informações detalhadas sobre o vídeo que seu dispositivo recebe lá. Tudo funciona da mesma forma que em outros serviços em nuvem.

Bancos de dados distribuídos escaláveis


A Netflix usa o DynamoDB e o Cassandra como bancos de dados distribuídos. Esses nomes não devem significar nada para você - são apenas bancos de dados de alta qualidade. Os dados são armazenados no banco de dados. Informações sobre seu perfil, contas, todos os filmes assistidos - tudo isso é armazenado no banco de dados. Os bancos de dados distribuídos não funcionam em um computador grande, mas em muitos computadores. Seus dados são copiados para muitos computadores, para que, mesmo que um ou dois computadores que armazenam seus dados falhem, eles estarão seguros. Na realidade, todos os dados são copiados nas três regiões. Por esse motivo, no caso de uma falha na região, seus dados estarão disponíveis em outra região para a qual você será alternado. E a escala significa que o banco de dados poderá armazenar o máximo de dados que você adicionar a ele. Essa é uma das principais vantagens dos bancos de dados distribuídos. Se mais dados chegarem, mais computadores poderão ser adicionados.

Processamento e análise de big data


Big data é apenas um monte de dados. A Netflix coleta muitas informações. A empresa sabe quem assistiu, quando e onde eles assistiram. A empresa sabe quais vídeos seus clientes visualizaram, mas não fizeram o pedido. Ela sabe quantas vezes cada vídeo foi assistido - e muito mais.

Coletar e converter todos os dados em um formato padrão é chamado de processamento. E extrair significado deles - análise. Os dados são analisados ​​para obter respostas a perguntas específicas.

A Netflix personaliza imagens especialmente para você


Aqui está um ótimo exemplo de como a Netflix o atrai a assistir a mais filmes usando os recursos de análise de dados. Ao navegar pelas listas, escolhendo o que ver, você prestou atenção ao fato de que para cada filme é emitida uma foto? Esta é a imagem do título.

A imagem do título deve intrigá-lo, atrair sua atenção e fazer você escolher este vídeo. A ideia é que, quanto mais intrigante a imagem, maior a probabilidade de você assistir ao vídeo. E quanto mais vídeos você assiste, menor a probabilidade de cancelar a inscrição no Netflix.

Aqui está um exemplo das várias imagens de título da série Stranger Things:



Você pode se surpreender ao ver que cada imagem de cada vídeo é selecionada especificamente para você. Nem todo mundo vê as mesmas imagens.

Anteriormente, todos viram as mesmas imagens do título. Aqui está como funcionou. Foi mostrada aos clientes uma imagem selecionada aleatoriamente de um conjunto, como a mostrada na ilustração acima. O Netflix contou todas as visualizações de vídeo e registrou a imagem exibida ao usuário quando um vídeo foi selecionado. Suponha, no nosso exemplo da série, que, ao mostrar a foto central da colagem, o vídeo tenha sido assistido 1000 vezes. E ao mostrar o restante das fotos - apenas uma vez.

Como a imagem do grupo era melhor do que as outras para atrair usuários, a Netflix precisou transformá-la na imagem-título da série para sempre. Isso é chamado de seleção baseada em dados. O Netflix funciona com base na análise de dados. Os dados são coletados - nesse caso, o número de visualizações associadas a cada figura - e usados ​​para tomar as melhores decisões - nesse caso, para selecionar uma figura de título.

Astuciosamente, mas isso pode ser feito ainda melhor? Sim, usando ainda mais dados. Para este tópico, o futuro está na solução de problemas, aprendendo com os dados. Nós somos pessoas diferentes. Você acha que as mesmas imagens podem nos motivar? Provavelmente não. Temos gostos diferentes, preferências diferentes. E a Netflix sabe disso - agora, ela personaliza todas as imagens que mostra. Ela está tentando escolher uma imagem que destaque o aspecto mais importante do vídeo para você. Como ela faz isso?

Lembre-se de que o Netflix registra e conta tudo o que você faz em seu site. Ela sabe quais filmes você gosta, quais atores você gosta, e assim por diante. Suponha que entre suas recomendações estava o filme "Caça à Boa Vontade". A Netflix deve escolher uma imagem de cabeçalho adequada. O objetivo é mostrar uma imagem que diga que este filme pode ser do seu interesse. Que imagem você precisa mostrar?

Se você gosta de comédias, a Netflix mostrará uma imagem com Robin Williams. Se você preferir melodramas, a Netflix mostrará uma imagem de Matt Damon e Minnie Driver prestes a se beijar.



Apresentando Robin Williams, o serviço informa que é provável que o filme tenha humor e, como a Netflix sabe que você gosta de comédias, este vídeo é ideal para você. Image Matt Damon e Minnie Driver enviam uma mensagem completamente diferente. Se você gosta de comédias e vê esta foto, provavelmente sentirá falta dela. Portanto, escolher a imagem certa é muito importante. Ele envia uma forte mensagem personalizada contando sobre o tema do filme.

Aqui está outro exemplo - Pulp Fiction:



Se você assistiu a muitos filmes com Uma Thurman, provavelmente verá a imagem do título com Uma. Se você assistiu a muitos filmes com Travolta, provavelmente verá a imagem do título com John. Veja como escolher a melhor imagem personalizada possível pode aumentar a probabilidade de assistir a um vídeo específico?

A Netflix agrada ao seu interesse ao escolher imagens, mas o serviço não deseja mentir para você. Ele não deseja mostrar apenas uma imagem atraente para fazer você assistir a um vídeo que não gosta. Não há incentivo. O serviço não cobra pelo número de visualizações. O serviço tenta minimizar o arrependimento e deseja que você goste do que está assistindo, para selecionar a melhor imagem de título possível. E este é apenas um pequeno exemplo de análise de dados. A Netflix usa essas estratégias em todos os lugares.

Recomendações


A Netflix geralmente mostra de 40 a 50 opções de vídeo, mas o serviço oferece milhares de vídeos. Como a Netflix decide o que mostrar? Pelo aprendizado de máquina.

Isso faz parte do processamento e análise de big data que acabamos de falar. O serviço examina os dados e prevê o que você pode gostar. Em geral, tudo o que você vê na tela do Netflix foi selecionado especificamente para você usando o aprendizado de máquina.

Transcodificação do arquivo de origem para o formato necessário


E assim descobrimos como a Netflix lida com o vídeo. Antes de começar a assistir no seu dispositivo favorito, a Netflix deve converter o vídeo no formato que melhor se adequa ao seu dispositivo. Esse processo é chamado de transcodificação. Ele converte um arquivo de vídeo de um formato para outro, para que o vídeo possa ser assistido em diferentes plataformas e dispositivos. A Netflix codifica todos os seus vídeos na AWS em 300.000 processadores simultaneamente. Isso é mais do que quase qualquer supercomputador!

Fonte de dados Fonte


Quem envia vídeos para a Netflix? Estúdios e associações de produção. A Netflix chama isso de dados brutos. O novo vídeo é enviado à equipe de conteúdo para processamento. Ele vem em alta resolução, com muitos terabytes de tamanho. Para imaginar um terabyte de informação, imagine 60 pilares de papel, cada um com altura igual à Torre Eiffel.

Antes de assistir ao vídeo, o Netflix o expõe a um processo severo de várias etapas.



Verificação da qualidade


Primeiro, a Netflix gasta muito tempo verificando a qualidade do vídeo. Ela procura artefatos digitais, alterações de cores, quadros perdidos que podem aparecer devido a tentativas anteriores de transcodificação ou problemas de transferência de dados. Se algum problema for detectado, o vídeo será rejeitado.

Transportador de processamento


Depois de confirmar, a qualidade do vídeo é enviada ao pipeline de processamento. Essa é uma sequência de etapas pelas quais os dados passam antes de serem usados ​​- algo como uma correia transportadora em uma fábrica. Mais de 70 programas de processamento diferentes são usados ​​para criar cada vídeo.

O processamento de um único arquivo de vários terabytes é impraticável; portanto, o primeiro passo no pipeline será dividir o vídeo em vários pedaços pequenos. As peças passam ao longo do transportador para que possam ser codificadas em paralelo - ou seja, são processadas simultaneamente.

Mostramos paralelização usando um exemplo.



Suponha que você tenha cem cães sujos que precisam ser lavados. Como será mais rápido fazer isso - se uma pessoa lavar um cão após o outro, ou se você contratar uma centena de lavadoras de cães e lavá-las todas ao mesmo tempo?

Obviamente, o processo será mais rápido se cem arruelas trabalharem ao mesmo tempo. Isso é paralelismo. É por isso que a Netflix usa tantos servidores EC2. Eles precisam de muitos servidores para processar esses arquivos de vídeo gigantes em paralelo. E funciona - a empresa afirma que o arquivo de origem pode ser codificado e enviado para a CDN em apenas 30 minutos.

Quando as peças são codificadas, elas são verificadas para garantir que não apresentem novos problemas. Em seguida, eles são coletados novamente em um arquivo e verificados novamente.

O resultado é um monte de arquivos


O processo de codificação cria muitos arquivos. PorqueO objetivo final da Netflix é oferecer suporte a todos os dispositivos conectados à Internet. A empresa começou a operar em 2007 na plataforma Microsoft Windows. Com o tempo, muitos outros dispositivos foram adicionados - Roku, LG, Samsung Blu-ray, Apple Mac, Xbox 360, LG DTV, Sony PS3, Nintendo Wii, Apple iPad, Apple iPad, Apple iPhone, Apple TV, Android, Kindle Fire e Comcast X1.

No total, o Netflix suporta 2.200 dispositivos diferentes. Para cada um deles existe um formato de vídeo com a melhor aparência. Se você assiste à Netflix em um iPhone, verá o vídeo com melhor aparência em um iPhone. A empresa chama todos os vários formatos de vídeo de perfil de codificação. A Netflix também cria arquivos otimizados para diferentes velocidades de rede. Se você assistir a um arquivo em uma rede de alta velocidade, verá um vídeo de melhor qualidade do que se o assistisse em uma rede mais lenta.

Também existem arquivos para vários formatos de áudio. O áudio é codificado em diferentes níveis de qualidade e idiomas diferentes. Além disso, existem arquivos com legendas. Um vídeo pode ter várias legendas em diferentes idiomas. Existem várias opções de visualização diferentes para cada vídeo. O que você vê depende do seu dispositivo, qualidade da conexão, tarifa de serviço e escolha do idioma.

Então, quantos arquivos existem?


Para a série, The Crown Netflix armazena cerca de 1200 arquivos. A segunda temporada de Stranger Things tem ainda mais arquivos. Foi filmado em resolução 8K e tem nove episódios. Os arquivos de origem ocupam muitos terabytes de dados. Foram necessárias 190.000 horas de processador para codificar apenas uma temporada. O resultado são 9.570 arquivos de vídeo, áudio e texto diferentes.

Agora vamos ver como o Netflix reproduz todos esses arquivos.

Três estratégias diferentes para streaming de vídeo


A Netflix possui três estratégias diferentes para reproduzir streaming de vídeo: CDN pequeno, CDN de terceiros e Open Connect. Vamos começar com a definição de CDN. CDN é uma rede de distribuição de conteúdo. Para a Netflix, o conteúdo é, obviamente, os arquivos de vídeo que discutimos na seção anterior. Compartilhar significa que os arquivos são copiados de um local central na rede e armazenados em computadores distribuídos em todo o mundo. Na Netflix, o local central de armazenamento de arquivos é S3.

Por que criar uma CDN?


A idéia é simples: você precisa posicionar o vídeo o mais próximo possível dos usuários, distribuindo computadores em todo o mundo. Quando um usuário quiser assistir a um vídeo, encontre o computador mais próximo dele e organize um fluxo a partir daí para o dispositivo. Os maiores benefícios da CDN são velocidade e confiabilidade.

Imagine que você está assistindo a um vídeo em Londres e ele está sendo transmitido para você de Portland, Oregon. O fluxo de vídeo precisa passar por muitas redes, incluindo o cabo submarino, para que a conexão seja lenta e não confiável. Ao aproximar o vídeo das pessoas que o assistem, você pode tornar a emoção de assistir a um vídeo mais rápida e confiável.

Cada local do computador que armazena o vídeo é chamado de ponto de presença (PoP). Cada PoP é um local físico com acesso à Internet. Existem servidores, roteadores e outros equipamentos de telecomunicações. Falaremos sobre PoP mais tarde.

A primeira CDN era muito pequena


Em 2007, quando a Netflix lançou seu serviço de streaming, ele contava com 36 milhões de assinantes em 50 países, que assistiam mais de um bilhão de horas de vídeo por mês e que recebiam vários terabits de dados por segundo. Para oferecer suporte ao serviço, a Netflix criou seu próprio CDN simples em cinco locais diferentes nos Estados Unidos. O catálogo de vídeos da empresa era pequeno o suficiente e todos os arquivos foram armazenados em todos os lugares.

O segundo CDN era muito grande


Em 2009, a Netflix decidiu usar uma CDN de terceiros. Naquela época, o custo da CDN começou a cair. Usar redes de terceiros foi uma jogada inteligente para a Netflix. Por que perder tempo e esforço construindo suas redes se você pode alcançar imediatamente qualquer lugar do planeta com as CDNs existentes?

A Netflix trabalhou para fornecer serviços de CDN a empresas como Akamai, Limelight e Nível 3. Não há nada de errado em usar CDNs de terceiros. De fato, quase todas as empresas fazem isso. Por exemplo, a NFL usou os serviços da Akamai para apresentar competições de futebol americano ao vivo. Sem criar suas próprias CDNs, a Netflix liberou tempo para trabalhar em outros projetos prioritários.

A empresa gastou muito tempo e esforço desenvolvendo clientes mais inteligentes. A Netflix criou algoritmos que se adaptam às mudanças nas condições da rede. Mesmo em caso de erros, sobrecargas na rede ou no servidor, a empresa deseja que os usuários tenham a melhor imagem possível. Uma das tecnologias desenvolvidas pela empresa - mudar para outra fonte de vídeo - por exemplo, para outra CDN ou outro servidor - para obter o melhor resultado.

Ao mesmo tempo, a Netflix gasta muito esforço no suporte a todos os serviços da AWS mencionados anteriormente. A Netflix chama os serviços da AWS de um plano de referência. O plano de controle é um termo de rede para a parte do sistema que controla todo o resto. No seu corpo, seu cérebro é o plano de controle - controla todo o resto.

E então a Netflix decidiu que eles poderiam melhorar o serviço desenvolvendo sua própria CDN.

O Open Connect foi perfeito


Em 2011, a Netflix percebeu que, em sua escala, precisavam de uma solução CDN dedicada para maximizar a eficiência da rede. A distribuição de vídeo é uma competência essencial da empresa e pode ser uma enorme vantagem competitiva. Portanto, a Netflix começou a desenvolver o Open Connect, seu próprio CDN especial. Tudo começou em 2012. O Open Connect tem muitas vantagens:

  • Ela não é tão cara. CDNs de terceiros são mais caros. Fazer você mesmo significa economizar muito dinheiro.
  • Melhor qualidade. A Netflix argumentou que, ao controlar todo o caminho do vídeo - transcodificação, CDN, clientes, dispositivos - ele poderia oferecer excelente qualidade de serviço.
  • . . , .

CDNs de terceiros devem oferecer suporte a usuários que precisam acessar qualquer conteúdo de qualquer lugar do mundo. A tarefa da Netflix era muito mais simples.

A Netflix conhece seus usuários com certeza enquanto se inscrevem. Ela sabe quais vídeos transferir. Só porque você só precisa transferir grandes fluxos de vídeo, é possível executar várias ações para otimizar redes de maneira inteligente que outras CDNs não podem executar. A Netflix também sabe muito sobre seus clientes. A empresa sabe quais vídeos eles gostam e quando gostam de assisti-los.

Com esse conhecimento, a Netflix construiu uma CDN de alta velocidade. Vamos dar uma olhada em como o Open Connect funciona.

Abrir dispositivos de conexão


Lembra como discutimos que os computadores CDN são distribuídos pelo mundo? A Netflix desenvolveu seu próprio sistema de computador para armazenamento de vídeo. A Netflix chama de dispositivos Open Connect (Open Connect Appliances, OCA). Veja como era uma das primeiras instalações da OCA:



Na foto - vários OCA de uma só vez. Os OCA são agrupados em clusters de vários servidores. Cada OCA é um servidor rápido e otimizado para saída de arquivos grandes, com muitos discos rígidos ou unidades flash armazenando vídeo. Veja como é um dos servidores OCA:



Para propósitos diferentes, existem vários tipos diferentes de OCA. Existem grandes OCA capazes de armazenar todo o diretório de vídeos da empresa. Existem OSAs pequenos que podem armazenar apenas parte do diretório de vídeo. Os OCAs pequenos são preenchidos com arquivos de vídeo diariamente durante o horário de pico durante o cache proativo.

Em termos de equipamento, o OSA não tem nada de extraordinário. Eles são baseados em componentes de PC convencionais e vários fornecedores os montam em vários pacotes. Você pode comprar os mesmos computadores, se quiser. Observe que todos os computadores Netflix estão vermelhos. A empresa os ordena especificamente para que correspondam à cor do logotipo.

Em termos de software, os OSAs usam o FreeBSD OS e o nginx como um servidor web. Sim, todo OSA é um servidor web. Os fluxos de vídeo usam nginx. Se esses nomes não disserem nada a você - não desanime, eu os incluo apenas para completar a figura.

O número de OSAs locais depende da confiabilidade que a Netflix deseja obter em um determinado local, a quantidade de tráfego que atende e a porcentagem de tráfego que esse centro pode enviar como um fluxo. Ao clicar em "reproduzir", você assiste a um fluxo de vídeo proveniente de um OSA específico - como o acima, localizado perto de você.

Para uma melhor experiência de visualização, a Netflix gostaria de armazenar em cache o vídeo em sua casa. Mas, por enquanto, isso é impraticável. A próxima opção mais conveniente é colocar um mini-Netflix perto de sua casa. Como isso pode ser feito?

Onde a Netflix hospeda o OCA?


A Netflix distribui enormes quantidades de vídeo de milhares de servidores localizados em mais de 1000 data centers em todo o mundo. Veja este mapa de localização do servidor de vídeo:



Outros serviços de vídeo, como YouTube e Amazon, entregam vídeo em suas próprias redes. Essas empresas literalmente criaram suas próprias redes globais para fornecer vídeo aos usuários. É muito complicado e caro. A Netflix adota uma abordagem completamente diferente para criar uma CDN.

A Netflix não funciona em sua rede, não funciona em seus próprios data centers. Em vez disso, os ISPs concordam em hospedar o OCA. A Netflix oferece aos provedores gratuitamente para integrar seus servidores à sua rede, além disso, coloca o OSA próximo aos pontos de troca de tráfego (local de troca de internet, IXP).

Essa estratégia permite que a Netflix não construa seus próprios datacenters, mas a empresa obtém todas as vantagens de estar nesse centro - apenas pertence a outra pessoa. Engenhoso! Vamos dividir os últimos parágrafos em etapas mais simples.

Usando o ISP para criar uma CDN


O ISP é seu provedor de serviços de Internet. É quem fornece a Internet como um serviço. Pode ser Verizon, Comcast, Beeline ou um dos milhares de outros. O principal é que os ISPs estão localizados em todo o mundo e estão próximos dos clientes. Ao hospedar o OCA nos datacenters de ISP, a Netflix também é distribuída em todo o mundo e perto de seus clientes.

Usando o IXP para criar uma CDN


Um ponto de troca de tráfego é um datacenter em que o ISP e a CDN trocam tráfego entre redes. É como ir a uma festa para trocar presentes de Natal com os amigos. Compartilhar é mais fácil se todos estiverem reunidos em um só lugar.

IXP espalhados pelo mundo:



Aqui está a aparência do IXP em Londres:



Se você se aproximar desses cabos de fibra óptica amarelos, eis o que você verá (com base no ponto de troca AMS-IX em Amsterdã):



Cada cabo conecta uma rede à outra. É assim que redes diferentes trocam tráfego entre si. IXP é como um intercâmbio rodoviário, apenas com fios:



Para a Netflix, essa é outra vantagem. Os IXPs estão localizados em todo o mundo. Ao colocar o OSA no IXP, a empresa pode não ter mais seus próprios data centers.

Vídeo proativamente armazenado em cache no OSA


A Netflix possui vários vídeos localizados no S3. Os computadores transmissores de vídeo estão localizados em todo o mundo. Só falta uma coisa: o vídeo em si! A Netflix usa um processo chamado cache proativo para copiar com eficiência o vídeo para o OCA.



O que é cache cache - cache]? Este é um local frequentemente localizado na terra onde cartuchos secretos, alimentos e tesouros são armazenados em segredo. Você sabe como esquilos escondem nozes para o inverno? Todo lugar onde um esquilo escondeu uma noz é um esconderijo. No inverno, qualquer esquilo pode encontrar um monte de nozes e mastigá-las. Os exploradores do Ártico enviam pequenas equipes à frente que armazenam alimentos, combustível e outros suprimentos pelo caminho a seguir. Uma equipe maior correndo atrás para em cada cache e restaura. Tanto as proteínas quanto os pesquisadores do Ártico trabalham proativamente; eles estão fazendo algo com antecedência para se preparar para o futuro.

Cada OCA é um cache de vídeo do que você provavelmente deseja assistir. A Netflix armazena em cache o vídeo, prevendo o que você deseja assistir. Em todo o mundo, a Netflix sabe com grande certeza que seus clientes adoram assistir. Lembra que dissemos que a Netflix é uma empresa orientada a dados? Ela usa dados de popularidade para prever quais vídeos seus clientes provavelmente assistirão amanhã em qualquer lugar. Por local aqui, entende-se um cluster OSA localizado no ISP ou IXP. A empresa copia os vídeos previstos para um ou mais OCA em cada um dos locais. Isso é chamado de layout preliminar. O vídeo está hospedado no OSA antes que alguém o solicite. Como resultado, os clientes recebem um excelente serviço. O vídeo que eles querem assistir já está perto deles, em um formulário pronto para visualização.



A Netflix trabalha com os chamados cache vinculado. Os OCAs pequenos são hospedados pelo ISP ou IXP. Eles são pequenos demais para caber no catálogo de vídeos inteiro. Em outros lugares, existem OSAs com quase todo o diretório de vídeos do Netflix. E em outro lugar, há lugares onde o OSA contém o catálogo inteiro da Netflix. Eles recebem vídeos do S3.

Todas as noites, o OSA acorda e pesquisa o serviço da AWS para saber que tipo de vídeo ele precisa. O serviço envia a ele uma lista de vídeos que ele deveria ter, construído com base em previsões. Cada OCA é responsável por ter todos os vídeos nesta lista. Se um dos OCA em um local tiver um dos vídeos necessários, o OCA em cache copiará esse vídeo dele. Caso contrário, o vídeo será encontrado e retirado de alguns OSA, localizados não muito longe.

Como a Netflix prevê que será popular amanhã, sempre haverá uma desvantagem um dia antes que o vídeo seja necessário no OSA. Isso significa que o vídeo pode ser copiado em um momento silencioso, fora do pico de carga, o que reduz bastante o uso da largura de banda do ISP.

O Open Connect nunca apresenta erros de cache. Uma falta é quando um vídeo específico é solicitado à OSA e ele responde que não o possui. Ocorrem erros em outras CDNs porque eles não podem copiar todo o conteúdo em qualquer lugar. Como o Netflix conhece todos os vídeos que precisam ser armazenados em cache, ele sabe exatamente onde e quais vídeos estão em que momento. Se um OSA pequeno não tiver o vídeo desejado, ele será garantido por um dos principais OSA.

E por que a Netflix não copia todos os seus vídeos para toda a OCA do mundo? O diretório de vídeo dela é grande demais para isso. Em 2013, o volume do catálogo excedeu 3 petabytes; o que ele é hoje, não sei, só posso assumir isso muito mais. É por isso que a empresa desenvolveu um método para selecionar arquivos de vídeo que precisam ser armazenados em cada OSA, usando dados que prevêem que os assinantes desejarão assistir.

Veja um exemplo. "House of Cards" é um programa muito popular. Para qual OSA ele deve ser copiado? Provavelmente, em todos os lugares, como assinantes de todo o mundo querem assistir. Mas e se o vídeo não for tão popular quanto o House of Cards? A Netflix decide em quais locais as cópias devem ser armazenadas para melhor atender às necessidades de todos os clientes imediatos.

Em um só lugar, os vídeos mais populares são copiados para muitos OSA. Quanto mais popular o vídeo, mais servidores armazenam uma cópia dele. Porque Se um vídeo muito popular tivesse apenas uma cópia, o fluxo de vídeo para todos os clientes sobrecarregaria o servidor.

Um vídeo não é considerado preparado para distribuição se for copiado para apenas um OSA. A Netflix deseja reproduzir o mesmo conteúdo ao mesmo tempo em todo o mundo. Somente quando houver um número suficiente de OSA com um número suficiente de cópias do vídeo para fornecer a qualidade certa, o vídeo será considerado preparado para visualização.

Por exemplo, a segunda temporada do programa Demolidor em 2016 foi a primeira vez que a Netflix lançou todos os episódios da série em todos os dispositivos em todos os países ao mesmo tempo.

Posicionamento OSA: por que os provedores precisam disso?


Por que os fornecedores concordam em hospedar clusters OSA? À primeira vista, isso é muito generoso - mas será interessante descobrir que o lucro pessoal está realmente envolvido aqui. Para entender isso, precisamos falar sobre como as redes funcionam. Neste livro, discutimos que o acesso aos serviços em nuvem é via Internet. No caso da Netflix, isso não é verdade - ao assistir vídeo através do aplicativo Netflix, ele se comunica com a AWS pela Internet. [não está muito claro que diferença o autor tinha em mente // aprox. perev.]

A Internet é a interconexão de redes. Você tem um provedor que fornece acesso à Internet. Eu recebo meu serviço de internet da Comcast. Isso significa que minha casa está conectada à rede Comcast via fibra ótica. A rede Comcast pertence a eles - isso não é a Internet, a Internet é outra coisa.

Suponha que eu queira fazer uma pesquisa no Google, digite uma solicitação no navegador e pressione Enter. Meu pedido primeiro passa pela rede Comcast. O Google não está localizado na rede Comcast. Em algum momento, minha solicitação deve ir para a Rede do Google. Para isso, existe a Internet. A Internet conecta a rede Comcast à rede do Google. Existem protocolos de roteamento que funcionam da maneira de um controlador de tráfego de rua e tráfego de rede direto. Quando minha solicitação é enviada à Internet, ela fica fora da rede da Comcast e fora da Rede do Google. Ele está localizado na espinha dorsal da Internet . A Internet está conectada a partir de muitas redes privadas que decidem interagir entre si. IXP é uma das maneiras pelas quais as redes se comunicam.

Nos EUA, há um mapa de redes de fibra distantes:



A Netflix fez o seguinte com seu Open Connect: hospedava clusters OSA em redes ISP. Isso significa que, se eu assistir a um vídeo do Netflix, estou conversando com um OSA localizado na rede Comcast. Todo o meu tráfego de vídeo entra na rede deles e não fica online.

A chave para escalar a entrega de vídeo é estar o mais próximo possível do usuário. Ao fazer isso, você não está usando backbones da Internet. As solicitações são atendidas na parte local da rede. Por que isso é bom? Lembre-se, dissemos que o Netflix já consome mais de 37% do tráfego da Internet nos EUA. Se o ISP não cooperasse com a empresa, usaria ainda mais a Internet. A Internet não conseguiu lidar com todo o tráfego. Os fornecedores precisariam adicionar mais capacidade, o que é muito caro.

Agora, quase 100% do conteúdo da Netflix é transmitido nas redes de provedores. Isso reduz o custo de manutenção da rede, porque não obstrui a Internet. Ao mesmo tempo, os assinantes do Netflix recebem vídeo de alta qualidade e o desempenho da rede melhora para todos. Todo mundo ganha.

Conexão aberta confiável e resiliente


Já discutimos como o Netflix aumenta a confiabilidade do sistema trabalhando em três regiões da AWS. A arquitetura Open Connect atinge os mesmos objetivos. Isso pode não ser óbvio, mas os OCA são independentes um do outro. As OCAs funcionam como arquipélagos de entrega de vídeo independentes. Os assinantes que recebem vídeo de um OSA não sofrem com falhas de outro OSA.

O que acontece quando o OSA falha? O programa cliente que você está usando muda instantaneamente para outro OSA e continua a exibição. O que acontece se muitas pessoas usam OCA em um só lugar? O programa cliente encontra um OSA menos carregado. O que acontece se a rede usada para transmitir vídeo estiver sobrecarregada? A mesma coisa - o programa encontra outro OSA na rede que funciona melhor. O Open Connect é um sistema muito confiável e tolerante a falhas.

Netflix controla o cliente


A Netflix lida de maneira inteligente com falhas, pois controla o cliente em todos os dispositivos. A própria empresa desenvolve aplicativos para Android e iOS, para que possamos esperar que os controle. Mas mesmo em plataformas como a Smart TV, onde a Netflix não criou clientes, ainda a controla porque controla o SDK (pacote de desenvolvimento de aplicativos).

SDKs são um conjunto de programas de desenvolvimento que permitem criar aplicativos. Cada aplicativo Netflix faz solicitações da AWS e reproduz vídeos usando o SDK. Ao controlar o SDK, a Netflix pode se adaptar constantemente e em tempo real a redes lentas, falha de OSA e outros possíveis problemas.

E finalmente: é isso que acontece quando você clica em "reproduzir"

Percorremos um longo caminho em direção a isso e aprendemos muito. Aqui está o que sabemos no momento:

  • O Netflix pode ser dividido em três partes: back-end, cliente e CDN.
  • Todas as solicitações de clientes são atendidas pela AWS.
  • Todos os vídeos são transferidos do dispositivo Open Connect (OCA) mais próximo para a CDN.
  • A Netflix trabalha com três regiões da AWS e geralmente pode lidar com falhas em qualquer região, para que ninguém perceba.
  • O novo conteúdo é convertido na empresa em vários formatos diferentes, para que você possa escolher a opção mais adequada com base no tipo de dispositivo, qualidade da rede, localização geográfica e taxa de assinantes.
  • Todos os dias, no Open Connect, a empresa distribui vídeos ao redor do mundo sem prever o que os assinantes vão querer assistir em diferentes partes do mundo.

Aqui está a imagem que a Netflix descreve usando o processo de reprodução:



Vamos terminar:

  • Você seleciona um vídeo para assistir usando um cliente em execução em algum dispositivo. O cliente envia uma solicitação de reprodução, indicando qual vídeo você precisa, para o serviço Playback Apps da AWS.
  • Não discutimos isso antes, mas a maior parte do que acontece quando você clica em "reproduzir" está relacionada ao licenciamento. Nem todas as partes do mundo têm licença para visualizar cada vídeo. A Netflix deve determinar se você tem uma licença para assistir a um vídeo específico. Não discutiremos esse tópico chato, mas lembre-se de que isso acontece o tempo todo. Uma das razões pelas quais a Netflix começou a criar seu próprio conteúdo foi uma tentativa de evitar problemas de licenciamento [e ainda existem situações absurdas em que a empresa não pode exibir a série de produção da Netflix porque vendeu seus direitos a um provedor de conteúdo local - sem mencionar todos os territórios proibidos para o trabalho de empresas americanas // aprox. transl.]. A Netflix quer lançar programas para todas as pessoas ao redor do mundo ao mesmo tempo. Criar seu próprio conteúdo é a maneira mais fácil de evitar problemas de licenciamento.
  • Dadas todas as informações relevantes, o serviço Playback Apps retorna a URL para vários, até dez, servidores OSA. Esses são os mesmos URLs que você pode ver no seu navegador. A Netflix usa seu endereço IP e informações do seu provedor para determinar quais clusters OSA são melhores para você.
  • O cliente analisa a situação e seleciona o OCA. Ele verifica a qualidade da conexão com cada um deles. Ele se conectará ao OSA mais rápido e confiável. O cliente realiza essas verificações constantemente durante a reprodução do vídeo.
  • O cliente está tentando escolher a melhor maneira de receber conteúdo do OSA.
  • O cliente se conecta ao OSA e começa a emitir o fluxo de vídeo no seu dispositivo.
  • Ao assistir a um vídeo, você percebeu que a qualidade da imagem está mudando? Às vezes, haverá pixels e, depois de algum tempo, a imagem volta à alta qualidade novamente? Isso ocorre porque o cliente se adapta à qualidade da rede. Se a qualidade diminuir, o cliente reduzirá a qualidade do vídeo. Se a qualidade cair muito, o cliente mudará para outro OSA.

É o que acontece quando você clica em "reproduzir" no Netflix. Quem pensaria que uma coisa tão simples, como assistir a um vídeo, poderia ser tão complicada?

Source: https://habr.com/ru/post/pt409583/


All Articles