Laravel Apps mit Octane skalieren

Laravel Octane ist ein hochleistungsfähiger HTTP-Server, der auf dem Laravel-Framework aufbaut. Er bietet eine einfache und elegante Möglichkeit, Laravel-Anwendungen zu skalieren. Octane nutzt Swoole oder Roadrunner als zugrunde liegende Engine und kann daher problemlos Tausende von gleichzeitigen Verbindungen verarbeiten.
Octane bietet viele Vorteile, wie z. B. eine bessere Leistung, einen geringeren Ressourcenverbrauch und die Möglichkeit der horizontalen Skalierung. Allerdings gibt es auch einige Vorbehalte, die du beachten solltest, bevor du Octane in der Produktion einsetzt. In diesem Artikel besprechen wir die Möglichkeiten, Vorteile und Vorbehalte bei der Verwendung von Laravel Octane zur Skalierung einer Laravel-Anwendung.
TL;DR
Laravel Octane ist ein hochleistungsfähiger HTTP-Server, der auf dem Laravel-Framework aufbaut. Octane nutzt Swoole oder Roadrunner als Basis-Engine und kann daher problemlos Tausende von gleichzeitigen Verbindungen verarbeiten. Octane bietet viele Vorteile, wie z. B. eine bessere Leistung, einen geringeren Ressourcenverbrauch und die Möglichkeit der horizontalen Skalierung. Aber es gibt auch einige Vorbehalte, die du beachten solltest, bevor du es in der Produktion einsetzt. In diesem Artikel werden wir die Möglichkeiten, Vorteile und Vorbehalte bei der Skalierung einer Laravel-Anwendung besprechen.
Was ist Laravel Octane und wie funktioniert es?
Laravel Octane ist ein Tool, das das Serving von Laravel-Anwendungen beschleunigt. Es verkürzt die Zeit, die zum Kompilieren und Ausliefern einzelner Anfragen benötigt wird. Dazu wird deine Anwendung einmal gebootet und dann im Speicher gehalten, damit die Anfragen schneller als je zuvor bearbeitet werden können.
Unter der Haube verwendet es Open Swool, Swool oder Roadrunner, um die App zu booten und zu bedienen.
Open Swool oder Swool
Swoole ist ein Software Development Kit, das es Entwicklern ermöglicht, leistungsstarke und skalierbare Netzwerkanwendungen zu erstellen. Open Swoole ist eine Abspaltung des Swoole-Frameworks, die Ende 2021 aufgrund von Unstimmigkeiten innerhalb der Swoole-Entwicklergemeinschaft entstand.
Roadrunner
RoadRunner ist ein quelloffener (MIT-lizenzierter), leistungsstarker und wartungsfreundlicher PHP-Anwendungsserver, der klassische Nginx-Setups mit viel mehr Leistung und Flexibilität ersetzen kann. Er ist in Golang geschrieben.
Mit Swoole oder RoadRunner haben wir jetzt einen Worker für jede eingehende HTTP-Anfrage. Das bedeutet, dass nur der erste unser Framework bootet (einschließlich aller Service-Provider), während alle anderen eine einsatzbereite Worker-Instanz nutzen können, was es so wahnsinnig schnell macht!
Die Vorteile der Verwendung von Octane zur Skalierung von Laravel-Anwendungen
Octane beschleunigt Laravel-Anwendungen durch das Caching von Daten und Objekten im Speicher. Auch ohne weitere Änderungen an Hardware oder Infrastruktur kann Laravel Octane die Leistung deiner Anwendung um bis zu 30 % steigern. Diese Verbesserung wird dadurch erreicht, dass Festplattenlesevorgänge, Prozess-Forks und anderer Overhead vermieden werden, der entsteht, wenn das Framework bei jeder Anfrage hochgefahren wird. Auf diese Weise kann Octane Tausende von gleichzeitigen Verbindungen mühelos verarbeiten. Das macht es ideal für Anwendungen, die viel Traffic erhalten oder hochverfügbar sein müssen.
Außerdem kann man davon ausgehen, dass diese kosteneffiziente Methode bei jedem Unternehmen, Start-up oder Betrieb beliebt ist.
Im besten Fall musst du nicht einmal Änderungen an deiner Codebasis vornehmen. Das hängt aber stark davon ab, wie deine Anwendung strukturiert ist.
Mögliche Nachteile der Verwendung von Laravel Octane
Wenn du mit dem Gedanken spielst, Octane zur Skalierung deiner Laravel-Anwendung einzusetzen, solltest du einige Dinge beachten. Octane ist nicht mit allen Laravel-Anwendungen kompatibel. Insbesondere funktioniert es nicht mit Anwendungen, die Session State oder bestimmte Arten von Middleware verwenden. Und schließlich kann Octane zwar die Leistung verbessern, aber nicht unbedingt alle Leistungsprobleme lösen. Wenn deine Anwendung bereits damit kämpft, mit dem Datenverkehr Schritt zu halten, reicht Octane möglicherweise nicht aus, um sie zu retten. In diesem Fall musst du andere Optionen in Betracht ziehen, z. B. die horizontale Skalierung.
Erforderliche Refactorings
Wenn deine Anwendung Session State oder bestimmte Arten von Middleware verwendet, musst du einige Änderungen an deinem Code vornehmen, bevor du Octane nutzen kannst. Insbesondere musst du die Unterstützung für Swoole's Coroutine-basierte Sessions hinzufügen und alle Middleware entfernen, die nicht mit Swoole kompatibel ist.
Zu den weiteren Änderungen, die du vornehmen musst, gehört der Dependency Injection Container. Ich schlage vor, dass du die offizielle Laravel-Dokumentation zu diesem Thema liest.
Wie werden Codeänderungen behandelt?
Octane bietet eine bequeme Möglichkeit, deine Codebasis automatisch auf Änderungen zu überwachen und den Octane-Server ohne manuelle Eingriffe neu zu starten. Das bedeutet, dass du Entwicklungen einfacher durchführen kannst, indem du den Code an einer Stelle änderst, anstatt jedes Mal eine ganze Anwendungsinstanz zu stoppen/starten, wenn es etwas Neues in deiner Codebasis gibt.
Alternativen zu Laravel Octane
Laravel Octane ist ein großartiges Tool für die Skalierung von Laravel-Anwendungen, aber es ist nicht die einzige Option. Es gibt andere Optionen, die für deine Bedürfnisse besser geeignet sein könnten. Hier sind einige Alternativen, die du in Betracht ziehen solltest:
Mehr Hardware = mehr Leistung
Nur um es zu erwähnen, wir empfehlen dies nicht. Das ist die einfachste, die am wenigsten kosteneffiziente und die am wenigsten zukunftssichere Methode der Skalierung: Wirf deinem Projekt einfach mehr Hardware-Leistung zu. Die offensichtlichen Nachteile sind höhere Betriebskosten, die Notwendigkeit, auf einen anderen Server zu migrieren und die Tatsache, dass du mit diesem Setup nicht nach Bedarf skalieren kannst.
Nginx Load Balancing mit oder ohne AWS
Um eine skalierbare Webanwendung mit Laravel auf Amazon Web Services aufzubauen, kann AWS genutzt werden, um die Anwendung automatisch auf mehrere Instanzen zu skalieren, die sich eine MySQL-Datenbank teilen. Alle diese Server würden einen Amazon Relational Database Service (RDS) nutzen.
Die Skalierung mit AWS gibt es schon seit einiger Zeit und sie funktioniert gut. Aber die Kosten können intransparent sein. Im Vergleich zu Octane funktioniert dies nach dem gleichen Prinzip, ist aber nicht so effektiv wie Octane. Ein Vorteil ist auf jeden Fall, dass du deinen bestehenden Code so skalieren kannst, wie er ist. Es sind keine Octane-spezifischen Änderungen erforderlich.
Fazit
Laravel Octane ist eine großartige Möglichkeit, deine Laravel-Anwendung zu skalieren. Es ist einfach zu bedienen und kann die Leistung verbessern, ohne dass du Änderungen an deiner Codebasis vornehmen musst. Es ist jedoch nicht mit allen Anwendungen kompatibel und reicht möglicherweise nicht aus, um eine bereits angeschlagene Anwendung zu retten. Wenn du den Einsatz von Octane in Erwägung ziehst, solltest du dich gründlich informieren und alle Optionen abwägen, bevor du eine Entscheidung triffst.
Wenn du Laravel Octane einsetzt, achte auf das Badge "Laravel Octane Compatible" bei Paketen, die du zu deinem Projekt hinzufügst. Das bedeutet, dass das Paket mit Laravel Octane getestet wurde und du dir die Zeit sparen kannst, es zu konfigurieren, damit es richtig funktioniert. Sei dir bewusst, dass nicht alle Pakete das Abzeichen kennen oder nutzen, auch wenn sie kompatibel sind.
Vielen Dank an Bill Jelen für das tolle Bild.