14 pontos por GN⁺ 2025-09-02 | Ainda não há comentários. | Compartilhar no WhatsApp
  • Recentemente, vem ganhando atenção uma abordagem híbrida que integra Go e Rust como linguagens de extensão dentro de uma arquitetura monolítica em PHP
  • Antes, a combinação de microsserviços em Go com um monólito em PHP 8.3 permitia alcançar um equilíbrio entre produtividade e alto desempenho
  • Seguindo a lei de Pareto (80% do tráfego concentrado em 20% das APIs), otimizar endpoints de hotspot era essencial, e no passado isso era tratado com cache e separação de serviços em Go, mas a complexidade aumentava
  • Com a evolução recente do ecossistema PHP, surgiram técnicas como FFI, extensões em Rust e extensões em Go (FrankenPHP), tornando possível elevar bastante o desempenho dentro do próprio monólito
  • Extensões em Rust oferecem ao mesmo tempo segurança de memória e velocidade, e o FrankenPHP mostra melhorias de desempenho de mais de 4x com worker mode e extensões baseadas em Go
  • Sem assumir o custo e o risco de reescrever tudo em Go/Rust, a abordagem de PHP híbrido permite garantir produtividade e velocidade ao mesmo tempo

Contexto e arquitetura existente

  • Antes, o foco era um aplicativo monolítico com DDD (mother), enquanto microsserviços baseados em Go (children) eram desenvolvidos separadamente para otimizar funcionalidades específicas
  • Os microsserviços em Go cuidavam do processamento de tráfego de alto desempenho, enquanto o monólito em PHP 8.3 oferecia desenvolvimento rápido de recursos e confiabilidade na implantação em um contexto de equipe de backend pequena
  • Essa estrutura oferecia um ponto de equilíbrio capaz de garantir velocidade, estabilidade e produtividade

Gargalos de desempenho e formas tradicionais de resposta

  • O princípio de Pareto, em que 80% do tráfego se concentra em 20% dos endpoints de API, é observado com frequência
  • Para esses 20% mais críticos em termos de desempenho, foram adotadas várias abordagens, como código otimizado, adição de camadas de cache e separação em microsserviços Go
  • No entanto, havia limitações em termos de complexidade e carga operacional

Opções híbridas no ecossistema PHP atual

  • Recentemente, aumentou o número de tecnologias capazes de melhorar diretamente o desempenho dentro de um monólito em PHP
  • 1. FFI (Foreign Function Interface)

    • Com o recurso FFI do PHP, é possível chamar código em C diretamente a partir do PHP
    • Assim, também é possível implementar no próprio projeto PHP lógica de nível de sistema ou crítica para desempenho
    • Ainda assim, é recomendável usar isso apenas nos cenários adequados, considerando o custo de context switching
  • 2. Extensões baseadas em Rust

    • É possível desenvolver extensões para PHP com Rust (ou Zig)
    • Ao descarregar áreas de alto volume para extensões em Rust, que oferecem segurança de memória e desempenho compilado, é possível garantir ao mesmo tempo confiabilidade e alta velocidade
  • 3. Extensões baseadas em Go: FrankenPHP

    • Após a migração recente para o FrankenPHP, ao operar em worker mode, foi confirmado um desempenho mais de 4x superior ao anterior
    • Um lançamento recente também passou a permitir a escrita de extensões PHP em Go
    • Com isso, tornou-se possível aproveitar diretamente o desempenho de API do Go dentro de um monólito PHP, combinando produtividade e velocidade sem dividir a aplicação por linguagem

Por que não migrar tudo completamente para Go ou Rust

  • O custo de uma reescrita completa e o risco são altos
    • Trocar completamente por Go ou Rust uma aplicação já grande e estável implica muito risco e consumo de recursos
  • O próprio PHP ainda tem pontos fortes
    • Na maioria dos casos, o desenvolvimento rápido em PHP, seu ecossistema amigável e sua velocidade suficientemente boa continuam sendo competitivos
    • Se apenas algumas áreas que realmente exigem o limite máximo de desempenho forem compostas de forma híbrida com Go ou Rust, a necessidade de uma migração total pode ser eliminada

Conclusão: o valor do PHP híbrido

  • O ecossistema PHP moderno oferece, junto com alta produtividade no desenvolvimento, opções de integração com extensões de alto desempenho em (C, Rust, Go)
  • Com essa estrutura híbrida, é possível garantir velocidade e produtividade ao mesmo tempo
  • Mantendo o desenvolvimento centrado em PHP, surge um novo paradigma de arquitetura que permite expandir seletivamente a linguagem quando necessário

Ainda não há comentários.

Ainda não há comentários.