A velocidade é fundamental para sites. Algo tão simples como o tempo que uma página leva para carregar afeta as taxas de retenção de visitantes e atua como um indicador da qualidade do site. Um ingrediente chave na velocidade do site é o cache, e os servidores proxy e proxies reversos que os sites usam para atender às necessidades de cache. Neste artigo, discutiremos as semelhanças e diferenças entre dois servidores proxy populares, Varnish e Nginx, e esperamos fornecer algumas informações sobre qual deles pode ser mais útil para as necessidades do seu site.
Varnish
Lançado pela primeira vez em 2006, o Varnish imediatamente se diferenciou dos concorrentes ao focar principalmente na aceleração HTTP. Essa é a aceleração da velocidade de acesso à página da web especificamente através de conexões HTTP. Esse foco preciso atraiu grandes empresas como Pinterest e Twitch, incorporando a aceleração HTTP do Varnish em suas pilhas de servidores. É importante observar que, atualmente, o Varnish não pode executar uma aplicação inteira por conta própria, já que é um acelerador e não um servidor web completo. Você ainda precisa executar um pacote de servidor web separado, mas o Varnish pode complementar isso acelerando a velocidade de conexão HTTP do servidor.
Nginx
Alguns anos mais velho que o Varnish, o Nginx é um servidor web de código aberto que surgiu no mercado em 2002. Construído como uma tentativa de resolver problemas arquitetônicos de concorrência, o Nginx se tornou uma solução popular para muitos dos sites com maior tráfego do mundo, incluindo Netflix, X (antigo Twitter) e Facebook. O foco do Nginx na resolução de concorrência levou ao desenvolvimento de um algoritmo assíncrono que constantemente processa e monitora eventos em todo o sistema. Isso pode soar um pouco técnico, mas o importante é que esse processo permite que o Nginx atenda a várias conexões através do mesmo processador de trabalho, em vez de ter que criar um novo thread para cada nova requisição.
Semelhanças:
Varnish e Nginx têm muita sobreposição, e há várias coisas com as quais ambos os pacotes de software podem lidar muito bem. Tanto o Varnish quanto o Nginx podem ser configurados para servir como proxies reversos e balanceadores de carga, regulando e equilibrando o tráfego de entrada do servidor. Ambos fornecem capacidades de cache e cada um contém suas próprias medidas de segurança integradas, incluindo ferramentas de proteção contra DDOS. Varnish e Nginx têm opções de suporte comercial para empresas dispostas a pagar por suporte e recursos avançados (Varnish Enterprise e Nginx Plus, respectivamente). Quando você vai além das semelhanças, muitas das diferenças de funcionalidade, embora interessantes de explorar, não indicam a qualidade de um serviço sobre o outro. Por exemplo, o Nginx suporta e depende muito da terminação SSL. O Varnish padrão não tem essa capacidade, em vez disso, lê solicitações ESI, que o Nginx não pode interpretar sem um plugin. Você pode discutir qual configuração é melhor, mas esse tipo de diferenciação realmente se resume à preferência do programador. Isso não significa, no entanto, que este seja um cenário de todos-os-produtos-são-iguais. Varnish e Nginx têm algumas diferenças mais pronunciadas que vamos explorar… agora.
Por que Varnish?
O Varnish é um serviço muito otimizado, e esse design elegante oferece um alto nível de flexibilidade. Uma vantagem dessa maior flexibilidade são as opções para permitir uma configuração de servidor mais distribuída. Uma maior distribuição simplifica a manutenção do servidor e o monitoramento de performance, permitindo que os administradores reescrevam URLs e ajustem políticas de cache instantaneamente. O Nginx segue uma configuração mais centralizada, o que significa que pode ser um pouco mais rígido e inflexível diante de mudanças administrativas rápidas.
Outra vantagem ao escolher o Varnish é seu recurso de Grace Mode (Modo de Tolerância). Para evitar que os locais de cache locais fiquem sobrecarregados com dados antigos, todos os dados armazenados em cache têm um tempo de expiração TTL (Time To Live). Uma vez que atinge esse ponto, os dados são eliminados para liberar espaço e não podem mais ser acessados localmente. A menos que você tenha o Varnish. O Grace Mode do Varnish supera essa barreira TTL, permitindo que você acesse dados armazenados em cache que já expiraram no sistema. Isso é particularmente útil durante a manutenção ou durante uma falha inesperada do sistema, quando um conteúdo específico expirado pode não ter um canal para ser recacheado. Além de todos os recursos interessantes, o maior ponto de venda do Varnish é seu foco singular como acelerador web. O Varnish se concentra em uma coisa e faz isso muito bem, oferecendo um nível realmente impressionante de flexibilidade de cache e purga.
Por que Nginx?
Embora o Nginx nem sempre possa acompanhar a flexibilidade do Varnish, ele compensa isso em velocidade. A configuração centralizada que ele segue permite atender a todas as solicitações a partir de um único diretório, reduzindo drasticamente os atrasos de resposta do sistema. Essa alta velocidade torna o Nginx extremamente resiliente diante de situações de alto tráfego. Os servidores que lidam com solicitações inesperadas não podem se dar ao luxo de ter o menor atraso no tempo de resposta. O Nginx oferece estabilidade durante esses momentos críticos, graças não apenas às suas buscas em diretório único, mas também ao seu software de balanceamento de carga de última geração.
Atualmente, espera-se que qualquer serviço de cache moderno forneça suas próprias soluções de balanceamento de carga, mas o balanceamento de carga do Nginx vai além, suportando conexões HTTPS de camada 7, oferecendo distribuição geográfica de tráfego e geralmente fornecendo uma amplitude de capacidades verdadeiramente impressionante para um pacote desse tipo. Comparado ao Varnish, o Nginx tem uma infraestrutura muito mais complexa. Isso pode torná-lo mais difícil de configurar, mas lhe dá uma maior capacidade de lidar com tarefas complexas, como monitoramento de node de backend. O Nginx é particularmente eficiente no tratamento de material estático. Sua abordagem de thread único permite que ele use menos memória para cache estático, aumentando os tempos de resposta e recuperação.
Resumo
Em última análise, Nginx e Varnish são ótimos softwares, os melhores da categoria. Você pode usar qualquer um (ou ambos) com grande eficácia. O que você deve escolher depende das necessidades específicas da sua plataforma digital. Se você está procurando flexibilidade administrativa amigável através de uma configuração distribuída, você provavelmente deve verificar o Varnish. Se suas prioridades se inclinam mais para o poder da velocidade bruta e estabilidade, então o Nginx pode ser mais adequado para você. E se você está procurando uma abordagem moderna que traz todo o poder do edge global, a Azion pode ser exatamente o que você está procurando. Independentemente do que você escolher, lembre-se de dedicar um tempo do seu dia e dar algum amor aos servidores proxy em sua vida: eles trabalham duro, e seu site não pode funcionar sem eles.