「OCI Functions」と「 AWS Lambda」の比較

本ブログは、[オラクル・クラウドの個人ブログ](https://qiita.com/letian/items/10152a4fec813c1b7d98)の1つです。

__目次__
[1. 全体な比較](#1-全体な比較)
[2. 価格比較](#2-価格比較)
[3. 関連ドキュメント](#3-関連ドキュメント)

# 1. 全体な比較
||OCI Functions|AWS Lambda|
|--|--|--|
|リリース|2019年7月|2014年11月|
|ベース|[Fn Project](https://fnproject.io/)|N/A|
|サポート言語|✔ Java<br>✔ Python<br>✔ Ruby<br>✔ Go<br>✔ Node.js<br>✔ C# (.NET)<br> [ドキュメント](https://docs.oracle.com/ja-jp/iaas/Content/Functions/Tasks/languagessupportedbyfunctions.htm)をご参照ください。|✔ [Java](http://docs.aws.amazon.com/lambda/latest/dg/java-lambda.html)<br>✔ [Python](http://docs.aws.amazon.com/lambda/latest/dg/python-lambda.html)<br>✔ [Ruby](https://docs.aws.amazon.com/lambda/latest/dg/lambda-ruby.html)<br>✔ [Go](https://docs.aws.amazon.com/lambda/latest/dg/go-programming-model.html)<br>✔ [Node.js](http://docs.aws.amazon.com/lambda/latest/dg/authoring-function-in-nodejs.html)<br>✔ [C#](https://docs.aws.amazon.com/lambda/latest/dg/lambda-csharp.html)<br>✔ [PowerShell](https://docs.aws.amazon.com/lambda/latest/dg/powershell-programming-model.html)|
||<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/1860d9c6-2141-63b7-ecb2-24725c09a41a.png", width="250">|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/b830831c-2aab-102e-a961-d23d05c77d4d.png", width="300">|
|コンテナ・イメージの対応|Yes (リリース時点から)|Yes (2020年12月から)|
|呼出方法|Fn Project CLI, OCI CLI, SDK|AWS CLI, SDK|
||HTTP リクエスト|HTTP リクエスト|
||その他のOracleクラウド・サービス（例えば、OCI API Gatewayを介して呼び出される、或いは、イベント・サービスによってトリガーされる。）|その他のAWSサービス (API Gateway, ELB, CloudFront Lambda@Edge, SQS, EventBridgeなど)|
|ログ機能|可能（OCIロギング・サービスを使用すると、すべての呼出しログと実行ログを取得できる。）|可能（Amazon CloudWatch logsを利用）|
|他サービスとの連携|多くのOCIサービス（OCIオブジェクトストレージ、自律型DBなど）|多くのAWSサービス（Amazon S3、Amazon EFS、Dynamo DBなど）|
|メモリ|128 MB ~ 2048 MB<br>(128, 256, 512, 1024, 2048 MB)|128 MB ~ 10240 MB<br>(1MB increments)|
|最大タイムアウト|5 分 (300 秒)|15 分 (900 秒)|
|レジストリ|Oracle Cloud Infrastructure Registry (OCIR)|Elastic Container Registry (ECR)|
 
機能的には、両者はよく似ています。AWS Lambdaでできること、それらのほとんどはOCI Functionsもできます。

違い：
- PowerShellは、AWS Lambdaのサポート対象ですが、現在OCI Functionsのサポート対象外となります。
- OCIの設定値（2GBのメモリ、5分のタイムアウト）は、ほとんどの利用ケースをカバーしていますが、AWS Lambdaのほうはより大きなメモリとより長いタイムアウトを設定できます。

Lambdaユーザの場合、既存のLambdaをOCI Functionsに移行するのは可能です。コード編集がないとは言えません。修正量は各自のAPIの差異によります。次回は例をあげて紹介したいと思います。

# 2. 価格比較
__Oracle Functions__ [料金表](https://www.oracle.com/jp/cloud/price-list.html#functions)
|Product|単価|単位|
|--|--|--|
|呼出し - 毎月最初の200万回|<font color=blue>Free</font>|ファンクションの呼出し|
|呼出し - 毎月200万回を超える分|US$0.0000002|ファンクションの呼出し|
|実行時間 - 毎月最初の40万|<font color=blue>Free</font>|GB-秒|
|実行時間 - 毎月40万回を超える分|US$0.00001417|GB-秒|

<strong>AWS Lambda</strong> -- Region: Asia-Pacific(Tokyo)  [料金表](https://aws.amazon.com/jp/lambda/pricing/)
|アーキテクチャ|期間|リクエスト|
|--|--|--|
|x86 料金|GB-秒あたり 0.0000166667USD|リクエスト 100 万件あたり 0.20USD|
|Arm 料金|GB-秒あたり 0.0000133334USD|リクエスト 100 万件あたり 0.20USD|

OCI Functionsは、呼び出し(Invocation)回数と実行時間(Execution Time)に対して課金します。両方も<strong>無料使用枠</strong>がありまあす。

AWS Lambdaは、リクエスト(Request)と期間(Duration)に対して課金します。これは、呼び出し(Invocation)と実行時間(Execution Time)の同じ意味ですが、無料使用枠がありませんので、実際の使用量により支払います。

200万の呼出し回数と40万の実行時間（1か月あたり）は多くのユースケースをカバーできるため、OCI Functionsは、AWS Lambdaより価格面で有利です。

# 3. 関連ドキュメント
関連資料を少し整理しました。少しお役に立てれば幸いです。
||OCI Functions|AWS Lambda|
|--|--|--|
|製品ホームページ|[Cloud Functions (英語)](https://www.oracle.com/cloud/cloud-native/functions/)|[AWS Lambda](https://aws.amazon.com/jp/lambda/?nc1=h_ls)|
|Doc ホームページ|[ファンクション](https://docs.oracle.com/ja-jp/iaas/Content/Functions/home.htm)|[AWS Lambda のドキュメント](https://docs.aws.amazon.com/ja_jp/lambda/index.html)|
|Quick Start|[ファンクションQuickStartガイド](https://docs.oracle.com/ja-jp/iaas/Content/Functions/Tasks/functionsquickstartguidestop.htm)|[Lambda の開始方法](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/getting-started.html)|
|サービス制限/クォータ|[ファンクションの制限](https://docs.oracle.com/ja-jp/iaas/Content/General/Concepts/servicelimits.htm#Functions_Limits)|[Lambda クォータ](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-limits.html)|
|FAQ|[Oracle Functions FAQ (英語)](https://www.oracle.com/webfolder/technetwork/tutorials/faqs/oci/functions-faq.pdf)|[AWS Lambda よくある質問](https://aws.amazon.com/jp/lambda/faqs/)|

以上

----
__関連記事__
[オラクル・クラウドの個人ブログ一覧](https://qiita.com/liu-wei/items/10152a4fec813c1b7d98)
[OCI Functionで郵便番号から住所を検索する](https://qiita.com/liu-wei/items/70dd4f538d7e1b83066d)