2023年01月30日

フロントエンド開発にも役立つ。FaaS/エッジコンピューティングまとめ

カテゴリー:システム開発, テクノロジー

タグ:システム開発, フロントエンド

Knowledge_seci_model

サーバーレスの文脈でよく言われるのがFaaS(Function as a Service)です。サーバーではなく、コード(関数)をクラウドにアップロードして実行する仕組みなのでサーバーレスと言います。

元々AWS Lambdaが登場してから一気に広まったFaaSですが、現在は多くのサービスが存在します。そうしたFaaSについて、特徴をまとめて紹介します。なお、FaaSとエッジコンピューティングが混在してしまっていること、ご了承ください。

AWS Lambda

FaaSで最も有名なサービスです。単体で利用することはあまりなく、他のAWSと組み合わせて利用されます。例えばAPI Gatewayと組み合わせたり、S3のファイル追加をトリガーにしたりします。

利用できる言語はJava、Go、PowerShell、Node.js、C#、Python、Rubyがあります。プロジェクトサイズによりますが、クラウドでコードを書いてそのままデプロイ・実行できるのでとても手軽です。エッジで実行する場合にはCloudFront Functionsが利用できます。

AWS Lambda(イベント発生時にコードを実行)| AWS

Cloud Functions | Google Cloud

Google Cloudの提供するFaaSです。毎月200万回まで無料で利用できます。言語はNode.js、Python、Go、Java、.NET、Ruby、PHPがサポートされています。

関数をデプロイするとHTTPアクセスできるURLが発行されるので、他のサービスと比べるとシンプルに使い始められる印象です。

Cloud Functions  |  Google Cloud

Cloud Functions | オラクル

Oracle Cloud Infrastructure上で動作するFaaSがOracle Cloud Infrastructure(OCI)Functionsです。関数は自動的にDockerコンテナ上で動作し、Dockerfileを編集して細かな制御も可能です。

利用できる言語はPython、Go、Java、Nodeとなっています。Dockerfileを使うことで、別な言語でも利用可能かも知れません。

Cloud Functions | オラクル | Oracle 日本

IBM Cloud Functions

処理時間0.1秒単位での課金になります。より厳密なコスト管理ができるでしょう。デフォルトで対応している言語はNode.js/Swift/Java/Ruby/Python/Go/PHP/.NETとなっており、IBMが力を入れているサーバーサイドSwiftがあるのが特徴です。

Dockerにも対応しているので、上記以外のプログラミング言語でも利用できます。HTTP以外のIBM Cloud上でのイベントをハンドリングして処理を行えます。

IBM Cloud Functions

Azure Functions

Azure Functionsが対応する言語はC#/F#/Node.js/Java/Power Shell/Python/TypeScriptです。特にユニークなのはVisual Studio Code上でコードを書いて、そのままデプロイできる機能です。ログもVisual Studio Code上で確認できます。

ローカルで実行したり、ブレイクポイントを追加して変数を確認したりするのもVisual Studio Code上でできるので、開発効率は高いです。

Azure Functions – コンピューティングでのサーバーレス関数 | Microsoft Azure

Deno Deploy

Deno Deployは他のFaaSと異なり、Denoでコードを書けます。DenoはNode.jsと多少異なるJavaScript実行環境になります。月10万リクエストまで無料で利用できます。

GitHubやGitLabと連携し、コードをプッシュすると自動的に反映されます。また、専用コマンドを使ってデプロイできます。ブラウザでログをライブ表示する機能があるので、開発はスムーズです。

Deno Deploy

Cloudflare Workers

Cloudflare WorkersはNode.jsではなく、ブラウザ互換のAPIを提供しています。ブラウザのWeb Workersのようにコードが書け、エッジで実行できます。

Cloudflareが提供するデータベースやストレージを使うことで、キャッシュのように利用できます。メール受信のハンドリングができる点がユニークです。

Cloudflare Workers

Fastly Compute@Edge

CDNのFastlyが提供するエッジコンピューティング環境がFastly Compute@Edgeです。対応している言語はRust/JavaScript/Go/AssemblyScriptとなっています。

各言語向けにSDKが提供されていたり、専用コマンドもあるので開発からデプロイまでの体験はとても良いです。

サーバーレスコンピューティング環境 | Fastly Compute@Edge | Fastly

ニフクラ スクリプト

日本のパブリッククラウドであるニフクラでもスクリプトという名称でFaaSを提供しています。利用できる言語はNode.jsまたはRubyとなっています。

スクリプトをアップロードするとHTTPアクセスできるURLが作成されます。何かのイベントをトリガーにして実行できる訳ではないようです。

クラウド 機能・サービス(スクリプト) | ニフクラ

静的ホスティングサービス用

静的ホスティングではFaaSと相性が良いです。静的にホスティングされたWebサイトに対して、ちょっとした動的機能を追加したい時にFaaSが利用されます。

Cloud Functions for Firebase

Google Cloud FunctionsをFirebase向けに提供しているのがCloud Functions for Firebaseです。Firebase CLIから関数を作成し、ローカルでのテスト実行、デプロイまでできます。

Firebaseプロジェクトを作成すれば、Functions用のフォルダも作成され、すぐに利用できます。

Firebase向けのクラウド機能  |  Cloud Functions for Firebase

Vercel Serverless Functions

Next.jsのホスティングサイトとして最も有力であるVercelでもFaaSが提供されています。サポートされているのはNode.js/Go/Pythonのみになります。

ただしVercel Serverless Functions自体がAWS Lambdaを利用していることもあり、上記以外の言語をランタイムによって実行できます。

Serverless Functions – Vercel Docs

Netlify Functions

NetlifyではFaaSであるNetlify Functionsと、エッジで実行するNetlify Edge Functionsの2つが用意されています。Netlify Edge FunctionsはCloudflare Workersに近いものになるでしょう。また、Netlify Edge FunctionsはDenoで提供されています。

Netlify FunctionsはAWS Lambdaを利用していますが、対応言語としてはJavaScript/TypeScript/Goとなっています。

Netlify Functions

まとめ

パブリッククラウドベンダーではほぼすべてFaaSを提供しているようです。そしてそれを使って静的ホスティングサービスもFaaSを提供しています。なお、静的ホスティングサービスの場合はHTTPアクセス可能で、CORSによって利用できるアクセス元を制限しています。

そしてエッジコンピューティングがCDN各社によって提供されています。こちらは従来のFaaSとは異なる実行環境の場合が多いので、また違った使い方が生まれそうです。

役に立ったら、記事をシェアしてください