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

NGINX | 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 passou a atender mais de 50 milhões de assinantes em 40 países. Já compartilhamos algumas das melhores práticas adotadas pelos engenheiros de desenvolvimento de software da Netflix durante a transição de um processo de desenvolvimento monolítico tradicional para a entrega contínua e os microsserviços, em Adoção de microsserviços na Netflix: lições para o projeto de arquitetura e Adoção de microsserviços na Netflix: lições para o projeto de equipes e processos.

O desenvolvedor da NGINX, Gleb Smirnoff, na nginx.conf2014

Neste post, discutiremos outro componente essencial para o sucesso da Netflix: sua rede de distribuição de conteúdo (CDN), Open Connect. Temos orgulho de que o NGINX seja executado em todos os appliances de distribuição 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, durante nossa conferência de usuários, a nginx.conf2014, explicou por que a Netflix escolheu o NGINX (junto com o FreeBSD) para viabilizar essa parte crucial de seus negócios.

Por que a Netflix criou sua própria CDN

Inicialmente, a Netflix terceirizou a distribuição de vídeos por streaming para três grandes provedores de CDN (Akamai, Level3 e LimeLight). À medida que o serviço se tornou mais popular, a Netflix decidiu que fazia sentido criar e gerenciar sua própria CDN, por vários motivos:

  • Do ponto de vista prático, os provedores de CDN estavam tendo dificuldades para expandir sua infraestrutura em um ritmo compatível com o crescimento da demanda dos clientes pelo streaming de vídeo da Netflix.
  • Do ponto de vista financeiro, o custo da terceirização estava rapidamente se tornando proibitivo à medida que o volume de vídeos transmitidos aumentava (um desafio enfrentado por muitos aplicativos e sites populares).
  • Do ponto de vista comercial, estava claro que o streaming de vídeo estava substituindo o aluguel de DVDs como principal fonte de receita da Netflix, e não fazia sentido terceirizar uma parte essencial da atividade principal da empresa.

Mais importante ainda, a Netflix criou sua própria CDN para ter maior controle sobre a entrega de aplicações e a experiência do usuário. Para oferecer aos clientes uma entrega otimizada de mídia por streaming, a Netflix precisava maximizar seu controle sobre os três componentes básicos da cadeia de entrega:

  • O player de vídeo do usuário. A Netflix já controlava esse componente, pois seus desenvolvedores criam todos os aplicativos específicos para cada dispositivo 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 de rede até seus clientes fornecendo gratuitamente dispositivos de streaming de vídeo aos provedores de serviços de Internet (ISPs), em troca de espaço em rack nos data centers dos provedores para acomodá-los. (Esses dispositivos também são instalados em pontos de troca de tráfego da Internet [IXPs] para atender clientes cujos provedores não têm interesse em hospedar equipamentos de terceiros.) O streaming de vídeo é particularmente sensível a atrasos e perdas de pacotes, à chegada de pacotes fora de ordem e aos tempos de ida e volta imprevisíveis (com jitter) inerentes ao TCP/IP. Minimizar a distância de rede reduz a possível exposição a essas anomalias.
  • O servidor de vídeo (o próprio Open Connect). Operar sua própria CDN dá à Netflix a liberdade de ajustar o software da CDN para compensar, tanto quanto possível, as anomalias da Internet. Ela pode executar algoritmos personalizados de controle de conexão TCP e módulos HTTP. Também pode detectar problemas no servidor e na rede com muita rapidez, redirecionar os clientes para servidores alternativos e, em seguida, acessar o hardware do servidor e solucionar os problemas “por dentro”.

A Netflix conseguiu otimizar o Open Connect para streaming de vídeo de uma forma que não seria possível com uma CDN genérica fornecida por terceiros. O Open Connect permite que a Netflix ofereça uma experiência superior aos usuários por um custo menor e com maior visibilidade sobre o desempenho da aplicação em todo o mundo.

Por que a Netflix escolheu o NGINX e o FreeBSD

Desde o início, o objetivo da Netflix era, nas palavras de Gleb, “obter cada vez mais gigabits por segundo de uma única máquina”. Mais especificamente, a Netflix precisava maximizar o número de assinantes que cada appliance poderia atender simultaneamente. Os engenheiros do Open Connect previram que seria necessário fazer ajustes finos no software para atingir esse objetivo e, por isso, optaram por software de código aberto devido às suas possibilidades ilimitadas de extensão.

Como mencionado anteriormente, sempre que possível, a Netflix instala seus equipamentos de streaming de vídeo nos data centers dos provedores de internet de seus clientes. Como o software executado nesses equipamentos ficaria nas mãos de terceiros, a Netflix optou por projetos que usam uma licença no estilo BSD, em vez da Licença Pública Geral GNU (GPL).

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

  • FreeBSD como sistema operacional, por ser conhecido por sua rapidez e estabilidade. A comunidade de desenvolvedores é sólida e está 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 precisar fazer ajustes apenas para colocá-lo em funcionamento. Depois que a CDN entrou em operação, a Netflix pôde analisar os padrões de tráfego e refinar 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 oferece suporte de nível empresarial para seu produto comercial, o NGINX Plus. Nesse sentido, ele combina os melhores recursos do software de código aberto 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 com o NGINX oferece ainda mais benefícios:

  • O design orientado a eventos do NGINX é um dos segredos de seu excelente desempenho, e a chamada de sistema de notificação de eventos kqueue do FreeBSD é uma das melhores APIs para E/S multiplexada.
  • Sem exigir nenhuma modificação, o NGINX pode usar a chamada de sistema sendfile em conjunto com a chamada de sistema aio_read. Juntas, essas chamadas evitam bloqueios nas operações de E/S de disco, proporcionando um desempenho excepcional.

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

Desde sua criação, o NGINX foi projetado para ser adaptável e oferecer suporte a todos os aspectos da entrega de aplicações. Para facilitar a implantação de aplicações semelhantes à Netflix por nossos clientes comerciais, o NGINX Plus combina servidor web, balanceamento de carga, cache de conteúdo e streaming de mídia em um único pacote fácil de usar. Confira nossos estudos de caso para saber como outras empresas líderes usam o NGINX Plus para entregar suas aplicações com desempenho, segurança e escalabilidade.

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

Gravação do vídeo

Compartilhar
Tags: F5 NGINX, Tech

Publicações relacionadas no blog

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade
NGINX | 10/10/2024

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade

Descubra como o F5 NGINX One aprimora o gerenciamento e a observabilidade de ambientes híbridos e multicloud ao oferecer um console web centralizado baseado em SaaS, com insights em tempo real, conformidade automatizada e gerenciamento simplificado de configurações.

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa
NGINX | 17/06/2024

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa

Descubra como transformar uma definição de esquema OpenAPI em uma configuração NGINX totalmente funcional, operando como um API Gateway com a segurança de um Web Application Firewall e um Portal do Desenvolvedor, usando uma abordagem declarativa de API.

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor
NGINX | 14/07/2021

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor

Picos de tráfego e sobrecarga de servidores são preocupações sérias para varejistas online em qualquer época, mas especialmente durante a “Cyber Season” de compras de fim de ano. Detalhamos como você pode aproveitar as soluções de entrega de aplicações de nível de produção da NGINX para se preparar para aumentos repentinos de tráfego.

Distribuição segura de chaves privadas SSL com o NGINX
NGINX | 02/04/2019

Distribuição segura de chaves privadas SSL com o NGINX

Descrevemos três maneiras progressivamente mais seguras de proteger chaves privadas SSL ao configurar o NGINX para processar tráfego HTTPS: permitir acesso de leitura apenas ao usuário root, criptografar as chaves com senhas armazenadas separadamente e distribuir as senhas a partir de um repositório central.

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX
NGINX | 24/05/2018

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX

O módulo JavaScript do NGINX lançado com o NGINX Plus R15 oferece suporte a subsolicitações, possibilitando uma classe totalmente nova de casos de uso para o NGINX Plus. Este exemplo completo também usa a API do NGINX Plus e os módulos de chave-valor para converter solicitações de API dos clientes em solicitações separadas para as APIs dos microsserviços que compõem um aplicativo.

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus
NGINX | 19/04/2016

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus

Confira dicas para evitar o esgotamento de portas efêmeras com ajustes no kernel do Linux, conexões keepalive e conexões vinculadas dinamicamente a endereços IP locais.