目次
セッション
logs
ホームページ バックエンド開発 PHPチュートリアル LaravelアプリケーションをAWSサーバーレスに移行した理由(および時間とお金を節約できる理由)

LaravelアプリケーションをAWSサーバーレスに移行した理由(および時間とお金を節約できる理由)

Jan 29, 2025 am 08:19 AM

この記事では、AWS ServerlessにLaravelアプリケーションを展開することの利点を調査し、従来のEC2ホスティングとは対照的です。 著者は、リソース集約型のEC2セットアップから、費用対効果の高いスケーラブルなサーバーレスアーキテクチャに移行した経験を共有しています。


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


ネタバレ:それはお金を節約するだけではありませんが、私の財布は不平を言っていません。 これを想像してみてください:あなたは素晴らしいLaravelアプリケーションを構築しました - あなたの傑作、バターをカットすることができる非常に便利な機能を備えたデジタルスイスアーミーナイフ...またはユーザーのフィードバック。 しかし、キャッチがあります。毎月、あなたは十分に活用されていないEC2インスタンスにお金を払っています。スケーリングは、ハリケーンにクルーズ船を駐車するように感じます。 おなじみの音?それは私にしました。

3年前、私はほとんどの開発者がクレイジーと呼ぶことをしました。私はPHPをAWS Lambdaに展開しました。 「PHP?サーバーレスで?それはピザにパイナップルを置くようなものです!」と彼らは言いました
しかし、ここに私は3年後、誇らしげにパイナップルピザを食べています。サーバーレスのlaravelがあなたが必要としていなかったクラウドのアップグレードである理由を教えてください。

伝統的なLaravelホスティングの問題


(または:私のEC2インスタンスが実存的な危機を抱えていた理由)サーバーレスの前に、私のLaravelアプリケーションはEC2に存在していました。初心者の場合、EC2はAmazonのバージョンの仮想プライベートサーバーであり、コードを実行するためにマシンのスライスをレンタルします。いいですね?現実が不正 a)最初:存在のコスト

EC2インスタンスを実行することは、運転したい場合に備えて、24時間年中無休で走るテスラを所有するようなものです。私のアプリケーションはいつも忙しくなかったが、それはメーターを止めなかった。 EC2インスタンス、ロードバランサー、共有ストレージの間で、私はほとんどの時間をアイドル状態に費やしたサーバースタックに月額約110ドルを費やしていました。私の財布?タイタニックのように沈んだ。

私は知っている、それは物事の壮大な計画ではなく、ソロ開発者/起業家として、あらゆるドルがカウントされます。

b)その後:悪夢のスケーリング

composer update ec2インスタンスは、すべてに過剰に反応する友人のようなものです。

トラフィックスパイク?

「私は今クラッシュしています、ありがとう!」

トラフィックはありませんか? 「私はまだあなたのお金を燃やします!」

自動焦点の管理は、魚にジャグリングを教えるように感じましたが、それは何のコストですか?スケーリンググループを手動で調整し、ロードバランサーを構成し、過度にプロビジョンが私が適用したことのない2番目の仕事のように感じないように祈る。

c)そして最後に:devops、無給インターン

ララヴェルの開発にはsysadminの責任があるとは言わなかった:
    • セキュリティパッチの適用。
    • 午前3時にnginx/apache構成のデバッグ。
    • 今回は彼らが働くことを望んで、sudoコマンドに甘いものをささやく。
    私はこの人生にサインアップしませんでした。


    それは私が代替案を探求し始めたときであり、サーバーレスはこれらの頭痛の完璧な解決策として際立っていました。


    AWSサーバーレス:クラウドでのPHPの復活
  1. 神話を明確にしましょう。サーバーレスは「サーバーなし」を意味するものではありません。それは、サーバーが他の誰かの問題であることを意味します。この場合、AWSは私が実際に楽しんでいるものに焦点を合わせながら、重い持ち上げを処理します:コーディング。
  2. a)ラムダ:イベント主導の魔術師

aws lambdaは、必要なときにのみ表示されるスーパーヒーローのようなものです。イベントに応じてコードを実行します。HTTPリクエスト、SQSメッセージ、スケジュールされたタスク、名前を付けます。そして、仕事が終わったら、開発者のミートアップで無料のピザよりも速く消えます。

アイドルコストなし

:実行時間のみを支払います(ミリ秒で測定)。
  • 自動スケーリングマジック:100,000のリクエストのスパイクを取得しましたか?ラムダは汗をかくことなく(または銀行口座を空にする)ことなくそれを処理します。
  • デザインによるステートレス:それは毎回新たなスタートのようなもので、モジュール式の考えを強いるデザインです。
  • b)マネージドサービス:Unsung Heroes サーバーレスはラムダだけではなく、生態系です。 AWSは、DIYインフラストラクチャを「機能するだけ」のマネージドサービスに置き換えます:

データベース

:sql loversのaurora serverless(mysql/postgres)などのオプション

    s3
  • :ディスクのスペースが不足することを心配せずにファイルを保存します。
  • sqs
  • :長期にわたる仕事を切り離し、非同期に処理します。
  • c)PHPパラドックス
  • 私はそれを認めます:phpはサーバーレスのために生まれた
  • セッション:mysqlやredisなどの外部データベースに移動します。
  • ファイルストレージ:Laravelのファサードを使用して、すべてのストレージ操作をS3にリダイレクトします。 Storageキュー管理
  • :非同期タスク実行のデフォルトドライバーとしてSQSを設定します。
  • キャッシュ:ローカルストレージの代わりにRedisやDynamodbなどの外部サービスを活用してください。
  • ブートタイムの最適化:脂肪をトリミングすることでコールドスタートを最小限に抑える(未使用の依存関係)。
  • 環境変数
  • ファイルをAWS Secrets Managerまたはパラメーターストアに置き換えて、集中的で安全な構成管理。
  • サーバーレスは、サーバーをLambda関数に置き換えるだけではありません。それはあなたのアーキテクチャを再考することです。あなたが構築に焦点を合わせながら、AWSが運用上の痛みのポイントを処理することです。 .env

サーバーレスがLaravelの完全な潜在能力のロックを解除する方法

それで、サーバーレスのlaravelは実際にその約束を届けますか?

サーバーレスは単なる流行語ではなく、変革的な変化です。サーバーレス上のLaravelの美しさは、従来のホスティングの弱点に対処しながら、より速く、よりスケーラブルで、費用対効果の高いソリューションを可能にする能力にあります。しかし、本当の魔法は、これらの利点がどのように組み合わされるかを掘り下げるときに起こります。それを分解しましょう。
  1. a)コールドスタート:神話を現実と分離します

    Lambdaが新しいインスタンスを初期化すると、

    coldが発生します。昼寝から目覚めるPHPと考えてください。批評家はそれらを黙示録のように扱いますが、それらは管理可能です:

リアリティ

:典型的なコールドはPHPララヴェルから約3〜5秒です。

solutions

  • laravel octane :リクエスト間でアプリケーションを生かし続け、スタートアップ時間を短縮します。後続のリクエストは、約200m以下で処理されます。
  • プロビジョニングされた同時性:クリティカルエンドポイントの就学前インスタンス(追加費用がかかりますが、キーエンドポイントには価値があります)
    • ほとんどのアプリケーションでは、交通量の少ない最中にサブ3秒の遅延が許容されます。ほとんどのユーザーは、特にラムダが「暖かく」と留まる交通スパイク中に、コールドスタートに気付くことはありません。 b)痛みのないスケーリング 従来のホスティングでのスケーリングは、しばしば終わりのない戦いのように感じられます。サーバーレスでは、スケーリングが楽になります。突然の交通量の増加中に、自動透視ルールを微調整したり、指を交差させたりしません。 AWS Lambdaは当て推量を削除し、デフォルトで水平方向にスケーリングします 例は次のとおりです
      • シナリオ:あなたのアプリケーションはバイラルになりますか?イェーイ!
      • 古いEC2セットアップ:レイテンシを経験し始め、急いでAWSにログインし、インスタンスの数を手動で調整し、最高のために祈りますか?ああ、そして可用性ゾーン全体でそれらのインスタンスのバランスを適切にバランスさせることを忘れないでください。
      • 新しいLambdaセットアップ:AWSは、指を持ち上げることなく何千もの同時リクエストを処理し、必要な数のインスタンスを自動的に作成します。ポップコーンをつかんで、NetflixシリーズのようなCloudWatchメトリックを見ますか?
      これは単なる利便性ではなく、安心です。アプリケーションの成功を祝うことに焦点を合わせている間、ラムダは重い持ち上げを行います。そして、最高の部分?使用するコンピューティング時間のみを支払うだけでなく、「念のため」が必要なアイドル容量には支払います。

      c)コスト効率:MVP

      サーバーレスはお金を節約するだけでなく、消費するものだけに支払うだけで食べ放題のビュッフェを持っているようなものです。

      私の古いEC2セットアップ:

      〜$ 110
        /月。
      • 4x t3.Small EC2インスタンス:$ 60.00 1xロードバランサー:
      • $ 16.40
      • 1x EBS(EC2インスタンス間の共有ストレージ):
      • $ 7.80 1x rds mysqlインスタンス(db.t4g.medium):〜$ 26.00
      • lambda:
      • 〜$ 34/month(60%節約!)
    • lambda、APIゲートウェイ〜2.5mリクエスト(〜500ms / 512MBメモリ) /月:
    • $ 4.80 マネージドサービス(S3、SQS、CloudWatch):〜$ 2.90 rds mysqlインスタンス(db.t4g.medium):
    • 〜$ 26.00
    • 要するに、サーバーレスはお金を節約するだけでなく、精神的な帯域幅を解放します。過度のプロビジョニングを心配することを無駄にするリソースが少ないほど、驚くべきものを作ることに集中することができます。

      この時点で、私はまだデータベースエンジンとしてMySQLインスタンスを使用していました。将来の投稿では、コストをさらに削減するためにDynamodbに移住することを探求します。

      d)メンテナンスの自由:運用悪夢に別れを告げる

      サーバーレスは、サーバーメンテナンスの束縛から私を解放しました。方法は次のとおりです

      これ以上のマニュアルアップデート

      :AWSは、セキュリティパッチ、OSの更新、ランタイムの改善を処理します。つまり、常に安全で最新のインフラストラクチャで実行されています。

        簡略化された構成
      • :API GatewayやS3などのサービスを使用すると、Nginx構成とカスタム展開の管理の複雑さが過去のものになります。 弾性容量
      • :使用されていないサーバーリソースの過払いや、トラフィックスパイク中にさらにプロビジョニングするためにスクランブルすることを忘れてください。ラムダは自動的にスケールして需要を満たし、アイドル時に請求を停止します。
      • 消防ではなく機能に焦点を当てている:以前にパッチの適用や生産の問題のデバッグに費やした時間は、機能の構築とユーザーエクスペリエンスの改善に投資されています。
      • サーバーレスはメンテナンスを減らすだけでなく、コーディングを防ぐことができる運用的な注意散漫を排除します。
      • しかし、Laravelは誰にとってもサーバーレスですか?
      • サーバーレスのlaravelと同様に、
      革新的なのは、普遍的な解決策ではありません。一部のアプリケーションでは、サーバーレスのステートレスとイベント主導の性質は、夢が実現するように見えるかもしれません。他の人にとっては、正方形のペグを丸い穴に取り付けようとするように感じるかもしれません。サーバーレスの時流にジャンプする前に、一歩下がって、それがあなたのプロジェクトに適しているかどうかを評価しましょう。

      a)ステートレスの性質:両刃の剣

      Laravelは、ファイルをローカルに保存したり、セッションをファイルシステムに保存するなど、インタラクション間で情報を保存する操作が大好きです。サーバーレスに移動するには、変更する必要があります:
    1. セッション

      :データベース(mysql/postgres)またはredisを使用します。これ以上ファイルシステムの依存関係はありません
    ファイル

    :ファイルのアップロードをs3にリダイレクトするか、laravelを完全に避けてS3の事前署名URLを使用します。

    logs

    :laravelを構成して、それらをCloudWatchにストリーミングします。

      構成
    • 変数をAWS Secrets Managerまたは集中管理のパラメーターストアに移動します。
    • キュー
    • :スケーラブルなキューとメッセージの処理のために、ジョブをAWS SQSに移行します。
    • b)ベンダーのロックインの考慮事項
    • AWSサービスは魔法ですが、独自のものでもあります
      • SQSからRedisキューに移行したいですか?コードを書き換える準備をします
      • ラムダからドッカーに引っ越したいですか?コーヒーをつかむ:それは長い夜になるでしょう。
      c)ServerLessを選択しない場合

      サーバーレスは、すべてのワークロードの銀の弾丸ではありません。次の場合はそれを避けてください:

      • websockets:API Gateway WebSocket APIやサードパーティのツールなどのサービスで達成可能ですが、複雑さを追加します。 あなたのアプリケーションには
      • 重いコンピューティングロードがあります
      • :AI/mlの推論やビデオエンコーディングなどのタスクは、ラムダの15分の時間制限にヒットする可能性があります。 あなたはステートフルサービスに依存しています
      • :永続的なディスクまたはサーバー状態がリファクタリングに費用がかかると仮定するアプリケーション。
      次は何ですか?
      1. ServerLessのLaravelは、アプリケーションの構築と展開方法を変革する可能性がありますが、実際の魔法は実装にあります。跳躍して、Laravelアプリケーションにサーバーレストリートメントを与える準備はできましたか?パート2にご期待ください。このアーキテクチャを実現するための正確な手順をご案内します。

      2. あなたへの質問
      :サーバーレスに対するあなたの最大の恐怖は何ですか?以下で共有してください。パート2のトップ3に対処します!

以上がLaravelアプリケーションをAWSサーバーレスに移行した理由(および時間とお金を節約できる理由)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? Apr 06, 2025 am 12:02 AM

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

PHP 8.1の列挙(列挙)とは何ですか? PHP 8.1の列挙(列挙)とは何ですか? Apr 03, 2025 am 12:05 AM

php8.1の列挙関数は、指定された定数を定義することにより、コードの明確さとタイプの安全性を高めます。 1)列挙は、整数、文字列、またはオブジェクトであり、コードの読みやすさとタイプの安全性を向上させることができます。 2)列挙はクラスに基づいており、トラバーサルや反射などのオブジェクト指向の機能をサポートします。 3)列挙を比較と割り当てに使用して、タイプの安全性を確保できます。 4)列挙は、複雑なロジックを実装するためのメソッドの追加をサポートします。 5)厳密なタイプのチェックとエラー処理は、一般的なエラーを回避できます。 6)列挙は魔法の価値を低下させ、保守性を向上させますが、パフォーマンスの最適化に注意してください。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

phpstormでCLIモードをデバッグする方法は? phpstormでCLIモードをデバッグする方法は? Apr 01, 2025 pm 02:57 PM

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

See all articles