Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
52 lines (39 sloc) 4.56 KB
layout title date comments categories
post
各Cloud Functions で使える言語比較(2018年7月)
2018/07/19 23:59:00 +0900
true
faas
AWS
Azure
Firebase
ibmcloud

FaaS (Function as a Service) と呼ばれるクラウドに用意された関数実行環境(=Cloud Functions)について、各クラウドベンダーで使用できる開発言語を比較してみました。

比較クラウドベンダー

比較表

言語\ベンダー AWS Lambda Azure Functions(2.x プレビュー) Google Cloud Functions IBM Cloud Functions
Node.js(JavaScript) ✔️ v8.10 ✔️ v8.9.4 ✔️ v6.14.0 / v8.11.1(β) ✔️ v8
Python ✔️ 3.6 ✔️ 3.7.0(β) ✔️ 3.6.5
Java ✔️ 8 ✔️ ✔️ 8
C#(.NET Core) ✔️ 2.0 ✔️
Go ✔️ 1.x ✔️
PHP ✔️ v7.1.18
Swift ✔️ 4.1
Docker ✔️ ✔️

(バージョンが書かれていないのは公式Webサイトで情報を得られなかったもの)

Node.js(JavaScript) はすべてのベンダーでサポート済み。 次に多いのは Java、その次が C#(.NET Core) になりました。 Java はマルチプラットフォーム前提ですが、 .NET Core も Linux や macOS などの非Win環境をフルサポートしているため、FaaS の実行環境が Windows でない場面でも使うことができます。

簡潔な処理だけを FaaS にまかせて、複雑な処理はホスティングしたアプリケーションサーバーやバッチサーバに行わせるのが一般的でしたが、サーバーレス、マイクロサービス化の流れが強くなってきているので、FaaS でやりたい事も増えつつあります。 その場合 JavaScript(TypeScript) ではツラい場面も増えると思われるので、他の(希望する)言語が使えるかは重要な要素になってきます。

ベンダー別に見ると、AWS は基本的な言語をひととおり抑えてますね。 意外にも IBM の対応言語の多さよ。特に サーバーサイド Swift をサポートしているのはなかなか野心的ですね。

あと、言語ではないのですが表には Docker という項目を入れています。 これは、関数が呼び出されたときに、Docker コンテナを起動して任意の処理を行わせる、というもので、要するに何でもアリです。 この機能は Azure と IBM がサポートしていて、主にバッチ処理的な使い方ができそうです。

クラウドサービスを使う開発が当然のようになっている現在ですが、さらに素のインスタンス(EC2とか)をどれだけ 使わないか がポイントになってきていると思うので、FaaS が重要な役割を占めるようになってきています。

今後も折をみて内容を更新します。