サーバーレスについての簡単な紹介
この文章は機械翻訳によって提供されています。原文は英語であり、OpenAIによって翻訳されました。
概要
「サーバーレス」は、需要に応じて利用可能なスケーラブルなバックエンドリソースを提供することに焦点を当てたクラウドベースのシステムアーキテクチャの一種です。サーバーレスとは、サーバーが使用されていないことを意味するのではなく(裏ではサーバーが動いていることもあります)、特にフロントエンドに焦点を当てた開発者が、バックエンドのサーバーの作成やコードの記述、メンテナンスを気にする必要がないということです。
従来、ビジネスは需要の増加に対応するために追加のサーバーを設置し、保守する必要がありましたが、AWS、Google、Microsoftなどのクラウドプロバイダーから利用できるエンタープライズグレードのサーバークラスターが利用可能になったことで、バックエンドリソースはオンラインで利用できるようになりました。
サーバーレスは技術的にはバックエンドのソリューションですが、主なユースケースはバックエンドの自動化であり、開発者がよりフロントエンドに集中できるようにすることです。
サーバーレス関数
「サーバーレス」という言葉は、AWSにデプロイされる人気のあるオープンソースのフレームワークでもあります。このフレームワークの基盤は、フロントエンドアプリケーションをAWS Lambda関数で動作させることです。AWS Lambdaは最大の「関数サービス(FaaS)」プロバイダーです。FaaSプロバイダー(AWSや他の多くのプロバイダーを含む)は、フロントエンドソフトウェアが通常サーバーサイドで行うであろう機能を使用できるようにします(たとえば、ブラウザに保存できないトークンを使用してセキュアなデータを取得するAPI呼び出しの処理など)。
サーバーレスフレームワークとFaaSを組み合わせると、専用のサーバーを常時稼働させるよりもはるかに安価なソリューションになります。FaaSの使用は、呼び出されるごとに料金が発生するため、需要が低い時にはオーバーヘッドが少なくなります。
Jamstackとサーバーレス
Jamstack(またはJAMstack)は、JavaScript、API、およびMarkupの頭文字を取ったものです。これは比較的新しいウェブ開発スタックの一つであり、ウェブサイトやアプリをホストしてクライアントに提供するのをより簡単かつ安価にし、開発者が簡単に構築できることを目指しています。
従来、フロントエンドアプリケーションを構築する際には、バックエンドに接続する必要がありました(通常はRuby-on-Rails、PHP、Node.jsなどのバックエンド言語で構築されます)。しかし、Jamstackでは、フロントエンド開発者はソースコードにサーバーレス関数を単純に含めるだけで済み、ホスティングサービスプロバイダーがその機能を処理できるようになります(これが「サーバーレス」の方法とされています)。
再度述べると、このアプローチの主な利点は、これらのサーバーレス関数が使用状況に応じて容量を自動的にスケーリングできることです。
サーバーレス関数における「コールドスタート」についての注意
一部の場合、サーバーレスアプリケーションが長時間使用されない場合、FaaSは専用サーバーと比べてリクエストに対して迅速に応答しない場合がありますが、ほとんどの場合、これはわずかなトレードオフであり、パフォーマンスにほとんど(または全く)影響しません。トラフィック量が多い大規模なアプリケーションの場合、サーバーレス関数は常にアクティブであり、需要に応じて即座にスケーリングできます。
注意すべき問題の一つは、一部のクラウドプラットフォームでは未使用のサーバーレス関数が「アイドル」状態になり、再度使用される際に「コールドスタート」が必要になることです。これにより、若干の反応速度の低下が生じる場合があります。アプリケーションとその関数が定期的に使用されている場合、この問題は発生しません。
Jamstackで使用されるサーバーレス関数の例
- 静的HTMLファイルをブラウザに提供する前に、サーバーサイドでAPI呼び出しを行ってデータを取得するためのAPI呼び出しを行うこと。Jamstackは、CDNから静的サイトを提供することが一般的ですが、サーバーレス関数を使用して動的な機能を追加することも可能です。
- 認証の処理。ブラウザにJSON Web Token(JWT)を保存することは可能ですが、セキュリティ上の脆弱性のため、ベアラートークンはサーバーサイドで生成する必要があります。これを自身でバックエンドサーバーに構築する代わりに、ホストがサーバーレス関数を使用して処理できます。
- お問い合わせフォームやメール通知。静的サイト上でフォーム(例:ユーザーが名前、メールアドレス、メッセージを入力し、送信すると、その情報がメールで送信される)を処理する場合、それには多くのJavaScriptのオーバーヘッドが必要になり、ページが重くなり、ユーザーのブラウザでの読み込みが遅くなる可能性があります。その機能をサーバーレス関数に組み込み、サーバーレスバックエンドでホストで実行し、ユーザーのフロントエンドでのアクションによってトリガーされるようにすることができます。
サーバーレスアプリをどこでホストできますか?
最大のクラウドプロバイダーには、AWS、Google Cloud、Azureがあり、主にインフラストラクチャサービス(IaaS)およびプラットフォームサービス(PaaS)を提供しています。ただし、これらのプラットフォームでの設定は設定が難しく、通常はバックエンド開発者が設定と保守を行う必要があります。
Netlify、Vercelなどのホスティングプラットフォーム、およびKurocoなどのヘッドレスCMSプラットフォームは、このプロセスを簡単にし、ほとんどの開発者が必要とする「サーバーレス」の機能を提供しています。
サーバーレスアーキテクチャを備えたエンタープライズヘッドレスCMS、Kuroco:
Kurocoは、フロントエンド開発に集中するために必要なすべてのサーバーレス機能を備えたヘッドレスCMSです。フロントエンド開発者向けに、エンタープライズが利用可能なバックエンドシステムと接続できる強力なAPI管理ツールを提供しています。また、コンテンツ作成者やマーケター向けには、コンテンツを簡単に作成して公開し、アプリが直面する任意のフロントエンドインターフェースに提供することができます。