Esta postagem faz parte de nossa série Cloud Computing Foundations. Desenvolva ainda mais suas habilidades fazendo nosso curso de certificação Introduction to Cloud Computing .
Talvez você já esteja familiarizado com esse conceito. Lembra-se do modelo cliente/servidor? Os servidores Web são apenas um componente desse modelo: o servidor.
Em um nível básico, um servidor da Web armazena e fornece sites e aplicativos da Web. Os servidores da Web são compostos de hardware e software que trabalham juntos para facilitar a troca de dados.
O componente de hardware de um servidor da Web refere-se ao computador físico ou virtual que armazena os arquivos e componentes do site. Isso inclui tudo, desde documentos HTML estáticos, arquivos de texto, imagens e vídeos até scripts dinâmicos mais complexos. Por exemplo, se você visitar um site com um vídeo em sua página inicial, esse vídeo será armazenado no hardware do servidor da Web.
O componente de software de um servidor da Web é responsável por controlar como os usuários podem acessar os arquivos armazenados no servidor. Ele faz isso gerenciando as solicitações que chegam dos navegadores da Web e de outros dispositivos conectados à Internet. O software instalado no servidor da Web permite que você visualize sites em seu navegador da Web.
Vamos começar examinando os componentes que fazem os servidores da Web funcionarem.
Protocolo de transferência de hipertexto (HTTP)
O HTTP permite que os servidores da Web forneçam sites e aplicativos da Web aos usuários, para que eles possam acessar e visualizar o conteúdo na Internet.
Quando você usa um navegador da Web para acessar um site, ele envia uma solicitação ao servidor da Web que hospeda o site. Essa solicitação está na forma de uma mensagem HTTP. O servidor da Web recebe e processa a solicitação, recuperando o recurso solicitado de seus componentes de hardware e software.
À direita na imagem acima, podemos ver que o servidor da Web envia uma mensagem para um navegador da Web usando HTTP. Para solicitar um site, basta digitar seu URL na barra de endereços do navegador. Em seguida, o navegador mapeia esse URL para um endereço IP, que representa o local físico do servidor onde o site está armazenado. Se o servidor for encontrado nesse endereço IP, o software do servidor da Web receberá a solicitação e enviará de volta o site que solicitamos. Portanto, se digitarmos "www.example.com" no navegador, o servidor da Web retornará o site para "www.example.com".
Auto-hospedagem vs. provedor de hospedagem
Quando se trata de hospedar seu aplicativo da Web, você tem a opção de usar um provedor de hospedagem ou configurar seu próprio servidor em seu computador doméstico. As pessoas costumam se auto-hospedar, mas para as organizações que fornecem serviços essenciais, um provedor de hospedagem oferece muito mais proteção.
Com um provedor de hospedagem, você pode aproveitar os benefícios de servidores e redes de alta velocidade. Um provedor de hospedagem também tem a capacidade de lidar de forma confiável com o consumo flutuante de energia e proteger contra possíveis falhas. Mas o principal motivo pelo qual usamos provedores de hospedagem para serviços essenciais é garantir que informações privadas não vazem para o domínio público.
Software de servidor da Web
O software de servidor da Web é o coração de qualquer site ou aplicativo da Web. Ele nos permite fornecer conteúdo da Web aos usuários pela Internet. Quando estamos montando um site e configurando nossos servidores, precisamos de um software para fazê-lo funcionar.
Em termos de software, duas soluções dominam o mercado: Apache e NGINX. Analisaremos essas duas aqui, mas vale a pena observar que há outras opções, incluindo IIS e Lighttpd, cada uma com benefícios e desafios exclusivos.
Apache
Apache é um software de servidor da Web amplamente utilizado, ideal para hospedar conteúdo dinâmico, como sites de comércio eletrônico ou fóruns. Ele pode ser executado em várias plataformas, incluindo Windows, macOS e Linux. Ele existe desde 1995 e é um dos servidores da Web mais antigos e mais amplamente utilizados disponíveis.
Apache é capaz de lidar com uma variedade de protocolos da Web, incluindo HTTP, HTTPS e FTP, e pode ser executado em muitos sistemas operacionais diferentes, incluindo Windows, Linux e macOS. É altamente personalizável, com vários módulos que podem acrescentar funcionalidades adicionais, como suporte a conteúdo dinâmico, autenticação e armazenamento em cache. Ele foi criado especificamente para processar conteúdo dinâmico dentro do próprio servidor, independentemente de qualquer componente do servidor.
Apache tem um modelo de uma conexão por processo. Um modelo de uma conexão por processo é uma abordagem tradicional para a criação de servidores da Web em que cada conexão de cliente é tratada por um processo ou thread separado. Esse processo, ou thread, é responsável por gerenciar a conexão do cliente e processar suas solicitações até que a conexão seja fechada. Como o site Apache usa esse modelo, o desempenho do servidor é significativamente prejudicado quando o número de solicitações de conexão simultâneas ultrapassa o número de processos.
Um dos principais recursos do Apache é sua capacidade de oferecer suporte a vários hosts virtuais em um único servidor, permitindo que os sites compartilhem recursos e mantenham suas configurações exclusivas. O Apache também é altamente extensível, com uma grande comunidade de desenvolvedores criando e mantendo módulos e plug-ins adicionais para ampliar sua funcionalidade.
NGINX
Por outro lado, NGINX (pronuncia-se Engine X) é otimizado para servir conteúdo estático, como imagens e vídeos, e é popular por sua capacidade de lidar com um grande número de conexões simultâneas de clientes. NGINX é altamente valorizado por sua capacidade de melhorar o fornecimento de conteúdo pela Web.
NGINX foi criado usando um modelo assíncrono e orientado por eventos. Vamos revisar esses conceitos por um momento.
Usamos modelos assíncronos quando um sistema precisa lidar com muitas solicitações simultâneas, como em servidores da Web, comunicação de rede e gerenciamento de banco de dados. Ao usar um modelo de programação assíncrona, esses sistemas podem obter melhor desempenho e escalabilidade e reduzir o risco de bloqueio e congelamento.
Um modelo orientado por eventos é conduzido por eventos no sistema em vez de seguir uma sequência predeterminada de etapas.
Portanto, ter um modelo assíncrono e orientado por eventos permite que um sistema lide com várias tarefas e eventos juntos sem bloquear o processamento de outras tarefas.
Devido à sua arquitetura, o site NGINX não pode processar conteúdo dinâmico, como o PHP. Ele deve repassá-lo a um processador externo para execução. Por esse motivo, o NGINX é mais adequado para conteúdo estático, proxy reverso, balanceamento de carga, proxy de e-mail e cache HTTP. O NGINX também é recomendado para sistemas Linux.
Usando NGINX e Apache juntos
NGINX e Apache são frequentemente usados em conjunto. Dessa forma, podemos aproveitar os pontos fortes de cada servidor e, ao mesmo tempo, superar suas limitações.
Um dos métodos mais comuns de integração de Apache e NGINX é colocar NGINX na frente de Apache para tratar todas as solicitações HTTP recebidas, como visto na imagem acima. Essa configuração envolve o direcionamento de todas as solicitações HTTP de entrada para NGINX, que, em seguida, retransmite as solicitações de conteúdo dinâmico para Apache enquanto atende às solicitações de conteúdo estático por si só.
Ao colocar o NGINX na frente do Apache, aproveitamos a capacidade do NGINXde lidar com grandes volumes de solicitações de conexão simultâneas com seu modelo assíncrono e orientado por eventos. Isso ajuda a aliviar parte da pressão sobre o Apache , reduzindo o número de threads e processos abertos necessários para atender às solicitações, o que, de outra forma, poderia prejudicar o desempenho do Apache.
A configuração do proxy reverso também oferece benefícios adicionais, como balanceamento de carga e segurança aprimorada. O NGINX pode distribuir solicitações entre vários servidores Apache , equilibrando a carga e evitando que um único servidor fique sobrecarregado. Além disso, o NGINX pode atuar como um buffer entre a Internet e o servidor da Web, fornecendo uma camada extra de proteção contra ataques.
Desenvolva as habilidades para ter sucesso na computação em nuvem fazendo nosso curso de certificação Introduction to Cloud Computing .
Comentários (1)
Crystal clear blog, loved the explanation!