BLOG | NGINX

Por que a Netflix escolheu o NGINX como o coração de seu CDN

NGINX-Parte-de-F5-horiz-preto-tipo-RGB
Tony Mauro Miniatura
Tony Mauro
Publicado em 25 de março de 2015

Nos poucos anos desde seu lançamento, o serviço de streaming de vídeo online da Netflix cresceu e agora atende mais de 50 milhões de assinantes em 40 países. Já compartilhamos algumas das melhores práticas que os engenheiros de desenvolvimento de software da Netflix adotaram ao fazer a transição de um processo de desenvolvimento monolítico tradicional para entrega contínua e microsserviços, em Adotando microsserviços na Netflix: Lições para design arquitetônico e adoção de microsserviços na Netflix: Lições para design de equipes e processos .

Gleb-Smirnoff-nginx.conf2014
Desenvolvedor NGINX Gleb Smirnoff em nginx.conf2014

Nesta postagem, discutiremos outro fator essencial para o sucesso da Netflix: sua rede de distribuição de conteúdo (CDN), Open Connect . Estamos orgulhosos de que o NGINX seja executado em todos os dispositivos de entrega do Open Connect, desempenhando um papel fundamental na capacidade da Netflix de acompanhar o crescimento explosivo do serviço de vídeo. Gleb Smirnoff, da NGINX, trabalha com a equipe do Open Connect há mais de dois anos e, em outubro passado, em nossa conferência de usuários, nginx.conf2014, ele explicou por que a Netflix escolheu o NGINX (junto com o FreeBSD) para impulsionar essa parte crucial de seus negócios.

Por que a Netflix criou seu próprio CDN

A Netflix inicialmente terceirizou a entrega de streaming de vídeo para três grandes fornecedores de CDN (Akamai, Level3 e LimeLight). À medida que o serviço se tornou mais popular, a Netflix decidiu que criar e gerenciar seu próprio CDN fazia sentido, por vários motivos:

  • De uma perspectiva prática , os fornecedores de CDN estavam lutando para expandir sua infraestrutura em um ritmo que acompanhasse o crescimento da demanda dos clientes pelo streaming de vídeo da Netflix.
  • De uma perspectiva financeira , o custo da terceirização estava rapidamente se tornando proibitivo à medida que o volume de vídeo transmitido aumentava (um desafio enfrentado por muitos aplicativos e propriedades da web populares).
  • Do ponto de vista empresarial , estava claro que o streaming de vídeo estava substituindo o empréstimo de DVD como principal fonte de receita da Netflix, e não fazia sentido terceirizar uma parte essencial do principal negócio da empresa.

Mais importante ainda, a Netflix criou sua própria CDN para ter maior controle sobre a entrega de aplicativos e a experiência do usuário. Para fornecer entrega de mídia de streaming ideal aos clientes, a Netflix precisava maximizar seu controle sobre os três componentes básicos na cadeia de entrega:

  • O player de vídeo do usuário. A Netflix já controlava esse componente, porque seus desenvolvedores criam todos os aplicativos específicos para dispositivos usados pelos clientes para assistir ao conteúdo da Netflix.
  • A rede entre o usuário e os servidores da Netflix. Não há como controlar esse componente diretamente, mas a Netflix minimiza a distância da rede para seus clientes ao fornecer aparelhos de streaming de vídeo gratuitos para ISPs em troca de espaço em rack nos data centers do ISP para abrigar os aparelhos. (Os dispositivos também são colocados em pontos de troca de Internet [IXPs] para atender clientes cujos ISPs não estão interessados em hospedar equipamentos de terceiros.) O streaming de vídeo é particularmente sensível a atrasos e perdas de pacotes, chegadas desordenadas e tempos de ida e volta imprevisíveis (instáveis) inerentes ao TCP/IP, e minimizar a distância da rede reduz a exposição potencial a essas anomalias.
  • O servidor de vídeo (o próprio Open Connect). Executar seu próprio CDN dá à Netflix liberdade para ajustar o software CDN para compensar as anomalias da Internet o máximo possível. Ele pode executar algoritmos personalizados de controle de conexão TCP e módulos HTTP. Ele também pode detectar problemas de servidor e rede muito rapidamente e redirecionar clientes para servidores alternativos, depois efetuar login no hardware do servidor e solucionar problemas "de dentro".

A Netflix conseguiu otimizar o Open Connect para streaming de vídeo de uma forma que não seria possível com um CDN genérico fornecido por um fornecedor. O Open Connect permite que a Netflix ofereça uma experiência de usuário superior a um custo menor e com maior visibilidade do desempenho do aplicativo em todo o mundo.

Por que a Netflix escolheu NGINX e FreeBSD

Desde o início, o objetivo da Netflix era, como Gleb diz, “obter cada vez mais gigabits por segundo de uma única caixa”. Especificamente, a Netflix precisava maximizar o número de assinantes que cada aparelho poderia atender simultaneamente. Os engenheiros do Open Connect previram a necessidade de ajustar o software para atingir esse objetivo, então decidiram usar software de código aberto por sua extensibilidade ilimitada.

Conforme mencionado anteriormente, a Netflix coloca seus aparelhos de streaming de vídeo nos data centers dos ISPs de seus clientes, sempre que possível. Como o software executado nos aparelhos estaria nas mãos de terceiros, a Netflix escolheu projetos que usam uma licença no estilo BSD em vez da GNU Public License (GPL).

Os projetos específicos de código aberto escolhidos pela Netflix foram:

  • FreeBSD como sistema operacional, porque é conhecido por ser rápido e estável. A comunidade de desenvolvedores é forte e disposta a trabalhar com fornecedores.
  • NGINX como servidor de streaming de mídia. Sua velocidade e estabilidade comprovadas foram importantes porque a Netflix queria lançar o Open Connect o mais rápido possível, sem a necessidade de ajustes apenas para começar. Depois que o CDN foi instalado e executado, a Netflix conseguiu examinar os padrões de tráfego e ajustar as configurações do NGINX.

    Outro benefício do NGINX é que, embora o software de código aberto seja distribuído sob uma licença no estilo BSD, todos os seus principais desenvolvedores são funcionários em tempo integral da NGINX, Inc., que fornece suporte de nível empresarial para seu produto comercial, o NGINX Plus . Nesse sentido, ele combina os melhores recursos do OSS e do software comercial.

    A estrutura flexível do NGINX para executar módulos personalizados também atraiu a Netflix, e a equipe do Open Connect criou módulos específicos para suas necessidades de streaming de vídeo.

A combinação do FreeBSD e do NGINX traz outros benefícios:

  • O design orientado a eventos do NGINX é uma das chaves para seu desempenho excepcional, e a chamada de sistema de notificação de eventos kqueue do FreeBSD é uma das melhores APIs para E/S multiplexadas.
  • Sem nenhuma modificação necessária, o NGINX pode usar a chamada de sistema sendfile junto com a chamada de sistema aio_read . Juntas, as chamadas evitam bloqueios na E/S do disco, resultando em desempenho excepcional.

NGINX Plus e NGINX também podem otimizar a entrega de seus aplicativos

Desde o início, o NGINX foi projetado para ser adaptável e dar suporte a todos os aspectos da entrega de aplicativos. Para tornar aplicativos semelhantes ao Netflix mais fáceis de implementar para nossos clientes comerciais, o NGINX Plus combina serviço web, balanceamento de carga, cache de conteúdo e streaming de mídia em um pacote fácil de usar. Confira nossos estudos de caso para saber como outras empresas líderes usam o NGINX Plus para entregar seus aplicativos com desempenho, segurança e escala.

Gostamos de trabalhar em estreita colaboração com os clientes, fornecendo orientação sobre como aproveitar ao máximo o NGINX Plus em suas arquiteturas específicas de entrega de aplicativos. Nossas equipes de Suporte e Serviços Profissionais podem ajudar você com orientação arquitetônica, instalação, configuração, atualizações e muito mais. Entre em contato conosco para saber mais.

Gravação de vídeo


"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."