Heim >Backend-Entwicklung >PHP-Tutorial >Warum ich meine Laravel -Anwendung auf AWS Serverless migrierte (und warum ich Ihnen Zeit und Geld sparen könnte)

Warum ich meine Laravel -Anwendung auf AWS Serverless migrierte (und warum ich Ihnen Zeit und Geld sparen könnte)

DDD
DDDOriginal
2025-01-29 08:19:09948Durchsuche

In diesem Artikel werden die Vorteile der Bereitstellung einer Laravel -Anwendung auf AWS Serverless untersucht und diese mit herkömmlichem EC2 -Hosting kontrastiert. Der Autor teilt seine Erfahrung mit, die von einer ressourcenintensiven EC2-Setup zu einer kostengünstigen und skalierbaren serverlosen Architektur migriert.


Por qué Migré Mi Aplicación Laravel a AWS Serverless (Y Por Qué Podría Ahorrarte Tiempo y Dinero)


Spoiler : Es geht nicht nur darum, Geld zu sparen - obwohl sich meine Brieftasche nicht beschwert.


Stellen Sie sich vor, Sie haben eine brillante Laravel -Anwendung gebaut - Ihr Meisterwerk, ein digitales Schweizer Armeemesser mit Funktionen, die so nützlich sind, dass sie Butter ... oder Benutzer -Feedback schneiden können. Aber es gibt einen Haken. Jeden Monat zahlen Sie für eine nicht genutzte EC2 -Instanz. Skalierung fühlt sich wie ein Kreuzfahrtschiff in einem Hurrikan an.

sich vertraut klingen? Es hat mir angetan.

Vor drei Jahren habe ich das getan, was die meisten Entwickler als verrückt bezeichnen würden: Ich habe PHP zu AWS Lambda eingesetzt. „PHP? Auf serverlos? Das ist wie Ananas auf Pizza! “, Sagten sie.

Aber hier bin ich drei Jahre später stolz meine Ananas -Pizza. Lassen Sie mich Ihnen sagen, warum Laravel auf Serverless das Cloud -Upgrade ist, von dem Sie nicht wussten, dass Sie Sie benötigen.


  1. Das traditionelle Laravel -Hosting -Problem

(oder: Warum meine EC2 -Instanzen eine existenzielle Krise hatten)

Vor serverlos wohnte meine Laravel -Anwendung auf EC2. Für die Uneingeweihten ist EC2 die Version eines virtuellen privaten Servers von Amazon, auf dem Sie eine Scheibe eines Computers mieten, um Ihren Code auszuführen. Klingt großartig, oder? Bis die Realität schwieriger ist als ein Schurken composer update.

a) Erstens: Die Kosten der Existenz

Ausführen einer EC2 -Instanz ist wie der Besitz eines Tesla, den Sie rund um die Uhr laufen lassen, nur für den Fall, dass Sie fahren möchten. Meine Bewerbung war nicht immer beschäftigt, aber das hat das Messgerät nicht aufgehalten. Zwischen EC2 -Instanzen, Ladungsbalancern und dem gemeinsamen Speicher verbrachte ich rund 110 US -Dollar pro Monat für einen Serverstapel, der die meiste Zeit im Leerlauf verbrachte. Meine Brieftasche? Gesunken wie der Titanic.

Ich weiß, es ist nicht viel im großen Schema der Dinge, aber als Solo -Entwickler/Unternehmer zählt jeder Dollar.

b) Dann: Skalierung von Albträumen

EC2 -Instanzen sind wie der Freund, der alles überreagiert.

  • Verkehrspike? "Ich stürze jetzt ab, danke!"
  • kein Verkehr? "Ich werde immer noch dein Geld verbrennen!"

Das Management von Autoscaling fühlte sich an, als würde man einen Fisch zum Jonglieren beibringen - possibler, aber zu welchem ​​Preis? Manuell Anpassung von Skalierungsgruppen, Konfigurieren von Lastbalancern und Beten, dass Sie nicht zu einer Überproduktion anfühlten, fühlte sich wie ein zweiter Job an, den ich nie beworben habe.

c) und schließlich: DevOps, der unbezahlte Praktikant

Niemand hat mir gesagt, dass Laravel Development mit einer Seite der Sysadmin -Verantwortlichkeiten kam:

  • Sicherheits Patches anwenden.
  • Debugging nginx/Apache -Konfigurationen bei 3 Uhr morgens
  • süße Nothings zu sudo Befehle flüstern, in der Hoffnung, dass sie diesmal arbeiten würden.

Ich habe mich nicht für dieses Leben angemeldet.


, als ich anfing, Alternativen zu erkunden, und serverless war die perfekte Lösung für diese Kopfschmerzen.


  1. aws serverless: Das Wiederaufleben von PHP in der Cloud

Lassen Sie uns einen Mythos klären: Serverlos bedeutet nicht "keine Server". Es bedeutet nur, dass die Server das Problem eines anderen sind. In diesem Fall kümmert sich AWS mit dem schweren Heben, während ich mich auf das konzentriere, was ich tatsächlich genieße: codieren.

a) lambda: der ereignisgesteuerte Zauberer

AWS Lambda ist wie ein Superheld, der nur auftaucht, wenn Sie sie brauchen. Es führt Ihren Code als Antwort auf Ereignisse aus - HTTP -Anforderungen, SQS -Nachrichten, geplante Aufgaben, Sie nennen es. Und wenn der Job erledigt ist, verschwindet es schneller als kostenlose Pizza bei einem Entwicklertreffen.
  • Keine Leerlaufkosten
  • : Sie zahlen nur für die Ausführungszeit (gemessen in Millisekunden).
  • Automatische Skalierungsmagie
  • : Haben Sie einen Anstieg von 100.000 Anfragen? Lambda behandelt es, ohne einen Schwitzen zu bringen (oder Ihr Bankkonto zu leeren).
  • Staatellos nach Design
  • : Es ist wie ein Neuanfang, ein Design, das Sie modular zum Nachdenken zwingt.

b) Managed Services: Die unbesungenen Helden

serverless ist nicht nur Lambda - es ist ein Ökosystem. AWS ersetzt Ihre DIY -Infrastruktur durch verwaltete Dienste, die "nur funktionieren":
  • Datenbank
  • : Optionen wie Aurora Serverless (MySQL/Postgres) für SQL -Liebhaber.
  • s3
  • : Speichern Sie Ihre Dateien, ohne sich Sorgen zu machen, dass der Speicherplatz ausgeht.
  • sqs
  • : Entkassungsläufige Jobs und verarbeiten Sie sie asynchron.

c) Das PHP -Paradox

Ich gebe es zu: PHP war nicht für serverless

geboren . Es ist, als würde man einen Fisch bitten, auf einen Baum zu klettern - es wird sich beschweren, aber es wird es irgendwann tun. Laravel, traditionell auf PHP-FPM angewiesen, brauchte einige Anpassungen, um in Lambdas kurzfristiger Welt zu gedeihen:
  • Sitzungen : Verschieben Sie sie in eine externe Datenbank wie MySQL oder Redis.
  • Dateispeicher : Alle Speichervorgänge mit Laravels Storage Fassade auf S3 umleiten.
  • Warteschlangenverwaltung : SQS als Standardtreiber für eine asynchrone Aufgabenausführung konfigurieren.
  • Caching : Nutzen Sie externe Dienste wie Redis oder DynamoDB anstelle von lokalem Speicher.
  • Boot -Zeitoptimierung : Die Kälte startet mit dem Trimmen des Fetts (nicht verwendete Abhängigkeiten).
  • Umgebungsvariablen : Ersetzen Sie .env Dateien mit AWS Secrets Manager oder Parameterspeicher für eine zentrale und sichere Konfigurationsverwaltung.

Denken Sie daran, serverless geht es nicht nur darum, Server durch Lambda -Funktionen zu ersetzen. Es geht darum, Ihre Architektur zu überdenken - wenn Sie AWS mit den operativen Schmerzpunkten beziehen, während Sie sich auf das Aufbau konzentrieren.


  1. Wie serverloser Laravels volles Potenzial

    freischaltet

liefert Laravel on serverless tatsächlich seine Versprechen?

serverless ist nicht nur ein Schlagwort, sondern eine transformative Verschiebung. Die Schönheit von Laravel auf serverloser Ligeler liegt in seiner Fähigkeit, die Schwächen des traditionellen Hostings zu beheben und gleichzeitig schnellere, skalierbare und kostengünstigere Lösungen zu ermöglichen. Aber die wirkliche Magie geschieht, wenn Sie sich mit der Kombination dieser Vorteile befassen. Lassen Sie es uns aufschlüsseln.

a) Kälte beginnt: Mythos von Realität trennen

Erkältung beginnt, wenn Lambda eine neue Instanz initialisiert. Betrachten Sie es als PHP, das aus einem Nickerchen aufwacht. Kritiker behandeln sie wie die Apokalypse, aber sie sind überschaubar:
  • Reality
  • : Typische Kälte beginnt mit Php Laravel sind ca. ~ 3-5 Sekunden.
  • Lösungen
      :
    • Laravel Octane
    • : Halten Sie die Anwendung zwischen Anfragen am Leben und reduzieren die Startzeiten. Nachfolgende Anforderungen werden in ~ 200 ms oder weniger verarbeitet.
    • Vorbereitete Parallelität : AWS-Vorwarde-Instanzen für kritische Endpunkte (kostet extra, aber für wichtige Endpunkte lohnt sich)
    • .

Für die meisten Anwendungen sind Verzögerungen bei Sub-3-Sekunden bei geringem Verkehr akzeptabel. Die meisten Benutzer bemerken keinen kalten Start, besonders bei Verkehrsspitzen, wenn Lambda "warm bleibt".

b) schmerzloser Skalierung

Skalierung im traditionellen Hosting fühlt sich oft wie ein unendlicher Kampf an. Mit serverloser wird die Skalierung mühelos: Keine Optimierungen mehr Autoscaling -Regeln oder Überqueren der Finger während eines plötzlichen Verkehrsaufzeigs. AWS Lambda entfernt die Vermutung und skaliert standardmäßig horizontal.

Hier ist ein Beispiel:
  • Szenario : Ihre Anwendung wird viral? yay!
  • Altes EC2 -Setup : Sie erleben eine Latenz, eilen, um sich in AWS anzumelden, die Anzahl der Instanzen manuell anzupassen und für das Beste zu beten? Oh, und vergessen Sie nicht, diese Instanzen über Verfügbarkeitszonen hinweg ordnungsgemäß auszugleichen.
  • Neues Lambda -Setup : AWS erstellt automatisch so viele Instanzen wie nötig und bearbeitet Tausende von gleichzeitigen Anfragen, ohne dass Sie einen Finger anheben. Sie schnappen sich Popcorn und sehen sich CloudWatch -Metriken wie eine Netflix -Serie an?

Das ist nicht nur Bequemlichkeit, sondern auch die Beruhigung. Während Sie sich darauf konzentrieren, den Erfolg Ihrer Anwendung zu feiern, macht Lambda das schwere Heben. Und das Beste daran? Sie zahlen nur für die Rechenzeit, die Sie verwenden, nicht für die Leerlaufkapazität, die Sie möglicherweise benötigen. "

c) Kosteneffizienz: MVP

serverless spart nicht nur Geld, sondern auch ein All-you-can-eat-Buffet, in dem Sie nur für das bezahlen, was Sie konsumieren.

    mein altes EC2 -Setup:
  • ~ $ 110 /Monat.
      4x T3.Small EC2 -Instanzen:
    • $ 60.00
    • 1x Lastausgleich:
    • $ 16.40
    • 1x EBS (gemeinsamer Speicher zwischen EC2 -Instanzen):
    • $ 7.80
    • 1x RDS MySQL Instance (db.t4g.medium):
    • ~ $ 26.00
  • lambda:
  • ~ $ 34 /monat (ein 60% -Ersparnis!) .
      lambda, API -Gateway ~ 2,5 m Anforderungen (~ 500 ms / 512MB Speicher) / Monat:
    • $ 4,80
    • verwaltete Dienste (S3, SQS, CloudWatch):
    • ~ $ 2,90
    • rds mySQL Instance (db.t4g.medium):
    • ~ $ 26.00

Kurz gesagt, serverlos spart nicht nur Geld, sondern die mentale Bandbreite frei. Je weniger Ressourcen ich damit verschwende, mir Sorgen um die Überproduktion zu machen, desto mehr kann ich mich darauf konzentrieren, etwas Erstaunliches zu bauen.

Zu diesem Zeitpunkt habe ich immer noch eine MySQL -Instanz als meine Datenbank -Engine verwendet. Zukünftige Beiträge werden die Migration zu DynamoDB untersuchen, um die Kosten weiter zu senken.

d) Wartungsfreiheit: Verabschieden Sie sich von operativen Albträumen

serverlos befreit mich von den Fesseln der Serverwartung. So wie:
  • Keine manuellen Updates mehr
  • : AWS verarbeitet Sicherheitspatches, Betriebssystem-Updates und Laufzeitverbesserungen, was bedeutet, dass Sie immer auf sicheren und aktuellen Infrastrukturen ausführen.
  • vereinfachte Konfigurationen : Mit Diensten wie API Gateway und S3 gehört die Komplexität der Verwaltung von Nginx -Konfigurationen und benutzerdefinierten Bereitstellungen der Vergangenheit an.
  • elastische Kapazität : Vergessen Sie die Überzahlung für nicht verwendete Serverressourcen oder das Streben, mehr während der Verkehrsspikes vorzubereiten. Lambda skaliert automatisch, um die Nachfrage zu befriedigen, und stoppt die Abrechnung im Leerlauf.
  • Fokus auf Funktionen, nicht auf Feuerwehr : Die Zeit, die ich zuvor für die Anwendung von Patches oder Debugging -Produktionsproblemen verbracht habe, wird jetzt in das Erstellen von Funktionen und die Verbesserung der Benutzererfahrung investiert.

serverless reduziert nicht nur die Wartung, sondern beseitigt die operativen Ablenkungen, die Sie vom Codieren abhalten.


  1. Aber ist Laravel serverlos für alle?

So revolutionär wie Laravel auf Serverless ist, es ist keine universelle Lösung. Für einige Anwendungen scheint die staatenlose und ereignisorientierte Natur von Serverless ein wahr gewordener Traum zu sein. Für andere könnte es sich anfühlen, als würde man versuchen, einen quadratischen Stift in ein rundes Loch zu stecken. Bevor Sie auf den serverlosen Zug springen, treten wir zurück und beurteilen Sie, ob es für Ihr Projekt richtig ist.

a) Die zustandslose Natur: Ein zweischneidiges Schwert

Laravel liebt Vorgänge, die Informationen zwischen Interaktionen beibehalten, z. B. das Speichern von Dateien lokal und speichern Sitzungen im Dateisystem. Um serverlos zu gehen, müssen Sie sich ändern:
  • Sitzungen
  • : Verwenden Sie Datenbanken (MySQL/Postgres) oder Redis; Keine Abhängigkeit des Dateisystems mehr.
  • Dateien
  • : Datei-Uploads auf S3 umleiten oder Laravel insgesamt vermeiden und S3 vorgewiesene URLs verwenden.
  • Protokolle
  • : Konfigurieren Sie Laravel, um sie auf CloudWatch zu streamen.
  • Konfiguration .env: Verschieben
  • Variablen in AWS Secrets Manager oder Parameterspeicher für die zentralisierte Verwaltung.
  • Warteschlangen
  • : Migrieren Sie Jobs in AWS SQS für skalierbare Warteschlangen und Nachrichtenhandhabung.

b) Überlegungen zur Verkäufersperrung

AWS -Dienste sind magisch, aber sie sind auch proprietär:
  • Möchten Sie von SQS zu Roten Warteschlangen migrieren? Bereiten Sie sich darauf vor, Code neu zu schreiben.
  • Möchten Sie von Lambda nach Docker wechseln? Nimm einen Kaffee: Es wird eine lange Nacht.

c) Wenn nicht serverloser

auswählt

serverless ist keine Silberkugel für alle Workloads. Vermeiden Sie es, wenn:

  • Sie benötigen WebSockets : Während Dienste wie API Gateway WebSocket-APIs oder Tools von Drittanbietern wie geschickt erreichbar sind, fügt es Komplexität hinzu.
  • Ihre Anwendung hat schwere Berechnung ladet : Aufgaben wie AI/ML-Inferenz oder Videocodierung können auf Lambdas 15-minütiger Zeitlimit auftreten.
  • Sie sind auf Stateful Services : Anwendungen an, die annehmen

  1. Was kommt als nächstes?

laravel on serverless hat das Potenzial, die Erstellung und Bereitstellung von Anwendungen zu verändern, aber die wirkliche Magie ist in der Implementierung. Bereit, den Sprung zu machen und Ihrer Laravel -Anwendung die serverlose Behandlung zu geben? Bleiben Sie auf Teil 2 dran, wo ich Sie durch die genauen Schritte führen werde, um diese Architektur zum Leben zu erwecken.


Eine Frage für Sie : Was ist Ihre größte Angst vor Serverless? Teile es unten und ich werde die Top 3 in Teil 2 ansprechen!

Das obige ist der detaillierte Inhalt vonWarum ich meine Laravel -Anwendung auf AWS Serverless migrierte (und warum ich Ihnen Zeit und Geld sparen könnte). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn