14 puntos por GN⁺ 2025-09-02 | Aún no hay comentarios. | Compartir por WhatsApp
  • Recientemente ha cobrado atención un enfoque híbrido que integra Go y Rust como lenguajes de extensión dentro de una arquitectura monolítica de PHP
  • Antes, la combinación de microservicios en Go y un monolito en PHP 8.3 permitía lograr un equilibrio entre productividad y alto rendimiento
  • Siguiendo la ley de Pareto (80% del tráfico concentrado en el 20% de las API), era indispensable optimizar los endpoints críticos; antes se respondía con caché y separación de servicios en Go, pero eso aumentaba la complejidad
  • Con la evolución reciente del ecosistema de PHP, han surgido técnicas como FFI, extensiones en Rust y extensiones en Go (FrankenPHP), que permiten elevar drásticamente el rendimiento dentro del propio monolito
  • Las extensiones en Rust ofrecen al mismo tiempo seguridad de memoria y velocidad, y FrankenPHP muestra mejoras de rendimiento de hasta más de 4 veces con su modo worker y extensiones basadas en Go
  • Sin asumir el costo y riesgo de reescribirlo todo en Go o Rust, el enfoque de PHP híbrido permite obtener productividad y velocidad a la vez

Contexto y arquitectura previa

  • Antes, se desarrollaban microservicios basados en Go (children) por separado para optimizar funciones específicas, tomando como eje una aplicación monolítica DDD (mother)
  • Los microservicios en Go se encargaban de manejar tráfico de alto rendimiento, mientras que el monolito en PHP 8.3 ofrecía desarrollo rápido de features y confiabilidad en el despliegue en un entorno con un equipo backend pequeño
  • Esta estructura ofrecía un punto de equilibrio para asegurar velocidad, estabilidad y productividad

Cuellos de botella de rendimiento y formas previas de responder

  • Con frecuencia se observa el principio de Pareto, donde el 80% del tráfico se concentra en el 20% de los endpoints de API
  • Para ese 20% donde el rendimiento es más importante, se adoptaban distintos métodos: escribir código optimizado, agregar una capa de caché o separar microservicios en Go
  • Sin embargo, había límites en términos de complejidad y carga operativa

Opciones híbridas en el ecosistema moderno de PHP

  • En tiempos recientes han aumentado las tecnologías para mejorar directamente el rendimiento dentro del monolito de PHP
  • 1. FFI (Foreign Function Interface)

    • La funcionalidad FFI de PHP permite llamar código C directamente desde PHP
    • Incluso la lógica a nivel de sistema o crítica para el rendimiento puede implementarse dentro del proyecto PHP
    • Aun así, se recomienda usarlo solo en situaciones adecuadas, considerando el costo del cambio de contexto
  • 2. Extensiones basadas en Rust

    • Es posible desarrollar extensiones de PHP con Rust (o Zig)
    • Al descargar las áreas de alta carga a extensiones en Rust, que ofrecen seguridad de memoria y rendimiento compilado, es posible asegurar tanto confiabilidad como alta velocidad
  • 3. Extensiones basadas en Go: FrankenPHP

    • Tras migrar recientemente a FrankenPHP y ejecutarlo en worker mode, se confirmó un rendimiento más de 4 veces más rápido que antes
    • En una versión reciente también se hizo posible escribir extensiones de PHP en Go
    • Con ello, se puede aprovechar el rendimiento de API de Go directamente dentro del monolito PHP y combinar productividad y velocidad sin dividir el sistema por lenguaje

Por qué no hacer una migración completa a Go o Rust

  • El costo de una reescritura total y el riesgo asociado son altos
    • Cambiar por completo una aplicación ya grande y estable a Go o Rust implica mucho riesgo y consumo de recursos
  • PHP todavía conserva fortalezas propias
    • En la mayoría de los trabajos, el desarrollo rápido en PHP, su ecosistema amigable y una velocidad suficientemente buena siguen siendo competitivos
    • Si solo las áreas que realmente necesitan el límite máximo de rendimiento se configuran de forma híbrida con Go o Rust, se puede eliminar la necesidad de una migración completa

Conclusión: el valor del PHP híbrido

  • El ecosistema moderno de PHP ofrece tanto alta productividad de desarrollo como opciones de integración con extensiones de alto rendimiento (C, Rust, Go)
  • Con esta estructura híbrida es posible asegurar tanto velocidad como productividad
  • Se plantea un nuevo paradigma de arquitectura que mantiene el desarrollo centrado en PHP y permite extender selectivamente con otros lenguajes cuando sea necesario

Aún no hay comentarios.

Aún no hay comentarios.