• Contact us
  • Documentation
  • Login
Watch a demoFree trial
Blog
Blog
BlogProduktFallstudienNachrichtenInsights
Blog

Upsun: die fehlende PaaS-Lösung zur Skalierung von Laravel-Anwendungen

PaaSPHPKonfigurationGitLaravel
03 Januar 2024
Thomas di Luccio
Thomas di Luccio
DevRel Ingenieur
Teilen
Diese Seite wurde von unseren Experten auf Englisch verfasst und mithilfe einer KI übersetzt, um einen schnellen Zugriff zu ermöglichen! Die Originalversion findest du hier.

Laravel ist ein einfaches, skalierbares und sicheres PHP-Framework, das von einer lebendigen und aktiven Community getragen wird. Es ist der Ausgangspunkt für viele großartige Webanwendungen und Online-Unternehmen und wurde so konzipiert, dass sich Entwickler darauf konzentrieren können, Mehrwert für ihre Kunden und Nutzer zu schaffen, anstatt mit einem starren Framework zu kämpfen.

Upsun und Laravel teilen die gleiche Überzeugung, dass Entwickler sich mehr auf die Entwicklung von Features und die Erforschung neuer Technologien und Bereiche konzentrieren sollten, statt immer wieder die Tools neu zu erstellen, die ihre Projekte unterstützen. Angesichts dieser vielen gemeinsamen Merkmale und Eigenschaften kann man mit Fug und Recht sagen, dass Upsun die perfekte PaaS-Lösung für das Hosting und die Skalierung von Laravel-Anwendungen ist.

Entwickle, ohne dich um Kleinigkeiten zu kümmern

Es geht darum, sich auf das Wesentliche zu konzentrieren: die Freiheit, großartige Anwendungen zu entwickeln, ohne sich um Kleinigkeiten zu kümmern. Für alle Web-Entwickler hilft Upsun dir dabei, mit deinen Laravel-Apps nach den Sternen zu greifen – Schritt für Schritt.

Upsun gibt Entwicklungsteams die Flexibilität zum Erstellen – und die Leistungsfähigkeit zum Ausführen – von Anwendungen mit Diversität auf einer einzigen, selbstverwalteten PaaS. Durch die Automatisierung von Infrastrukturmanagement und Sicherheit gibt Upsun jedem Entwickler die Freiheit, einfach zu experimentieren, schnell zu iterieren und Anwendungen verantwortungsbewusst in großem Maßstab bereitzustellen. Aber wie?

Unabhängig von der Komplexität deiner Anwendungen ermöglicht dir Upsun die vollständige Kontrolle über deine Umgebung über dein Terminal und YAML-Dateien. Wir führen dich hier durch die Schritte, wie du deine Laravel-Anwendungen auf Upsun ausführen kannst – die vollständige Dokumentation findest du hier.

Upsun CLI für Web-Entwickler: So richtest du es ein

Lade zunächst die Upsun-CLI herunter und installiere sie. Dort kannst du dann alle Upsun-Befehle mit upsun list– alles, was du brauchst, um mutig zu programmieren, was noch kein Entwickler zuvor programmiert hat, findest du hier.

Sobald du die Upsun-CLI hast, brauchst du ein Projekt. Du kannst deine Laravel-Anwendung aus ihrem Git-Repository klonen oder eine neue Laravel-Anwendung von Grund auf erstellen und ein Git-Repository initialisieren.

Wir empfehlen dir, ein Git-Repository zu initialisieren, bevor du ein Upsun-Projekt erstellst, da dieses dann deine main Umgebungs-Track zu deinem Hauptzweig. Andernfalls könnte die Hauptumgebung einen Hauptzweig verfolgen, während dein Standardzweig ein master und somit als sekundäre Umgebung behandelt wird.

Jetzt ist es an der Zeit, ein Upsun-Projekt mit upsun project:create. Alternativ kannst du ein Projekt über die Benutzeroberfläche erstellen und es lokal mit upsun get PROJECT_ID.

Die Upsun-CLI verfügt über einen praktischen project:init Befehl, der Konfigurationen initialisiert und dir hilft, im Handumdrehen loszulegen. Dieser Befehl hat eine coole Abkürzung: upsun ify. So einfach ist das, aber wie funktioniert es?

Upsunifiziere deine Laravel-App

Der upsun ify Befehl erkennt automatisch das verwendete Framework, die Laufzeitumgebung und die Abhängigkeitsmanager. Anschließend liegt es an dir, deinem Upsun-Projekt einen Namen zu geben und die verschiedenen Dienste auszuwählen, die du nutzen möchtest.

Der upsun ify Befehl bietet eine Liste von Diensten, deren Konfiguration für dich automatisch eingerichtet wird. Verwende die Pfeiltasten, um die Auswahl zu verschieben, die Leertaste, um einen Dienst auszuwählen, und die Eingabetaste, um die Liste zu filtern.

Du kannst deiner Anwendung so viele Dienste hinzufügen, wie du möchtest – wirf einen Blick in die Dokumentation, um alles zu erfahren, was du brauchst, um dein Upsun-Projekt nach deinen Wünschen zu gestalten.

Je nach Komplexität der Anwendung generiert der upsun ify Befehl möglicherweise nicht die gesamten Konfigurationsdateien für dich generieren, aber er sorgt dafür, dass 80–90 % davon bereits für den Start bereit sind. Unsere Stack-Anleitungen, die Dokumentation und unsere Community stehen dir zudem jederzeit zur Verfügung, um dir zu helfen, im Handumdrehen eine erstklassige Konfiguration zu erstellen.

Laravel entfesselt: Aufbau eines entkoppelten, skalierbaren Ökosystems

Upsun ist die PaaS-Lösung, die dir hilft, deine Laravel-Anwendungen in jede gewünschte Richtung zu skalieren, ganz gleich, wie komplex deine Anwendung auch erscheinen mag. Vielleicht möchtest du dein Projekt horizontal skalieren, indem du mehr Technologien einsetzt. Dein Projekt ist vielleicht keine einzelne Laravel-Anwendung. Es könnte mit Workers, Webservices in NodeJS und Go sowie einer Datenschicht in Python gebündelt sein. Das ist das technische Ökosystem mit Laravel als Kern, das benötigt wird, um das Produkt oder die Dienstleistung deines Unternehmens anzutreiben. Und Upsun kann dir dabei helfen, es zu verwalten.

Unsere Dokumentation bietet eine Anleitung zum Erstellen von Uspun-Projekten mit mehreren Anwendungen. Die .upsun/config.yaml Datei enthält einen application’s Top-Level-Schlüssel mit der Konfiguration deiner ersten Anwendungen. Du kannst entweder weitere Einträge zu dieser Datei hinzufügen oder die Konfiguration auf mehrere Dateien aufteilen, eine pro Anwendung. Bei der Bereitstellung der Infrastruktur für unser Projekt fasst Upsun außerdem alle YAML-Dateien in den .upsun Ordner in einer einzigen Metakonfigurationsdatei zusammen.

Schreibbare Cache-Verzeichnisse konfigurieren

Laravel erfordert, dass bestimmte Cache-Ordner beschreibbar sind. Upsun verlangt, dass wir nach dem Build explizit definieren, welche Ordner beschreibbar sind – diese Ordner werden als „Mounts“ bezeichnet. Um sicherzustellen, dass bootstrap/cache und storage Verzeichnisse beschreibbar sind, überprüfe die mounts Definition deines .upsun/config.yaml file, wie unten gezeigt. Ein Laravel-spezifischer Cache-Ordner sollte während der Bereitstellung der Anwendung erstellt werden, falls einer fehlt.

applications:
      app:
        ...
        mounts:
          ...
      
        "bootstrap/cache":
          source: "storage"
          source_path: "cache"
                     
        "storage":
          source: "storage"
          source_path: "storage"

 

Im Rahmen des Erstellungs- und Bereitstellungsprozesses deiner Anwendung werden mehrere Hooks ausgeführt. An diesen Stellen kannst du benutzerdefinierte Skripte ausführen, wie zum Beispiel diesen deploy Hook, der sicherstellt, dass Caches korrekt eingerichtet und aufgewärmt sind:

applications:
      app:
        ...
        hooks: 
          deploy: |
            set -eux
               
            # ensure the cache directories are available
            mkdir -p storage/framework/cache/data
            mkdir -p storage/framework/views
            mkdir -p storage/framework/sessions
               
            # clear all caches and dumped files
            php artisan optimize:clear
               
            # run all available migrations
            php artisan migrate --force

 

Hooks bieten noch mehr Automatisierungsmöglichkeiten, da du mehrere Befehle an einem entscheidenden Punkt im Deployment-Lebenszyklus ausführen kannst, darunter build, deploy, und post_deploy.

Eine Brücke zwischen Laravel und Upsun

Laravel erwartet, dass alle Konfigurationen über Umgebungsvariablen mit bestimmten Namen und in einem bestimmten Format übermittelt werden. Upsun stellt Konfigurationsinformationen als Umgebungsvariablen in einem anderen spezifischen Format bereit.

Die platformsh/laravel-bridge Bibliothek ordnet die Upsun-Variablen dem von Laravel erwarteten Format für gängige Werte zu und erleichtert unseren Artisans das Leben erheblich. Fügen wir sie hinzu mit:

composer require platformsh/laravel-bridge

 

Craft für nachhaltiges Wachstum: Ressourcen zuweisen, während die Nachfrage steigt

Im heutigen Zeitalter der digitalen Nachhaltigkeit müssen Entwickler fest am Steuer sitzen. Die Kontrolle zu behalten gewährleistet eine optimale Ressourcenzuweisung, die direkt mit dem Erfolg einer Anwendung korreliert, und bringt eine größere ökologische Verantwortung mit sich.

Übermäßiger Ressourcenverbrauch ist nicht nur eine Frage verschwendeter Kosten; er führt direkt zu unnötigen CO₂-Emissionen. Durch die sorgfältige Anpassung der Ressourcen an die Wachstumskurve einer Anwendung können Entwickler effiziente, leistungsstarke Anwendungen ohne ökologische Belastungen erstellen. Upsun möchte Entwickler mit dieser doppelten Mission unterstützen: digitales Wachstum fördern und gleichzeitig für Umweltschutz eintreten.

Mit dem Befehl „upsunify“ und der Dokumentation solltest du die für deine Anwendung erforderliche Infrastruktur beschreiben können. Ab der ersten Bereitstellung erfolgt die Ressourcenzuweisung standardmäßig mit Standardressourcen, die jederzeit angepasst werden können.

Volle Kontrolle über die Ressourcenzuweisung

Deine Projektdefinition sollte dann berücksichtigt werden. Du musst noch festlegen, welche Ressourcen für den Betrieb deiner Anwendung verwendet werden sollen, und dies ist die letzte Anforderung. Es handelt sich um einen zweistufigen Prozess, bei dem du deine Infrastruktur in einer YAML-Datei beschreibst und die Ressourcenzuweisung festlegst, um die Kosten zu kontrollieren.

Nehmen wir an, du hast eine backend Anwendung auf Basis von Laravel, eine frontend die NodeJS oder Bun nutzt, sowie eine MySQL database. Wir müssen nun sicherstellen, dass jeder dieser Container von der optimalen Menge an Ressourcen profitiert.

Schauen wir uns einmal an, was hinter den Kulissen passiert, um die Möglichkeiten, die dir nun zur Verfügung stehen, vollständig zu verstehen. Alle dir zur Verfügung stehenden Images verfügen über ein Standardprofil: BALANCED, HIGH_CPU, HIGH_MEMORY, je nachdem, ob du CPU oder Arbeitsspeicher bevorzugst oder ein Gleichgewicht zwischen beiden Anforderungen anstrebst. Dies drückt sich in einem Verhältnis von Arbeitsspeicher pro CPU-Einheit aus.

Images verfügen über einen optimierten Standardprofilwert, der in den meisten Fällen die bevorzugte Wahl ist. Aber wir möchten, dass du das Ruder in der Hand hast. Du kannst den Standardwert schließlich überschreiben und explizit festlegen, welches Profil du verwenden möchtest, indem du die Services-Definition in deiner .upsun/config.yaml Datei.

services:
      database:
        type: mysql:10.6
        container_profile: HIGH_MEMORY

 

Sobald dies definiert ist – oder höchstwahrscheinlich so belassen wird, wie es ist –, legen wir fest, wie viel CPU und damit auch Arbeitsspeicher wir jedem Container zuweisen möchten. Diese Containergröße kann 0,1, 0,25, 0,5, 1, 2 oder 4 betragen. Die mit jeder CPU-Stufe verbundene Speichermenge findest du in der Dokumentation.

Unser Node frontend ist superleicht und benötigt nur 0,1 CPU, also das Minimum. Wir haben viele Verbesserungen an unserem backend (danke, blackfire!), und 0,25 reicht aus, um die Leistung zu erbringen. Unsere Datenbank ist riesig und benötigt mehr Ressourcen, um schnell zu bleiben:    

upsun resources:set --size frontend:0.1,backend:.25,database:1

 

Unser Backend erfordert Redundanz. Geben wir ihm 3 Instanzen:

upsun resources:set --count backend:3

 

Lass uns unsere Konfiguration abschließen, indem wir der backend Anwendung und 2 GB dem database Dienst:

upsun resources:set --disk backend:512,database:2048

 

Ein erneutes Deployment ist nicht nötig (upsun redeploy). Unsere Änderungen wurden bereits berücksichtigt. Das bedeutet auch, dass in Zukunft nur ein paar CLI-Befehle nötig sind, um die zugewiesenen Ressourcen zu erhöhen oder zu verringern.

Stell dir vor, du stehst kurz vor der Einführung eines neuen, spannenden Produkts, das große Menschenmengen auf deine Website locken wird. Ein paar Befehle kurz vor dem „One more thing“-Moment in deiner Keynote sorgen dafür, dass deine Anwendung auch bei intensivem und anhaltendem Datenverkehr stabil läuft und weiterhin Leistung bringt.

Observability auf jeder Ebene

Jedes Upsun-Projekt umfasst eine vollständige Observability-Lösung, die Entwicklern und Operations-Teams die Möglichkeit gibt, ihre Anwendungen zu überwachen, Fehler und Anomalien zu lokalisieren und Probleme proaktiv zu beheben, bevor sie eskalieren.

Zu den Observability-Tools von Upsun gehören:

Dank der Observability auf jeder Ebene können Entwickler datengestützte Entscheidungen treffen und wertvolle Einblicke in das Verhalten ihrer Anwendungen gewinnen, wodurch sie ihre Systeme kontinuierlich optimieren können, um optimale performance und Effizienz zu erzielen.

Git-gesteuerte Infrastruktur

Upsun unterstützt Entwickler nicht nur dabei, die benötigte Infrastruktur in einfachen YAML-Dateien zu beschreiben. Es macht Git auch zur einzigen Quelle der Wahrheit. Insbesondere ist jede in deinem Projekt erstellte Umgebung an Git-Branches gebunden.

Stell dir vor, du möchtest an einem bestimmten Feature für deine Anwendung arbeiten. Du erstellst eine Umgebung basierend auf deiner Produktivumgebung und höchstwahrscheinlich deinem main Zweig. Upsun stellt automatisch einen Klon deiner Anwendung bereit, mit allen zugehörigen Diensten und Daten basierend auf dem letzten verfügbaren backup. Du erhältst sogar eine Entwicklungs-URL, damit du deine Features testen und mit deinem Team zusammenarbeiten kannst.

Es gibt eine Integration mit GitHub und den wichtigsten Drittanbieter-Git-Diensten, die du vielleicht in Betracht ziehen möchtest. Diese Integration ermöglicht es dir, dass Umgebungen jedes Mal automatisch für dich bereitgestellt werden, wenn du Branches erstellst, Pull- oder Merge-Requests durchführst. Das Zusammenführen eines Branches führt automatisch zu einer Neubereitstellung der Zielumgebung. Wie cool ist das denn?

Du hast somit die vollständige Kontrolle über deine Produktions- und Nicht-Produktionsumgebungen. Das gilt auch für die Ressourcenzuweisung. Du kannst entscheiden, die den verschiedenen Containern oder deiner Nicht-Produktionsumgebung zugewiesenen Ressourcen mit demselben upsun resources:set Befehl die Ressourcen für die verschiedenen Container oder deine Nicht-Produktionsumgebung reduzieren, während du die Ressourcenanforderungen deiner Produktionsumgebung hoch hältst.

Web-Entwickler, die Welt gehört euch. Was werdet ihr als Nächstes mit Laravel und Upsun entwickeln?

Zusammenfassend lässt sich sagen, dass Upsun speziell dafür entwickelt wurde, Entwicklern das Beste aus beiden Welten zu bieten: die Möglichkeit, Ressourcen synchron mit den wachsenden Anforderungen ihrer Laravel-Anwendung zu skalieren und gleichzeitig umweltbewusst zu handeln. Die Rolle des Entwicklers war noch nie so entscheidend; du programmiert nicht nur eine Anwendung, sondern gestaltest die Zukunft der digitalen Nachhaltigkeit und performance.

Wir wissen, dass kein Entwicklungsprozess allein bewältigt wird. Es ist ein gemeinsames Unterfangen, das von geteiltem Wissen und gemeinsamer Problemlösung lebt. Deshalb laden wir dich ein, den Dialog fortzusetzen und deine Erfahrungen, Fragen oder Erkenntnisse auf unseren speziellen Social-Media-Kanälen zu teilen.

Werde Teil einer Community, in der Laravel-Entwickler wie du zusammenarbeiten, lernen und gemeinsam wachsen können, um die nächste Generation skalierbarer, entkoppelter und umweltfreundlicher Anwendungen zu entwickeln. Wir können es kaum erwarten, zu erfahren, woran du gerade arbeitest und wie wir dich auf deinem Entwicklungsweg besser unterstützen können.

Lass uns gemeinsam mit Laravel und Upsun alles Mögliche erschaffen und dabei die volle Leistungsfähigkeit unserer Laravel-PaaS nutzen.

Bleiben Sie auf dem Laufenden

Abonnieren Sie unseren monatlichen Newsletter.

Ihr größtes Werk
steht vor der Tür

Kostenloser Test