BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース AWS Lambdaを使ったサーバレスReactアプリケーション

AWS Lambdaを使ったサーバレスReactアプリケーション

原文(投稿日:2021/02/16)へのリンク

AWSのソリューションアーキテクトであるRoman Boiko氏は、先頃、Amazon Web Servicesを利用してReactアプリケーションをクラウドまたはエッジにデプロイするための3つのシナリオを公開した。シナリオは、Amazon S3Amazon CloudFrontAmazon API GatewayAWS Lambda、およびLambda@Edgeを使用した完全なサーバレス実装だ。

提示された3つのシナリオの最初のシナリオでは、静的ReactアプリがAmazon S3バケットでホストされ、Amazon CloudFront CDNによってブラウザクライアントに配信される。Reactアプリケーションのバックエンドは、Lambda関数として実装されたAPI Gatewayの背後で実行されている。

他の2つのシナリオは、サーバサイドレンダリングまたはエッジサイドレンダリングが含まれる。Boiko氏は、サーバサイドレンダリングの理論的根拠を次のように説明した:


Reactは、シングルページアプリケーション (SPA) の作成に使用される一般的なフロントエンドフレームワークです。これは、ブラウザのクライアントサイドでレンダリングおよび実行されます。しかし、SEOまたはパフォーマンス上の理由から、サーバ上でReactアプリケーションの一部をレンダリングする必要がある場合があります。これは、サーバサイドレンダリング (SSR) が役立つ場所です。

2番目のシナリオでは、ReactアプリケーションはLambda関数でレンダリングされる。サーバサイドレンダリングされるルートは、レンダリングLambda関数を呼び出すSSRのAPI Gatewayに転送される。ページをレンダリングするために、Lambda関数は通常どおりバックエンドのAPI Gatewayからデータを要求してもよい。Boiko氏は、プロセスのさまざまな参加者の役割と相互作用の次のグラフィカルな要約を提供する:

SSR app 2
(出典: Amazon blog)

3番目のシナリオは2番目のシナリオと似ているが、今回のレンダリングはLambda@Edge関数を使用してエッジで行われる点が異なる:

SSR app 3
(出典: Amazon blog)

昨年は、サーバサイドレンダリング、エッジサイドレンダリング、およびサーバレスアーキテクチャをWebアプリケーションに活用しようとした多くの開発が見られた。Josh Larson氏は先頃、Cloudflare WorkersエッジでReactアプリケーションを実行するフレームワークであるFlareactを発表した。Cloudflareは先頃、Cloudflare PagesでJamstackサイトを構築およびホストする方法も導入した。Luke Edwards氏は、Svelte Summit 2020の講演で、Cloudflare WorkersとGoogle CloudでエッジでSvelteアプリケーションを実行するデモを行った。SvelteフロントエンドコンパイラとUIフレームワークの作者であるRich Harris氏は、SvelteKitについてSvelteのアプリケーションフレームワークの今後のイテレーションはサーバレスファーストになるかもしれないと発表した。Harris氏は述べた:

最近では、サーバレスプラットフォームへの移行が進んでいます。このプラットフォームでは、アプリの作者は、コードが実行されているサーバとそれに付随するすべての複雑さについて考える必要がありません。 […]
SvelteKitはサーバレスパラダイムを完全に取り入れており、公式に対応していないプラットフォームをターゲットにするための「アダプタ」APIを備えた、すべての主要なサーバレスプロバイダをサポートを提供します。

サーバレスアーキテクチャは、分散された障害点とスケーラビリティの向上を提供し、従量制課金モデルの結果、より優れたコストプロファイルを示す可能性がある

サーバレスの人気が高まるにつれ、開発者はこのアプローチを使用して、単純なWebサービスではなく本格的なエンタープライズアプリケーションをサポートしている。サーバレスアーキテクチャは、それに応じて複雑さが増している。Xavier Lefevre氏は、アーキテクチャの複雑さがTwitterで強調されている典型的なサーバレスアーキテクチャのビジョンをブログ投稿で説明している:

Typical serverless architecture

InfoQの記事で、Microscopic Machinesの製品研究者であるBernard Brode氏は、サーバレス革命が行き詰まっており、サーバレスアーキテクチャでアプリケーション全体を実行することで期待される費用対効果が一般的に実現していないという反対の見方をしている。Brode氏は考えを次のように詳述した:

最後に、サーバレスアーキテクチャがすぐに従来のモデルに取って代わることがない最も重要な理由は、おそらく、サーバレスシステムでアプリケーション全体を実行することはできないということです。

むしろ、可能ですが、それは費用対効果が高くありません。成功したモノリシックアプリは、8つのゲートウェイ、40のキュー、および1ダースのデータベースインスタンスに接続された一連の4ダースの関数にすべきではありません。このため、サーバレスはグリーンフィールド開発に適しています。既存のアプリケーション (アーキテクチャ) を移植することは事実上ありません。

読者は追加の技術的な詳細についてBoiko氏のブログ投稿を参照してください。説明されているシナリオのコードサンプルを含む実装がある。

この記事に星をつける

おすすめ度
スタイル

BT