ホームページ  >  記事  >  バックエンド開発  >  AWS ServerLess アーキテクチャで PHP を実行するにはどうすればよいですか?パート サーバーレスとは​​何ですか?

AWS ServerLess アーキテクチャで PHP を実行するにはどうすればよいですか?パート サーバーレスとは​​何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-07 22:09:02331ブラウズ

AWS の主力サーバーレス サービスである Lambda を使用すると、さまざまなランタイムでコードを実行できます。ただし、PHP は公式の製品説明に明示的に記載されていません。 Lambdas では PHP コードを実行できないということでしょうか?いいえ、そうではありません!

このシリーズ (AWS ユーザー グループ Poitiers での講演から派生したもの) では、サーバーレスとは​​何か、および PHP (お気に入りの言語の場合) を Lambda 上で実行する方法について説明します。

サーバーレスとは​​何ですか?

サーバーレスは、クラウド プロバイダーが顧客のワークロードに割り当てられたリソースを動的に拡張しながら、物理インフラストラクチャ (サーバー、電源冷却) だけでなく、実行ランタイム (パッチ適用など) まで管理するホスティング パラダイムです。

How to run PHP on AWS ServerLess architecture ? Part  What

厳密な意味では、コンピューティングはすべてのリクエストに割り当てられ、「ゼロスケール」の料金モデル (時間単位でリソースが支払われることはなく、実際の需要にのみ比例して支払われる) につながり、同時に高い組み込みの機能を提供します。 -可用性。

これにより、クラウドの他の利点がさらに高まります。主に、すべてに API が付属し、自動化が可能になるという事実です。

これらの利点を合計すると、実質的に無料の機能ブランチの一時的な環境が可能になり、開発者の生産性とリードタイムが向上します。

How to run PHP on AWS ServerLess architecture ? Part  What

サーバーレスはコンピューティングだけを意味するものではありません。

サーバーレスエコシステムにはたくさんのソリューションがあります。 2014 年にサーバーレス コンピューティング (Lambda) が登場したとき、マネージド キュー (SQS) は 10 年前から存在し、S3 は 8 年前から存在していました。

How to run PHP on AWS ServerLess architecture ? Part  What

上のスライドでは、Aurora はゼロにスケールしないため、サーバーレスの厳密な定義と一致しないことに注意してください (v1 はゼロにスケールされますが、開始に数分かかる可能性があります。v2 では、データベースがクエリを処理できるようにするには、ライター インスタンスとリーダー インスタンスの両方に少なくとも 0.5 ACU が必要です。

サーバーレス サービスのみを含む Web アプリケーションをホストするための一般的なアーキテクチャを以下に示します。このようなアプリケーションのホスティング費用は、限られた数のユーザーであれば年間 1 ドル未満になる可能性があります。

How to run PHP on AWS ServerLess architecture ? Part  What

サーバーレスはマイクロサービス専用ですか?

はい、そしていいえです。これはマイクロサービスを念頭に置いて設計されていますが、モノリシック アーキテクチャをデプロイすることもできます (新しい環境が起動されるたびに長時間実行される起動シーケンスがない限り)。

How to run PHP on AWS ServerLess architecture ? Part  What

マイクロサービスの一般的な課題を解決するサーバーレス オプション: オーケストレーションとコレオグラフィー

マイクロサービス アーキテクチャにより、アプリケーション コンポーネント間の結合を減らすことができます (異なる言語を使用し、非同期パターンを通じて、インフラストラクチャ レベルの結合を削除することでスケーラビリティを向上させます)。

ただし、複数の単一目的関数がある場合、ビジネス ロジックの実装には関数間の調整が必要になる場合があります。この調整は 2 つの基本パターンを使用して実装できます。

  • オーケストレーション: このパターンでは、命令型の方法で関数の呼び出しを制御します。これは、機能が単一のサービス チームによって提供される場合に、ビジネス ドメインでよく使用されます。これに対するサーバーレスのアプローチは、ワークフロー/ステートマシンである AWS StepFunction です。ここに、StepFunction を使用して Lambda 関数を調整する方法に関する優れたチュートリアルがあります。
  • コレオグラフィー: このパターンは、非常に限定された結合を維持するために、別個のサービス チームが存在するクロスビジネス ドメインのシナリオでより適切です。イベント バスを使用すると、アプリケーションはイベントをプッシュしたり、イベントをサブスクライブしたりできます。複数のコンシューマが同じイベントをサブスクライブでき、各コンシューマは必要なイベントをフィルタリングできます。このための中核となる AWS サービスは EventBridge です。それについて私が書いたブログ投稿をここに載せます。

Lambda について知る

Lambda は AWS の Function-as-a-Service ソリューションです。 Lambda を使用すると、インスタンスのデプロイや OS やランタイムのパッチを気にすることなく、コードをデプロイして即座に高可用性とスケーラビリティを実現できます。

Lambda は、同期呼び出し (API Gateway、Application Load Balancer、または Lambda 関数 URL 経由) または非同期呼び出し (AWS 生成イベントまたはユーザー生成イベントに応答) で使用できます。

Lorsque vous déployez un Lambda, vous choisissez la quantité de mémoire dont il a besoin pour fonctionner. Le processeur alloué est proportionnel. Vous payez ensuite en fonction du nombre de millisecondes utilisées. Par exemple, un Lambda de 128 Mo coûte 1,7*10^-9$/ms. Cela représente 164 heures de calcul avant de dépenser votre premier dollar.

How to run PHP on AWS ServerLess architecture ? Part  What

Et la balance Lambda. Rapide. Beaucoup plus rapide qu'autre chose. Fini les erreurs 429 (ou 500 si votre charge de travail n'est pas bien protégée) dues à une forte variation du trafic.

How to run PHP on AWS ServerLess architecture ? Part  What

Résoudre le principal défi avec LambdaLiths : les démarrages à froid

Les environnements d'exécution Lambda ne traitent qu'une seule requête à un moment donné et sont réutilisés pour les requêtes ultérieures. Cela signifie que, pour qu'une fonction Lambda évolue, ou lorsqu'une fonction Lambda n'a pas été invoquée depuis un certain temps, Lambda devra démarrer un nouvel environnement d'exécution : c'est un démarrage à froid.

Si les démarrages à froid sont préjudiciables à votre application (encore une fois, c'est probablement mieux que tout le trafic soit lent ou atteigne 429), alors il existe quelques options. AWS propose un article intéressant sur l'utilisation des réchauffeurs Lambda ou la définition de la concurrence provisionnée pour y remédier. En plus de cela, pour les utilisateurs Java, les fonctionnalités Lambda SnapStart permettent d'offrir de bonnes performances de démarrage à froid, en prenant un instantané de la microVM après l'initialisation de la JVM.

Qu'en est-il du support PHP ?

La FAQ officielle du produit indique qu'il "prend en charge nativement le code Java, Go, PowerShell, Node.js, C#, Python et Ruby, et fournit une API d'exécution qui vous permet d'utiliser n'importe quel langage de programmation supplémentaire pour créer vos fonctions."

Dans les prochains articles de blog de cette série, nous expliquerons comment exécuter PHP sur Lambda en tirant parti de deux frameworks distincts, Bref et Lambda Web Adaptor, et comparerons les possibilités offertes par chacun d'eux.

以上がAWS ServerLess アーキテクチャで PHP を実行するにはどうすればよいですか?パート サーバーレスとは​​何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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