ホームページ >ウェブフロントエンド >jsチュートリアル >サーバーレス関数:使用と展開のガイド
近年、サーバーレス関数(「サーバーレス」または「サーバーレスコンピューティング」と呼ばれることもあります)が一般的なテクノロジーになっています。しかし、この用語についてはまだ多くの混乱があります。サーバーなしでコードを実行する方法は?このテクノロジーの利点と短所は何ですか?どのような状況で使用できますか?この記事では、これらの質問に答え、テクノロジーの適切な概要を提供したいと考えています。
キーポイント
サーバーレス機能とは何ですか?
「サーバーレス」という用語を初めて聞いたのは、確かに好奇心を喚起するでしょう。 「サーバーなしでWebでコードを実行する方法は?」実際に意味するのは、開発者として、コードが実行されるサーバーについて心配する必要がないということです。ハードウェア構成、ネットワーク構成、ソフトウェアのインストール、拡張機能はすべて、サーバーレスプロバイダーによって抽象化されています。開発の観点から、サーバーレス関数は、AWSやGoogleなどのサーバーレスプロバイダーにアップロードするコードパッケージです。このコードは、URLを介してリクエストに応答するように構成し、スケジュールどおりに実行(つまり、Cronジョブを介して)、または他のサービスまたはサーバーレス関数から電話をかけることができます。
サーバーレス関数は、フルサーバーを実行するための複雑さとコストなしに、フロントエンドアプリケーションにバックエンド機能を追加するのに最適です。
他の極端では、サーバーレス関数を使用してアプリケーション全体を構築することもできます。ファイルストレージ、データベースシステム、および認証を提供する他のクラウドサービスと組み合わせて、単一のサーバーを構成せずに大規模で堅牢でスケーラブルなアプリケーションを構築できます。
サーバーレス関数の利点
サーバーレス関数は、オンデマンドで開始されるミニコンテナで実行されます。それらはかなり短い走行のために設計されているため、請求はこれの影響を受けます。通常、時間ごとに請求される完全なサーバーインスタンスとは異なり、サーバーレス関数は通常、GB秒で請求されます。最短の請求時間は約ミリ秒であるため、従来のサーバーインスタンスよりもはるかに安価なサーバーレス機能として実行されるため、低周波または散発的なワークロードは実行されます。軽量のワークロードとプロトタイピングは、一部のプロバイダーの無料層にさえ該当する場合があります。
サーバーレス関数のオンデマンド呼び出しは、開発者が追加の作業を必要とせずに迅速かつ簡単にスケーリングできることを意味します。これにより、負荷を処理するためにより多くの関数インスタンスが自動的に提供されるため、トラフィックが予測不可能に増殖する可能性がある状況に最適です。その後、関数は縮小されます。つまり、未使用の容量に対して支払う必要はありません。サーバーレスモデルの主な利点は、サーバー処理を必要としないことです。 Webアプリケーションを実行するには、ソフトウェアをセキュリティパッチで最新の状態に保ち、セキュリティと高性能のためにサーバーが適切に構成されていることを確認するために、多くの時間とサーバー管理の専門知識が必要です。新興企業や中小企業の場合、サーバー管理を処理するために人々を雇うことは非常に大きなオーバーヘッドです。サーバーレスを使用すると、開発者はソリューションの作成に集中できます。
サーバーレス関数の短所
もちろん、完璧なテクノロジーはなく、サーバーレス関数には欠点があります。前述したように、サーバーレスモデルの設計は短命です。最大実行時間は数分であるため(たとえば、AWSで15分、Googleで9分)、大量のデータを処理するなど、長期にわたるジョブには適していません。
別の広く議論されている問題は、寒い開始時間です。これは、サーバーレス機能が実行を開始する準備が整う前に、プロバイダーがコンテナを構成して初期化するのにかかる時間です。関数が実行された後、コードが再び実行されると、コンテナがしばらく保持され、再利用されます。この「コールドスタート」遅延は、関数の応答時間に0.5秒から1秒の遅延を追加する可能性があります。サーバーレスフレームワーク用のウォームアッププラグインを含むいくつかの回避策があります。これは、コンテナをアクティブに保つために計画どおりに機能します。サーバーレス機能により、サーバーの構成とメンテナンスについて心配することを避けることができますが、これは学習曲線がないという意味ではありません。サーバーレスを使用したアプリケーションの構築には、従来のモノリシックコードベースを使用するのとは異なる考え方が必要です。さまざまな方法でコードを構築し、機能をより小さく、より独立したサービスに分割して、サーバーレス機能の制限に対応する必要があります。各関数は独立してバージョンされ、更新されるため、展開もより複雑です。
ベンダーのロックインの問題への参照もある場合があります。これは、サーバーレステクノロジーの欠点です。現在のところ、この分野の主要なプロバイダー(AWS、Google、Azure)には、独自の実装および管理ツールがあります。これにより、サーバーレスアプリケーションをあるクラウドプロバイダーから別のクラウドプロバイダーに移行することが難しくなります。サーバーレスフレームワークなどのプロジェクトは、プロバイダー間でアプリケーションを移植できるように、基礎となるサービスを抽象化しようとします。
サーバーレス関数ユースケース
サーバーレス関数を使用してアプリケーション全体を構築できますが、サーバーレスが平均的な開発者に利益をもたらす野心的でないユースケースを見てみましょう。
ウェブサイトは通常、完全に静的ですが、顧客がクリックして送信したときにユーザーにメールを送信したい連絡先フォームを除きます。ウェブサイトのホスティングプロバイダーは、サーバー側のスクリプトをサポートする場合とサポートしていない場合があります。サポートされていても、慣れ親しんでいる言語ではない場合があります。サーバーレス機能をフォームメーラーとして設定すると、この機能を静的にホストされたWebサイトに追加できます。
バックグラウンドでスケジュールされたタスクを実行する必要がある場合があります。通常、Cronジョブのサーバーをセットアップするために支払う必要があり、このサーバーはジョブ間でアイドル状態です。サーバーレス関数を使用すると、ジョブが実行されるまでの時間のみを支払います(無料層内にある場合は、まったく支払うことはできません)。
Reactアプリケーションで、ユーザーがアプリケーション全体でアバターとして使用する写真をアップロードできると仮定します。アップロードされた画像をサイズ変更して、必要以上に大きな画像を提供して帯域幅を無駄にしないようにします。サーバーレス関数を使用して、リクエストのアップロード、画像のサイズを希望のサイズに変更し、S3やGoogleストレージなどのサービスに保存できます。
サーバーレス関数の実用的な例サーバーレス機能がどのように機能するかをより深く理解するために、実際の例を見てみましょう。サーバーレス関数を使用してユーザーの名前とメールアドレスをGoogleスプレッドシートに保存するプレスリリースサインアップフォームを備えた静的ページを作成します。
プロバイダーに応じて、サーバーレス関数は複数の言語で記述できますが、Netlifyはnode.js関数をサポートするためJavaScriptを使用します。学習を続けるために、ローカルコンピューターに最新バージョンのNode/NPMがインストールされていると思います。
(次の手順は元の例と同じです。一貫性を維持するために、ここで繰り返される翻訳は行われません。)サーバーレス:ファッション、またはバックエンドの未来?
サーバーレスもファッションとして非難され、バックエンドアプリケーションの未来として歓迎されています。 AmazonのLambda機能は2014年から存在しており、AWSの重要な製品です。もちろん、多くの場合、完全なシェルアクセスで24時間年中無休で実行される実際のサーバーの柔軟性と機能が依然として必要です。 しかし、これまで見てきたように、サーバーレス、スケーラビリティ、およびメンテナンスコストの低いコストにより、いくつかの種類のワークロードに適した選択肢となります。サーバーレスエコシステムにますます多くの本、コース、フレームワーク、サービスが出現すると、サーバーレス機能が長い間存在すると言っても安全です。
(次のFAQパーツは元の例と同じです。一貫性を維持するために、ここで繰り返される翻訳は行われません。)以上がサーバーレス関数:使用と展開のガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。