1

Desafiando preconceitos no PHP: Criei um "Ambiente Operacional Web" modular de 30MB inspirado na arquitetura de OS reais

Sei bem que, quando a maioria das pessoas pensa em PHP, logo vem à mente frameworks MVC tradicionais (como Laravel/Symfony) ou plataformas monolíticas gigantescas (como o WordPress).

Mas e se mudássemos o ponto de vista? Em vez de enxergar a stack PHP/Linux apenas como um servidor de aplicações comum, decidi tratá-la como um Ambiente Operacional Web.

Nos últimos meses, tenho desenvolvido o Domain System — uma plataforma web leve, radicalmente desacoplada e modular, construída do zero sob os princípios mais rígidos de SOLID e Inversão de Dependência (DIP). O projeto busca inspiração direta na engenharia de Sistemas Operacionais (microkernel, anéis de proteção e isolamento de privilégios) e entrega tudo isso ocupando apenas cerca de 30 MB descompactado.


🧠 O Conceito: Arquitetura de OS aplicada à Web

O Domain System é completamente agnóstico em relação a bancos de dados ou configurações pesadas de ambiente. A lógica dele funciona dividindo os privilégios da aplicação em duas camadas bem claras:

  • Ring 0 (SystemApps): É o microkernel central do sistema. Ele gerencia estritamente a infraestrutura base: roteamento dinâmico, persistência atômica, segurança baseada em capacidades (capabilities), telemetria e diagnósticos de contratos. O núcleo central nunca sabe (e nem precisa saber) o que a lógica de negócio do usuário está fazendo.
  • Ring 3 (UserPlugins): É onde a aplicação de negócio realmente vive. Os plugins são injetados inteiramente através de Contratos (Interfaces). Eles rodam com privilégios limitados e são incapazes de "sequestrar" ou quebrar as instâncias principais do Ring 0.

🚀 Engenharia e Componentes do Projeto

Para garantir a resiliência e a estabilidade da plataforma, implementei algumas soluções das quais me orgulho bastante:

1. Gatekeeper & Sandboxing (Instalação Segura)

Para evitar que a instalação de extensões de terceiros via arquivos ZIP comprometa o servidor, criei um motor que extrai os uploads em uma zona de quarentena. Ele escaneia o código-fonte em busca de falhas conhecidas (como Path Traversal e Zip-Slip) e bloqueia qualquer tentativa de escalada de privilégios antes mesmo de mover os arquivos para a produção.

2. No-Break Shield & Armazenamento Atômico em JSON

Para erradicar a famosa Tela Branca da Morte (WSOD), o núcleo utiliza um Circuit Breaker inteligente combinado a um motor de armazenamento JSON atômico (usando LOCK_EX + escritas atômicas substituindo arquivos). O sistema conta ainda com diagnósticos de autocorreção de esquemas (SchemaDoctorInterface) e um mecanismo de Snapshot & Rollback em 1 clique direto pelo painel administrativo.

3. Flex Builder FSE (Full Site Editing) com Auto-Reflow

Desenvolvi um motor de layout para o frontend (src/Core/Theme/Parts) onde o editor de blocos e o site publicado compartilham exatamente o mesmo compilador e regras de validação. Ele suporta visibilidade responsiva nativa para 4 resoluções diferentes. Caso um elemento em uma coluna de CSS Grid seja ocultado no mobile, o motor colapsa a coluna e recalcula o grid do template dinamicamente em tempo de execução.

4. Governança e DX na Era do "Vibe Coding" (IA-First)

Minha intenção com essa arquitetura é permitir um desenvolvimento ágil e assistido por ferramentas de IA sem que o projeto se transforme em uma bagunça de código espaguete. O repositório já conta com regras estritas em arquivos .cursorrules, .clinerules e um guia detalhado em AI_CONTRACT_GUIDE.md.

Assistentes de IA (como Claude Code, Cursor ou Cline) lêem essas diretrizes e geram automaticamente plugins para o Ring 3 que respeitam 100% a tipagem estrita e os contratos definidos. Para os humanos, há também um gerador via CLI (php os-cli.php make:plugin <name>).


📊 Estabilidade e Testes

Para garantir que o acoplamento continue zero e que os contratos funcionem perfeitamente a cada alteração, o motor de Hooks (orientado a eventos) e injeções do sistema é blindado por 433 testes automatizados (somando mais de 2.340 asserções) rodando no PHPUnit sob o PHP 8.2+.


🛠️ Stack Técnica

  • Linguagem: PHP 8.2+ (Tipagem estrita e aplicação real de DIP)
  • Banco de Dados: Agnóstico (Suporte nativo a MySQL/MariaDB e SQLite via PDO, além do Atomic JSON integrado)
  • Arquitetura: Microkernel Modular / Clean Architecture

💬 Quero ouvir o feedback de vocês!

Colocar esse projeto de pé tem sido um excelente exercício prático de engenharia de software e design de código limpo dentro do ecossistema moderno do PHP.

Gostaria muito de abrir o debate com a comunidade do TabNews:

  1. O que vocês acham dessa abordagem de trazer o concept de Ring 0 / Ring 3 de segurança de sistemas operacionais para o contexto de plataformas web?
  2. Como vocês estão estruturando as regras de arquitetura nos repositórios de vocês para colher os frutos das IAs de código sem deixar que elas quebrem os padrões de design do sistema?

Fiquem à vontade para analisar a documentação, clonar o repositório ou criticar a arquitetura:

👉 Link do Repositório no GitHub: hadelrachid/domain-system

Carregando publicação patrocinada...
1

Não vi nenhum mecanismo de segurança que foi prometido neste post ou no README.md realmente implementado. Acho que a IA deu uma de funcionário pilantra e prometeu que fez o que não fez, hehehe.

src/Core/Utils/Archive/ZipArchiveExtractor.php: não tem sandboxing. Ele extrai o arquivo zip no processo diretamente usando ZipArchive. A "proteção de segurança" no código contra path traversal é insuficiente também, pois um caminho de arquivo absoluto (como /home/anyuser/.bashrc) está sendo aceito e o ZipArchive é vulnerável contra esse tipo de ataque até a última vez que eu testei.

src/Core/Plugin/Services/PluginBootstrapper.php: não existe nenhum mecanismo de segurança, isolamento, sanboxing, capabilities, nada disso sendo implementado na prática. A única diferença entre plugins de sistema ("ring 0") e plugins de usuário ("ring 3"), é que os plugins de sistema ganham prioridade na fila e são carregados primeiro. Mas não existe nenhum tipo de controle de segurança sendo feito para que possamos dizer que um código malicioso em um plugin de usuário não conseguiria ter o mesmo impacto de segurança que um código malicioso em um plugin de sistema. Na prática, dá na mesma.


Basicamente você só obteve um sistema de plugins simples, como qualquer outro, só que com over engineering e usando termos técnicos não relacionados com o que está sendo implementado na prática.