Avançar para o conteúdo principal
BlogueVisões gerais da nuvemFundamentos do servidor Web

Fundamentos do servidor Web

Visão geral das fundações do servidor Web

Este post faz parte da nossa série Fundamentos da computação em nuvem. Desenvolva suas habilidades ainda mais fazendo nosso curso de certificação Introdução à computação em nuvem.

Talvez já esteja familiarizado com este conceito. Lembra-se do modelo cliente/servidor? Os servidores Web são apenas um componente deste modelo - o servidor. 

A um nível básico, um servidor Web armazena e fornece sítios Web e aplicações Web. Os servidores Web são compostos por hardware e software que trabalham em conjunto para facilitar a troca de dados. 

O componente de hardware de um servidor Web refere-se ao computador físico ou virtual que armazena os ficheiros e componentes do sítio Web. Isto inclui tudo, desde documentos HTML estáticos, ficheiros de texto, imagens e vídeos até scripts dinâmicos mais complexos. Por exemplo, se visitar um sítio Web com um vídeo na sua página inicial, esse vídeo é armazenado no hardware do servidor Web.

O componente de software de um servidor Web é responsável por controlar a forma como os utilizadores podem aceder aos ficheiros armazenados no servidor. Para tal, gere os pedidos provenientes dos navegadores Web e de outros dispositivos ligados à Internet. O software instalado no servidor Web permite-lhe visualizar sítios Web no seu navegador Web.

Vamos começar por analisar os componentes que fazem funcionar os servidores Web.

Protocolo de Transferência de Hipertexto (HTTP)

O HTTP permite que os servidores Web forneçam sítios Web e aplicações Web aos utilizadores, para que estes possam aceder e visualizar conteúdos na Internet.

Quando utiliza um navegador Web para aceder a um sítio Web, o navegador envia um pedido ao servidor Web que aloja esse sítio. Este pedido tem a forma de uma mensagem HTTP. O servidor Web recebe e processa o pedido, recuperando o recurso solicitado a partir dos seus componentes de hardware e software.

À direita na imagem acima, podemos ver que o servidor Web envia uma mensagem para um navegador Web utilizando HTTP. Para pedir um sítio Web, basta escrever o seu URL na barra de endereços do browser. O navegador mapeia então este URL para um endereço IP, que representa a localização física do servidor onde o sítio Web está armazenado. Se o servidor for encontrado neste endereço IP, o software do servidor Web recebe o pedido e envia o sítio Web que pedimos. Assim, se escrevermos "www.example.com" no browser, o servidor Web devolverá o sítio Web para "www.example.com".

Auto-hospedagem vs. Fornecedor de alojamento

Quando se trata de alojar a sua aplicação Web, pode escolher entre utilizar um fornecedor de alojamento ou configurar o seu próprio servidor no seu computador pessoal. Muitas vezes, os indivíduos alojam-se a si próprios, mas para as organizações que fornecem serviços essenciais, um fornecedor de alojamento oferece muito mais proteção.

Com um fornecedor de alojamento, pode tirar partido de servidores e redes de alta velocidade. Um fornecedor de alojamento também tem a capacidade de lidar de forma fiável com a flutuação do consumo de energia e proteger contra potenciais falhas. Mas a principal razão pela qual utilizamos fornecedores de alojamento para serviços essenciais é para garantir que as informações privadas não são divulgadas ao domínio público. 

Software de servidor Web

O software do servidor Web é o coração de qualquer sítio Web ou aplicação Web. Permite-nos servir conteúdos Web aos utilizadores através da Internet. Quando estamos a criar um sítio Web e a configurar os nossos servidores, precisamos de software para o fazer funcionar.

Em termos de software, duas soluções dominam o mercado: Apache e NGINX. Vamos falar sobre essas duas aqui, mas vale a pena notar que existem outras opções, incluindo IIS e Lighttpd, cada uma com benefícios e desafios únicos.

Apache

Apache é um software de servidor Web amplamente utilizado, ideal para alojar conteúdos dinâmicos, como sites de comércio eletrónico ou fóruns. Pode ser executado em várias plataformas, incluindo Windows, macOS e Linux. Existe desde 1995 e é um dos servidores Web mais antigos e mais utilizados. 

Apache é capaz de lidar com uma variedade de protocolos web, incluindo HTTP, HTTPS e FTP, e pode ser executado em muitos sistemas operativos diferentes, incluindo Windows, Linux e macOS. É altamente personalizável, com vários módulos que podem adicionar funcionalidades adicionais, como suporte para conteúdo dinâmico, autenticação e cache. Foi especificamente criado para processar conteúdos dinâmicos dentro do próprio servidor, independentemente de quaisquer componentes do servidor. 

Apache tem um modelo de uma ligação por processo. Um modelo de uma ligação por processo é uma abordagem tradicional à construção de servidores Web em que cada ligaçã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 Apache utiliza este modelo, o desempenho do servidor é significativamente degradado quando o número de pedidos de ligação simultâneos ultrapassa o número de processos.

Uma das principais características do Apache é a sua capacidade de suportar vários anfitriões virtuais num único servidor, permitindo que os sítios Web partilhem recursos, mantendo as suas configurações exclusivas. O Apache é também altamente extensível, com uma grande comunidade de programadores a criar e manter módulos e plugins adicionais para alargar a sua funcionalidade.

NGINX

Por outro lado, NGINX (pronuncia-se Engine X) está optimizado para servir conteúdos estáticos, como imagens e vídeos, e é popular pela sua capacidade de lidar com um grande número de ligações simultâneas de clientes. NGINX é altamente valorizado pela sua capacidade de melhorar a entrega de conteúdos na Web. 

NGINX foi construído utilizando um modelo assíncrono e orientado para eventos. Vamos rever estes conceitos por um momento. 

Utilizamos modelos assíncronos quando um sistema precisa de tratar muitos pedidos simultâneos, como é o caso dos servidores Web, da comunicação em rede e da gestão de bases de dados. Ao utilizar um modelo de programação assíncrona, estes sistemas podem alcançar um melhor desempenho e escalabilidade e reduzir o risco de bloqueio e congelamento.

Um modelo orientado para os eventos é conduzido por eventos no sistema em vez de seguir uma sequência pré-determinada de passos.

Assim, ter um modelo assíncrono e orientado para os eventos permite que um sistema trate várias tarefas e eventos em conjunto sem bloquear o processamento de outras tarefas.

Devido à sua arquitetura, o NGINX não pode processar conteúdos dinâmicos, como o PHP. Tem de o passar para um processador externo para execução. Por este motivo, NGINX é mais adequado para conteúdo estático, proxy reverso, balanceamento de carga, proxy de correio eletrónico e cache HTTP. NGINX também é recomendado para sistemas Linux.

Utilizar NGINX e Apache em conjunto

NGINX e Apache são frequentemente utilizados em conjunto. Ao fazê-lo, podemos tirar partido dos pontos fortes de cada servidor e ultrapassar as suas limitações.

Um dos métodos mais comuns de integração de Apache e NGINX é colocar NGINX à frente de Apache para tratar de todos os pedidos HTTP de entrada, como se vê na imagem acima. Esta configuração implica direcionar todos os pedidos HTTP de entrada para NGINX, que depois retransmite os pedidos de conteúdos dinâmicos para Apache enquanto serve os pedidos de conteúdos estáticos por si só.

Ao colocar NGINX na frente de Apache, aproveitamos a capacidade de NGINXde lidar com grandes volumes de pedidos de conexão simultâneos com seu modelo assíncrono e orientado a eventos. Isso ajuda a aliviar um pouco a tensão em Apache , reduzindo o número de threads e processos abertos necessários para lidar com solicitações, o que pode degradar o desempenho de Apache.

A configuração do proxy reverso também oferece benefícios adicionais, como balanceamento de carga e segurança aprimorada. 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 uma barreira entre a Internet e o servidor Web, proporcionando uma camada extra de proteção contra ataques.

Desenvolva as competências necessárias para ter sucesso na computação em nuvem com o nosso curso de certificação Introdução à computação em nuvem.


Comentários

Deixe uma resposta

O seu endereço de correio electrónico não será publicado. Os campos obrigatórios estão marcados com *