- 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.