3 pontos por GN⁺ 2026-02-24 | 1 comentários | Compartilhar no WhatsApp
  • Um texto que acompanha a história da implantação de servidores e dos problemas de isolamento de processos, destacando como os FreeBSD jails implementaram o conceito moderno de contêineres 10 anos antes da indústria
  • Introduzidos no FreeBSD 4.0 em 2000, os jails expandiram o chroot para oferecer isolamento completo de sistema de arquivos, rede e processos como recurso nativo do kernel
  • O Linux chegou aos contêineres com o LXC em 2008 e o Docker em 2013, mas nesse processo acumulou camadas complexas de abstração como namespaces, cgroups e OCI
  • O que o Docker resolveu muito bem foi o problema de empacotamento e distribuição (shipping) de aplicações; os jails são excelentes em isolamento, mas têm como fraqueza a ausência de um padrão nativo de distribuição
  • A continuação abordará formas práticas de operação, como infraestrutura baseada em jails, snapshots com ZFS e provisionamento com Ansible

O problema da implantação inicial de servidores

  • Há algumas décadas, o método padrão para colocar algo em um servidor era copiar arquivos manualmente via FTP com ferramentas como Total Commander, FileZilla e FAR Manager; usuários mais avançados usavam scp ou rsync, mas a essência era a mesma
  • Em projetos tocados por uma só pessoa, erros não eram um grande problema, mas ao gerenciar dezenas de projetos de clientes, isso se tornava crítico
  • Em uma configuração típica de backend, vários sites compartilhavam a mesma instância do servidor web Apache e, portanto, o mesmo ciclo de vida; se o Apache caísse, todos caíam
  • Quando havia um pico de tráfego, um site podia consumir todos os recursos e fazer com que outros sites no mesmo servidor sufocassem silenciosamente
  • Administradores de sistemas tentavam automatizar com scripts de shell, mas não existia um método padronizado para controle de versão ou rollback, e era comum usar nomes de pastas de projeto com números incrementais ou timestamps

Dois problemas centrais que precisavam ser resolvidos

  • Implantação (Deployment): era necessário um método universal que garantisse entrega confiável, evitasse erro humano, implementasse versionamento e rollback e cobrisse todos os casos de negócio
  • Isolamento de processos (Process Isolation): era necessário proteger mutuamente aplicações e sistema, evitar que as exigências de uma aplicação quebrassem outra sem aviso e resolver conflitos de dependência
  • As tentativas de resolver o problema de implantação evoluíram para os modernos pipelines de CI/CD, padrões de empacotamento e sistemas de controle de versão, mas a história do problema de isolamento é relativamente menos conhecida

Do chroot às máquinas virtuais

  • O chroot, introduzido pelo Bell UNIX em 1979, fornecia a um processo uma visão isolada do sistema de arquivos, impedindo acesso fora de uma subárvore — uma ideia primitiva, mas útil
    • Limitação: isolava apenas o sistema de arquivos; ainda era possível interferir na rede, em outros processos e nos recursos do sistema, além de também ser possível escapar
  • A primeira resposta realmente corporativa foi a máquina virtual (VM), popularizada pela VMware no fim dos anos 1990
    • Ela fornecia a cada aplicação um ambiente de sistema operacional totalmente isolado, mas como cada VM incluía um SO completo, havia o custo de sobrecarga significativa e tempos de inicialização medidos em minutos

O nascimento dos FreeBSD Jails

  • Em 2000, uma revolução silenciosa aconteceu não no Windows Server nem no Linux, mas no FreeBSD
  • O FreeBSD opera de forma fundamentalmente diferente do Linux: enquanto o Linux fornece apenas o kernel e combina userland GNU, ecossistema de pacotes e escolhas por distribuição, o FreeBSD desenvolve, versiona e testa kernel, userland, ferramentas básicas e bibliotecas como um único sistema operacional completo
  • A solução construída sobre essa base consistente foi o jail, anunciado por Poul-Henning Kamp e Robert Watson e incorporado ao FreeBSD 4.0 (março de 2000) como recurso nativo do kernel
  • Cada jail possui sua própria visão de sistema de arquivos, pilha de rede e espaço de processos, e o sistema hospedeiro não fica visível
  • Como compartilha o kernel do host, ele oferece sobrecarga praticamente nula e tempos de inicialização quase instantâneos
  • O FreeBSD alcançou em produção uma implementação prática do que hoje chamamos de contêineres 10 anos antes da indústria

Linha do tempo das tecnologias de isolamento

  • O caminho real de evolução do problema de isolamento foi: servidor compartilhado sem isolamento → máquina virtual pesada, porém isolada → contêiner leve e isolado
  • O FreeBSD chegou ao terceiro estágio em 2000; o Linux chegou com o LXC em 2008; o Docker surgiu em 2013
  • Quando o Docker foi celebrado como revolucionário, os FreeBSD jails já estavam maduros e comprovados em campo havia 13 anos

Por que o Linux venceu

  • Superioridade técnica não garante vitória em guerras de ecossistema
  • O Linux venceu com tomada de decisão rápida, o efeito viral da licença GPL e o forte suporte corporativo de Red Hat e IBM
  • Depois, Google, Facebook e Amazon passaram a desenvolver ferramentas para datacenters em grande escala e definiram a direção de toda a indústria
  • O Linux deixou de ser “o SO gratuito para quem não podia pagar licença comercial” e se transformou em “a única opção para servidores”

A complexidade do ecossistema de contêineres no Linux

  • Para resolver os problemas de isolamento e implantação, engenheiros de Linux construíram primitivas de kernel como namespaces, cgroups e seccomp e depois empilharam sobre elas camadas complexas de abstração: LXC (2008) → OCI/runc (2015) → Docker/Podman (2013/2018) → Docker Hub etc.
  • O resultado foi um aglomerado excessivamente engenheirado de abstrações vazantes (leaky abstractions) voltado para infraestruturas em nuvem e dependentes de fornecedores
  • Hoje, para operar aplicações em sistemas de grande escala, containerizar com Docker e orquestrar com Kubernetes virou o padrão implícito, apresentado não como uma entre várias opções, mas como a escolha óbvia

A contribuição do Docker e a fraqueza dos Jails

  • O que o Docker resolveu muito bem foi o problema de shipping: empacotar aplicações com todas as suas dependências, distribuí-las via registry e executá-las da mesma forma em qualquer máquina, oferecendo um padrão universal
  • O formato de imagem OCI se consolidou como padrão de fato da indústria
  • Os jails resolvem muito bem o problema de isolamento, mas não têm uma solução nativa para shipping, e esse é o principal motivo de o ecossistema de jails parecer menos maduro do que o do Docker
  • A comunidade reconhece essa lacuna, e algumas ferramentas (cbsd, bastille, pot, appjail etc.) tentam imitar o ecossistema moderno de contêineres, enquanto também existem abordagens diferentes que aproveitam primitivas nativas do FreeBSD

Prévia da continuação

  • Na próxima parte, serão abordadas a simplicidade e a elegância da infraestrutura baseada em FreeBSD, os fundamentos dos jails e seu funcionamento, a redução de boilerplate com gerenciadores de jail, o provisionamento e a implantação com Ansible, o poder dos snapshots com ZFS e como combinar tudo isso para construir uma infraestrutura robusta e escalável para a Hypha

1 comentários

 
GN⁺ 2026-02-24
Comentários do Hacker News
  • Não foi possível vencer a guerra de ecossistemas só com superioridade técnica
    Em meados dos anos 90, o Linux cresceu graças à tomada de decisão rápida, à natureza contagiosa da licença GPL e ao apoio corporativo da Red Hat e da IBM
    Instalei Linux em 1994, mas na comunidade FreeBSD ignoraram meu PC de US$ 3.500, dizendo que era “meia-boca”
    Havia bugs na interface IDE, mas o Linux publicou uma solução alternativa em poucos dias, enquanto o lado BSD só mandava comprar equipamento SCSI
    Eu era universitário na época e não tinha dinheiro, então o Linux acabou sendo a escolha prática
    Mais tarde voltei a experimentar o FreeBSD, mas o Linux já fazia tudo de que eu precisava
    O bug relacionado está documentado no artigo da Wikipédia sobre CMD640

    • Também sou fã do FreeBSD, mas sinto que houve muita convergência funcional com o Linux
      Mesmo assim, gosto do fato de o FreeBSD ter mais consistência no sistema e manter estáveis componentes centrais como som e APIs de eventos
      O suporte a drivers para hardware recente ainda é melhor no Linux, mas espero que o FreeBSD não fique “linuxificado” demais
    • Hoje em dia, quem usa BSD geralmente usa por costume ou simplesmente por um espírito mais do contra
      Na prática, qualquer *nix moderno faz quase tudo. Agora a questão é mais de preferência e familiaridade do que de desempenho
    • O Linux recebeu interesse comercial logo no início, e isso fez o suporte a hardware explodir
      Já o BSD enfrentou rejeição das empresas por causa do processo com a AT&T, e nesse intervalo o Linux dominou o mercado
      Até hoje aparecem textos defendendo o FreeBSD, mas é difícil quebrar uma tendência consolidada nos anos 90
    • Acho engraçada a história de terem zombado do meu PC no lado BSD
      Ainda assim, continuo achando que o suporte a hardware ainda tem bastante espaço para melhorar
    • Entre 1992 e 1994, enquanto o BSD sofria ameaças judiciais, o Linux cresceu
  • O texto foi interessante
    Não concordo com a ideia de que primitivas de kernel do Linux como namespaces, cgroups e seccomp acabaram criando um ecossistema de abstrações complexas
    O Linux ficou complexo porque teve sucesso, não por causa de um projeto fracassado
    Se o BSD tivesse virado dominante, o mesmo ecossistema “superengenheirado” teria surgido do mesmo jeito

    • O FreeBSD tem uma mentalidade mais voltada à engenharia do que à cultura hacker
      Contêineres no fim das contas não passam de VMs leves, então acho melhor usar VMs de verdade
    • Comparando utilitários BSD com utilitários GNU, a diferença de estilo é bem nítida
      O Docker ficou popular por causa da reutilização e do ecossistema, não por isolamento de segurança
  • O jail do FreeBSD é simples e elegante, mas os contêineres OCI no Linux são muito mais fáceis de usar
    Contêineres não são uma funcionalidade isolada do kernel, e sim uma ilusão composta pela combinação de vários namespaces, mounts e isolamento de processos
    O design do Linux é intencional, e cgroups e seccomp são amplamente usados também fora dos contêineres, em coisas como systemd e flatpak

    • O FreeBSD ainda tem pontos fortes em áreas como equipamentos de rede e controladores de armazenamento
      A filosofia de “gado vs animal de estimação” pode ser aplicada no nível de VM e de orquestração
    • Os contêineres Linux são muito mais rápidos em criação e execução do que os jails do FreeBSD
      Dizer que jails são melhores não me parece muito convincente na prática
  • O Docker venceu não por isolamento técnico, mas por ecossistema
    Com ferramentas como Dockerfile, registro público e Compose, dava para montar um ambiente executável em 30 segundos
    O jail do FreeBSD era tecnicamente excelente, mas a barreira de entrada era alta
    Mais recentemente, por causa da complexidade da stack de contêineres, também se vê um movimento de volta a jails ou VMs mais simples

    • O FreeBSD tem algo como 0,1% de participação de mercado, então não tinha como “vencer”
      Mas não é uma questão de competição; cada um só cumpre um papel diferente
    • A arquitetura cliente/servidor do Docker permitiu ambientes integrados como o Docker Desktop
      No FreeBSD não existe esse conceito, e também falta um sistema de imagens
    • Para mim, usar só Docker Compose ou Swarm já é simples o bastante
      Se o FreeBSD tivesse investido em UX e ecossistema como o Docker fez, sua base de usuários teria crescido várias vezes
    • O texto original também enfatiza repetidamente a palavra “ecossistema
  • Por volta de 2005, cheguei a operar a empresa inteira sobre FreeBSD
    Mas com o tempo o Linux passou a dominar tanto no uso pessoal quanto no trabalho
    Hoje até o Docker já é bom o suficiente, e não existe mais uma razão lógica para voltar

    • No começo dos anos 2000, o FreeBSD 4 tinha desempenho excelente em rede e armazenamento
      Mas demorou a responder à era das CPUs multicore e acabou ficando para trás em relação a Linux e Windows
      Hoje o desempenho se recuperou, mas continua em desvantagem por causa da falta de drivers e do limite no número de desenvolvedores
      Eu uso Linux onde preciso de GPU ou CUDA, e FreeBSD em servidores estáveis
    • Estou numa posição parecida. A escala de investimento no Linux é tão grande que seus defeitos acabam ficando escondidos
      O UX do FreeBSD é mais consistente, mas, na prática, o Linux virou o “caminho feliz”
    • Ainda continuo me perguntando por que o Satoshi usava Windows
  • Textos apresentando o FreeBSD são sempre bem-vindos

  • O FreeBSD introduziu jail em 2000, mas o Linux já tinha tecnologias parecidas como OpenVZ e VServer

    • O Virtuozzo era fechado e por isso demorou a se espalhar, e o Linux-VServer era focado só em web hosting, então não virou mainstream
      No fim, quando o LXC apareceu no fim dos anos 2000, surgiu a percepção de que “o FreeBSD estava na frente”
  • Fico curioso se existe algum texto que explique tecnicamente a forma de implementação do isolamento em contêineres e VMs
    Não só no nível de “compartilham o mesmo kernel, então é mais fraco”, mas nos detalhes reais de implementação

  • Ultimamente, por causa de recursos como o systemd-oomd, tenho pensado em voltar para o FreeBSD
    Antigamente eu deixava vários processos rodando no terminal e trabalhava registrando logs,
    mas agora o systemd acaba matando processos inteiros por unidade de cgroup, e o trabalho se perde
    Esse tipo de mudança de sistema incompatível quebra o fluxo de desenvolvimento, e é frustrante ter de recorrer toda hora a systemd-run ou Docker para isolar processos

  • O ponto central do sucesso do Linux foi a contagiosidade da GPL e o efeito de rede
    À medida que os usuários passaram a enxergar o Linux como padrão, os fabricantes de hardware naturalmente começaram a lançar drivers para Linux
    Graças à flexibilidade do kernel, o ecossistema de drivers open source cresceu de forma explosiva