Zum Inhalt springen

Cookies ūüć™

Diese Website setzt zustimmungspflichtige Cookies ein. Details

Laravel Apps mit Octane skalieren

Chris Wolf

Chris Wolf

Scale Laravel with octane.

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.