Como é de verdade um computador de servidor?
Quando comecei a aprender desenvolvimento, eu tinha uma fantasia meio vaga sobre o ‘servidor’. Imaginava um supercomputador gigantesco como em Matrix, com letras verdes caindo como chuva, incontáveis cabos embolados por toda parte e máquinas enormes soltando luz azul com um barulho mecânico imponente.
Mas a primeira sala de servidores que vi na prática, um IDC, não parecia em nada com essa imagem. Aquelas máquinas achatadas encaixadas em racks, quando abertas, no fim das contas ainda eram apenas ‘computadores comuns’: tinham CPU, RAM e SSD, nada tão diferente assim do meu notebook.
Então o que exatamente faz o meu notebook ser chamado de ‘PC pessoal’ e aquela máquina bruta ser chamada de ‘servidor’?

Quem entrega (Server) vs. quem pede (Client)
A definição de servidor é muito simples. É aquele que ‘serve’, que fornece algo. Do outro lado, o cliente é quem faz a requisição.
Em outras palavras, até o meu notebook velho vira um ‘servidor’ no momento em que eu o deixo ligado 24 horas por dia e permito conexões externas. Mas então por que não usamos o meu notebook como servidor? Por que pagamos caro para alugar servidores em nuvem como AWS EC2 e instalar neles esse ‘Linux’ que parece mais difícil de usar?
Por que justamente Linux? (Windows não serve?)
Windows é realmente conveniente. Basta clicar com o mouse e tudo parece intuitivo. Então por que os desenvolvedores de servidor insistem tanto em Linux, que parece não passar de uma tela preta?
1. GUI é luxo (custo e eficiência)
Quando o Windows inicializa, aparece a área de trabalho, os ícones e o cursor do mouse se mexe. Para manter toda essa interface gráfica funcionando, o computador gasta CPU e memória o tempo todo. Mas um servidor não precisa de monitor. Ele pode ficar jogado em algum canto do outro lado do planeta e fazer só uma coisa: processar dados. Um servidor Linux em CLI remove os gráficos e deixa só texto. Se o Windows usa 30 de cada 100 unidades de força para desenhar a tela, o Linux pode jogar esses 100 inteiros no serviço em si.
2. Liberdade das atualizações forçadas (estabilidade)
Se você usa Windows por tempo suficiente, uma hora aparece o famoso “Reiniciando para instalar atualizações”. Num PC pessoal isso é só incômodo: você levanta um pouco e depois volta. Mas e se um servidor que precisa ficar no ar 24/7 resolve desligar sozinho? Isso é um desastre. O Linux consegue muitas vezes rodar por anos sem reboot, a menos que aconteça algo grande, como uma atualização de kernel.
3. Custo de licença (dinheiro)
Windows Server é caro. Às vezes o valor depende até do número de núcleos de CPU. Já o Linux, como Ubuntu ou CentOS, costuma ser gratuito e open source. Para uma empresa que precisa operar milhares de servidores, a resposta fica bem clara.

E se instalarmos Linux em cima do Windows? (O início da virtualização)
Nesse ponto, um developer iniciante, ou seja, a minha versão do passado, tem uma ideia brilhante. “Se Windows é mais confortável, por que não instalar Windows Server e rodar Linux dentro dele como uma ‘Virtual Machine’?”
Claro que dá. Mas isso é como montar uma barraca dentro de uma casa e morar nela.
O dono da casa, Windows, também precisa comer, e o inquilino, Linux, também. O desperdício de recursos é enorme. Foi por isso que os desenvolvedores começaram a fazer uma pergunta melhor: “Em vez de instalar um sistema operacional pesado inteiro, não dá para isolar e executar só o ‘ambiente’ de que realmente precisamos?”
Foi exatamente dessa linha de pensamento que nasceu o Docker, ou seja, a tecnologia de contêineres.
Próxima história: um mundo sem mouse
Agora entendemos por que os servidores abandonaram o Windows e escolheram o Linux. Mas entender algo com a cabeça e colocar a mão na massa são coisas diferentes. Na primeira vez em que você se conecta a um servidor Linux, o que o recebe não é o simpático botão Iniciar do Windows, mas apenas um cursor piscando numa tela preta.
Na próxima, vamos ver as habilidades básicas de sobrevivência para lidar com permissões de arquivos e controlar um servidor nesse ambiente desconhecido de terminal Linux, o CLI, sem usar mouse.