Amazon Web Services ブログ

Category: AWS PHP Development

サーバーレス LAMP スタック – Part 3: Webサーバーの置き換え

本投稿は AWS サーバーレス アプリケーションのシニアデベロッパーアドボケートである Benjamin Smith による寄稿です。 この投稿では、Web サーバーを使用せずにサーバーレス PHP アプリケーションを構築する方法を学びます。 この投稿の後半で、bref および Serverless Visually Explained の作成者である Matthieu Napoli が FastCGI Process Manager の実装を Lambda 関数内で使うことでそれを可能にする方法を説明しています。Bref は、PHP 用のオープンソースのランタイム Lambda レイヤーです。 また、プライベート Amazon S3 バケットから静的アセットを安全に提供およびキャッシュするように Amazon CloudFront を構成する方法を示します。動的リクエストは、その後 Amazon API Gateway にルーティングされ、単一の AWS Lambda 関数にルーティングされます。 これらのサービスを組み合わせることで、PHP アプリケーション用の従来の Web サーバーを置き換えることができます。 サンプルコードについては、この GitHubリポジトリ にアクセスしてください。 サーバーレス LAMP スタックアーキテクチャについては、この投稿で説明しています。Web アプリケーションは2つのコンポーネント(静的アセットと動的コンテンツを生成するバックエンドアプリケーション)に分割されます。Lambda […]

Read More

サーバーレス LAMP スタック – Part 2: リレーショナルデータベース

本投稿は AWS サーバーレス アプリケーションのシニアデベロッパーアドボケートである Benjamin Smith による寄稿です。 この投稿では、サーバーレスアプリケーションで Amazon Aurora MySQLリレーショナルデータベースを使用する方法を学びます。Amazon RDS Proxy を使用してデータベースへの接続をプールおよび共有する方法と、構成を選択する方法を示します。この投稿のコード例は PHP で記述されており、この GitHubリポジトリにあります。なお、この概念自体は、AWS Lambda でサポートされている他のランタイム言語にも適用できますので、PHP に限定しない内容としてお読みいただけます。 サーバーレス LAMP スタック このサーバーレス LAMP スタックアーキテクチャについては、この記事で説明しています。このアーキテクチャでは、PHP Lambda 関数を使用して、Amazon Aurora MySQL データベースの読み取りと書き込みを行います。 Amazon Aurora は、MySQL および PostgreSQL データベースに高いパフォーマンスと可用性を提供します。基盤となるストレージは、最大64 テビバイト(TiB)まで需要に応じて自動的に拡張されます。 Amazon Aurora DB インスタンスは、パブリックアクセスを防止するために仮想プライベートクラウド(VPC)内に作成されます。 Lambda 関数から Aurora データベースインスタンスに接続するには、同じ VPC にアクセスするようにその Lambda 関数を設定する必要があります。 RDS データベースに直接接続すると、データベースのメモリ不足が発生する可能性があります。これは、データベース接続の急増、または高速で開閉する多数の接続が原因です。これにより、クエリが遅くなり、アプリケーションのスケーラビリティが制限される可能性があります。この問題を解決するために、Amazon RDS Proxy が実装されました。 […]

Read More

新しいサーバーレス LAMP スタック – Part 1: 概要紹介

本投稿は AWS サーバーレス アプリケーションのシニアデベロッパーアドボケートである Benjamin Smith による寄稿です。 これは、PHP 開発者向けの投稿シリーズの第一弾です。このシリーズでは、PHP でサーバーレステクノロジーを使用する方法を説明します。サーバーレスアプリケーションを構築するために利用できるツール、フレームワーク、戦略や、なぜ今始めるべきかについて説明します。 今後の投稿では、Laravel や Symfony などの PHP フレームワークとともに構築された Web アプリケーションに AWS Lambdaを使用する方法を示します。Lambda を Web ホスティング機能の代替として使用することから、分離されたイベント駆動型のアプローチに移行する方法を示します。最小限のスコープの複数の Lambda 関数を他のサーバーレスサービスと組み合わせて、パフォーマンスの高いスケーラブルなマイクロサービスを作成する方法について説明します。 まずは、カスタムランタイム API を使用して Lambda で PHP を使用する方法を学びます。サンプルコードについては、この GitHubリポジトリにアクセスしてください。 サーバーレスLAMPスタック 従来の PHP アプリケーションの課題 スケーラビリティは、従来の LAMP スタックの伝統的な課題です。スケーラブルなアプリケーションとは、非常に多様なレベルのトラフィックを処理できるアプリケーションです。PHP アプリケーションは、多くの場合、必要に応じて Web サーバーを追加することにより、水平方向にスケーリングされます。これは、リクエストをさまざまな Web サーバーに転送するロードバランサーを介して管理されます。サーバーを追加するたびに、ネットワーキング、管理、ストレージ容量、バックアップと復元のシステム、およびアセット管理インベントリの更新に関するオーバーヘッドが増加します。さらに、水平方向にスケーリングされた各サーバーは独立して実行されます。これにより、構成の同期が困難になる可能性があります。 従来の LAMP スタックアプリケーションによる水平スケーリング 各サーバーには独自のディスクとファイルシステムがあり、開発者がユーザーセッションを処理するメカニズムを追加する必要があることが多いため、新しいストレージの課題が発生します。 サーバーレステクノロジーを使用すれば、開発者のためにスケーラビリティが(自動で)管理されます。トラフィックが急増した場合、サービスが拡張され、追加のサーバーを展開する必要なく、需要に応えます。これにより、アプリケーションをプロトタイプから本番環境にすばやく移行できます。 サーバーレス LAMP アーキテクチャ 従来の Web […]

Read More