Um colega da faculdade me perguntou se eu tinha algum material sobre configuração de servidores. Eu retruquei perguntando sobre de qual tipo de servidor ele queria informações. A resposta singela foi “Servidor, uai… Linux… Windows… Coisa desse tipo”. Foi então que me dei conta de que os conceitos de servidor não costumam ser apresentados de forma objetiva. Então vamos lá:
Servidor? Que servidor?
Numa definição simples, servidor é um computador rodando um ou mais
softwares que disponibiliza(m) recurso(s) ou serviço(s) através de uma rede. Tendo isso em mente, pode-se perguntar: Qual serviço? Com qual protocolo? Com qual
software? Com qual sistema operacional? Em que
hardware?
Like Jack, vamos por partes:
É possível criar servidores com praticamente qualquer computador, de um antigo micro 8-bit da década de 1970 até um poderoso
cluster com múltiplas CPUs e
hardware hot-swap, passando por
smartphones,
single board computers,
notebooks, computadores
desktop, até plataformas microcontroladas como Arduino e ESP8266. Tudo depende do que se pretende oferecer, a que custo e com quais níveis de requisitos não funcionais (desempenho, confiabilidade, disponibilidade, segurança etc.).
Claro, alguns serviços simplesmente exigem algum nível mínimo de requisito que pode não ser atendido por um
hardware mais simples ou antigo como, por exemplo, não ser possível fazer um servidor
web com JavaEE rodando num microcomputador da década de 1970.
Em outros casos, há serviços que podem ser feitos por
hardware simples e dedicado (NAS, servidores de impressão, roteadores, entre outros).
É interessante observar que, dependendo do caso, nem é necessário que um servidor seja um computador dedicado. No caso de redes ponto a ponto, o computador de qualquer um conectado a rede pode prover serviços como servidor de arquivos ou de impressão.
Mas quando o serviço exige níveis mais qualificados de requisitos não funcionais, o
hardware começa a ser pensado como um equipamento ou um conjunto dedicado a esse tipo de tarefa. No ambiente profissional, com
QoS e
SLA exigentes, o
hardware para servidores costuma ter características muito específicas como ser
hot swap (poder ter partes substituídas sem precisar desligar o equipamento), ser redundante (ter múltiplos dispositivos iguais, que entram em funcionamento quando há falha no dispositivo em uso), ter sistemas de fornecimento de energia ininterrupta (
no-breaks, grupos geradores), ter ambiente e instalações controladas (temperatura, fornecimento de energia, acesso físico, equipamento contra incêndio etc.).
Sistema Operacional
O mercado profissional atual é dominado por Windows Server e Linux, mas assim como no caso de
hardware, pode-se montar servidores diversos a partir de praticamente qualquer sistema operacional, como CP/M, ProDOS, MS-DOS, FreeDOS, IBM-OS/2, BSDs, OS-X, Unixes, Android, iOS, entre muitos outros.
Uma vez determinado o sistema operacional, diversos detalhes (configurações de protocolo, aplicativos de gerenciamento, configurações de desempenho) passam a ser características muito específicas e seu domínio determina a qualificação do profissional que o administra. Vale notar que é comum que o
software servidor (o aplicativo que disponibiliza determinado serviço ou recurso) seja específico para o sistema operacional, apesar de existirem muitos aplicativos multiplataforma.
Protocolo
Apesar de IP, TCP e UDP serem quase hegemônicos, configurá-los sobre a camada física e sob os serviços e aplicações, requer conhecimento específico e aprofundado.
Os serviços também possuem protocolos próprios, em camadas acima do IP/TCP/UDP, tais como compartilhamento de arquivos (SMB, FTP, FTPS, TFTP, NFS), e-mail (pop3, imap, smtp), web (http, https), terminal remoto (SSH, telnet) etc. A maioria exige configurações que se adequam a necessidades diversas.
Serviço
Existe uma quantidade razoavelmente grande de possíveis serviços a serem oferecidos por servidores: Servidor de arquivos, de impressão, de banco de dados, de
web estática, de
web dinâmica, de e-mail, de aplicação, de jogos, de mensagem instantânea, de comunicação (
gateway, roteador,
firewall), de processamento, de controle de versionamento, entre outros.
No ambiente profissional, normalmente usa-se uma CPU ou conjunto de CPUs (
cluster) dedicados para cada serviço, com o intuito de que a disponibilidade e o desempenho se tornem maiores.
E, o que aparentemente pode parecer um único serviço, na verdade pode ser composto de diversos serviços interdependentes. Um exemplo é o servidor de
web dinâmica, tipicamente composto por servidor
web propriamente dito, servidor de aplicações, servidor de banco de dados e servidor de arquivos.
Como escolher
Sendo que existe uma quantidade muito grande de serviços e tecnologias para servidores, é necessário definir os objetivos (qual serviço) e os meios (quais tecnologias – protocolo, aplicação, sistema operacional e
hardware), para que se possa saber com o que será necessário lidar.
Para determinar serviços e tecnologias, basta responder as perguntas propostas no início deste artigo. A cada pergunta respondida, surge uma nova pesquisa para determinar quais as tecnologias disponíveis e que melhor se adequam as necessidades.
Em alguns casos, nem há pergunta. Você, com o conhecimento que já possui, o cliente, o chefe ou mesmo a tecnologia já adotada na empresa determina qual o conjunto a ser implantado ou utilizado.
Alguns exemplos (considerando apenas
software) para prover
web dinâmica com:
- Windows Server 2016 + ASP.NET + MS-SQL Server;
- Windows + Apache + JavaEE com JBoss (EJB + Hibernate) + Oracle RDBMS;
- Linux + Apache + Node.js (JavaScript) + PostgreSQL.
Na prática
Um conjunto servidor para
web dinâmica muito comum para a disponibilização de
sites é o pacote conhecido como LAMP (Linux + Apache + MySQL + PHP). O Linux como sistema operacional com o protocolo TCP/IP. O aplicativo Apache como servidor
web (usando os protocolos HTTP e HTTPS), o MySQL como servidor de banco de dados e o PHP como servidor de aplicações.
É possível instalar tudo numa máquina virtual em um computador de uso pessoal. Ou simplesmente (mas pouco aconselhável) instalar tudo no sistema operacional do próprio computador pessoal.
Dependendo das exigências de desempenho, instala-se o pacote ou mesmo cada
software num computador separado, Apache em um, PHP em outro, o MySQL em outro e até a base de dados (o arquivo controlado pelo MySQL) em um computador próprio atuando como servidor de arquivos.
Conclusão
Enfim, um servidor não é apenas um computador rodando determinado sistema operacional, mas sim, um equipamento provendo algum serviço ou recurso através de rede e, para se estudar “servidores”, primeiro precisa-se saber “servidor de quê”. Uma vez determinados serviços e tecnologias, resta se aprofundar em cada um deles… E ai o assunto se torna longo.