14 Punkte von GN⁺ 2025-09-02 | Noch keine Kommentare. | Auf WhatsApp teilen
  • In letzter Zeit rückt ein hybrider Ansatz in den Fokus, bei dem Go und Rust innerhalb einer PHP-Monolith-Struktur als Erweiterungssprachen integriert werden
  • Früher wurde mit der Kombination aus Go-Microservices und einem PHP-8.3-Monolithen ein ausgewogenes Verhältnis zwischen Produktivität und hoher Performance erreicht
  • Gemäß dem Pareto-Prinzip (80 % des Traffics konzentrieren sich auf 20 % der APIs) war die Optimierung von Hotspot-Endpunkten unverzichtbar; früher wurde darauf mit Caching und der Auslagerung in Go-Services reagiert, was jedoch die Komplexität erhöhte
  • Durch die jüngsten Fortschritte im PHP-Ökosystem sind Techniken wie FFI, Rust-Erweiterungen und Go-Erweiterungen (FrankenPHP) entstanden, mit denen sich die Performance innerhalb des Monolithen deutlich steigern lässt
  • Rust-Erweiterungen bieten gleichzeitig Speichersicherheit und Geschwindigkeit, und FrankenPHP zeigt im Worker-Mode dank Go-basierter Erweiterungen eine mehr als vierfache Performance-Steigerung
  • Ohne die Kosten und Risiken einer Neuschreibung in Go oder Rust in Kauf zu nehmen, lässt sich mit dem Ansatz Hybrid-PHP sowohl Produktivität als auch Geschwindigkeit sichern

Hintergrund und bisherige Architektur

  • Bisher wurde rund um eine bestehende DDD-Monolith-Anwendung (mother) für die Optimierung bestimmter Funktionen separat Go-basierte Microservices (children) entwickelt
  • Die Go-Microservices übernahmen die Verarbeitung von High-Performance-Traffic, während der PHP-8.3-Monolith in einem kleinen Backend-Team schnelle Feature-Entwicklung und zuverlässige Deployments ermöglichte
  • Diese Struktur bot einen ausgewogenen Punkt, an dem sich Geschwindigkeit, Stabilität und Produktivität zugleich erreichen ließen

Performance-Engpässe und bisherige Gegenmaßnahmen

  • Häufig wurde das Pareto-Prinzip beobachtet, nach dem sich 80 % des Traffics auf 20 % der API-Endpunkte konzentrieren
  • Für diese performancekritischen 20 % wurden verschiedene Maßnahmen eingeführt, darunter optimierter Code, zusätzliche Caching-Schichten und die Auslagerung in Go-Microservices
  • Allerdings stieß dieser Ansatz bei Komplexität und Betriebsaufwand an Grenzen

Hybride Optionen im modernen PHP-Ökosystem

  • Inzwischen gibt es mehr Technologien, mit denen sich die Performance direkt innerhalb eines PHP-Monolithen verbessern lässt
  • 1. FFI (Foreign Function Interface)

    • Mit der FFI-Funktion von PHP kann C-Code direkt aus PHP heraus aufgerufen werden
    • Auch systemnahe oder performancekritische Logik lässt sich so innerhalb eines PHP-Projekts umsetzen
    • Wegen der Kosten für Context Switching wird der Einsatz jedoch nur in passenden Situationen empfohlen
  • 2. Rust-basierte Erweiterungen

    • PHP-Erweiterungen können in Rust (oder Zig) entwickelt werden
    • Stark belastete Bereiche lassen sich an Rust-Erweiterungen mit Speichersicherheit und Compiler-Performance auslagern, wodurch sich Zuverlässigkeit und hohe Geschwindigkeit zugleich erreichen lassen
  • 3. Go-basierte Erweiterungen: FrankenPHP

    • Nach dem jüngsten Umstieg auf FrankenPHP zeigte sich im worker mode eine mehr als viermal höhere Performance als zuvor
    • Mit einem aktuellen Release ist es nun auch möglich, PHP-Erweiterungen in Go zu schreiben
    • Dadurch lässt sich die API-Performance von Go direkt innerhalb eines PHP-Monolithen nutzen, sodass sich Produktivität und Geschwindigkeit ohne sprachliche Aufteilung verbinden lassen

Warum keine vollständige Migration nach Go oder Rust?

  • Kosten und Risiko einer vollständigen Neuschreibung sind hoch
    • Eine bereits große und stabile Anwendung komplett auf Go oder Rust umzustellen, bedeutet erhebliches Risiko und hohen Ressourceneinsatz
  • PHP hat weiterhin eigene Stärken
    • Für die meisten Anforderungen bleiben die schnelle Entwicklung mit PHP, das zugängliche Ökosystem und die ausreichend hohe Geschwindigkeit wettbewerbsfähig
    • Wenn nur die Bereiche mit echten Performance-Grenzen hybrid mit Go oder Rust aufgebaut werden, entfällt die Notwendigkeit einer vollständigen Migration

Fazit: der Wert von Hybrid-PHP

  • Das moderne PHP-Ökosystem bietet neben schneller Entwicklungsproduktivität auch Anbindungsoptionen für High-Performance-Erweiterungen in C, Rust und Go
  • Mit einer solchen hybriden Struktur lassen sich Geschwindigkeit und Produktivität zugleich sichern
  • Damit entsteht ein neues Architekturparadigma, das eine PHP-zentrierte Entwicklung beibehält und bei Bedarf eine selektive sprachbasierte Erweiterung ermöglicht

Noch keine Kommentare.

Noch keine Kommentare.