サーバレスコンピューティングは近年ますます人気が高まっており、同技術を活用してアプリケーションを実行する企業のニーズも増えています。また、Amazon Web Services (以下、AWS) や Oracle Cloud Infrastructure (以下、OCI) といったクラウド プラットフォームの登場により、Function as a Service(以下、FaaS)のサーバレス コンピューティングはこれまで以上に使いやすく効率的になりました。
今回のブログでは、OCIが提供するOracle FunctionsとAWSが提供するAWS Lambdaについて比較した結果をご紹介します。また、両者とも同様の機能を提供しますが、OCI Functionsを使用することによる利点についてもご紹介したいと思います。
サーバレスコンピューティングとは
サーバレス
FaaSの仕組みの前提となるサーバレス(Serverless)は、従来のサーバ構成とは異なり、ユーザーがサーバを用意したり管理したりする必要がないアーキテクチャで、代わりにクラウドプロバイダがリソースのプロビジョニングやスケーリング、サーバ管理を行います。
サーバレスは、アプリケーションを効率的に構築、展開、スケールすることを可能にするため、開発者がアプリケーションコードにより集中することが可能です。また、コードが必要に応じて実行され、利用されるコンピューティングリソースにのみ課金されるため、コストを大幅に削減することができます。
OCI Functions
Oracle Functions は、Oracle Cloud が提供する、拡張性・カスタマイズ性の高いオープンソースのFn ProjectをベースとしたフルマネージドFaaSです。Oracle Functionsを使用することで、コストや開発までのリードタイムの削減、自動スケーリングなどのメリットがあります。OCI Functions について詳しく知りたい方、また実際のOCI環境での構築手順についてご興味がある方は下記のブログをご参照ください。
AWS Lambdaとの比較
Oracle Functions 同様のサービスとして、AWS が提供している「Lambda」が挙げられます。両サービスとも、基本的な機能やできることに大きな違いはありません。ただし、下記の表の通り、対応言語や料金体系、無料枠などが異なります。ご利用の際にはアプリケーションのニーズとクラウドプラットフォームが提供するサービスを考慮し、検討する必要があります。
項目 | OCI Functions | AWS Lambda |
リリース | 2019年7月 | 2014年11月 |
サポート言語 | Java, Node.js, Python, Go, Ruby, C# (.NET) | Java, Node.js, Python, Go, Ruby, C#, PowerShell |
呼び出し方法 | Fn Project CLI、OCI CLI、SDK、 HTTPリクエストとその他OCIサービス |
AWS CLI, SDK、HTTPリクエストとその他AWSサービス |
コンテナサポート | あり | あり |
自動スケーリング | あり | あり |
他サービスとの連携 | OCI Object Storage、Oracle Autonomous DatabaseなどのOCIサービス | Amazon S3、Amazon DynamoDBなどのAWSサービス |
ロギング/トレーシング | OCI Logging、OCI Monitoring | AWS CloudWatch Logs、AWS X-Ray |
最大タイムアウト | 5分(300秒) | 15分(900秒) |
最大メモリ | 2GB(128 MB ~ 2048 MB) | 10GB(128 MB ~ 10240 MB) |
毎月無料枠 | 200 万回、400,000 GB-秒 まで無料 | 100 万回、400,000 GB-秒 まで無料 |
OCI Functionsの優れている点
OCI FunctionsとAWS Lambdaが同様のサービスを提供していることは前述しましたが、OCI Functionsを利用することによって得られる利点について、詳しく説明します。
ベンダーロックインなし
クラウドプラットフォームにおけるベンダーロックインとは、あるクラウドプラットフォーム特有の機能やAPIを利用して構築しているアプリケーションが、その機能やAPIが別のプラットフォームには存在しないため、他サービスや他製品への移行が困難な状態を示します。
OCI Functionsはコンテナベースのオープンソース「Fn Project」をベースにしているため、オンプレ、クラウドやローカルの開発用PCなどを気にせず、どこでも稼働する可搬性の高いFaaSアプリケーションを実現することができます。
このため、ベンダーロックインといった概念が不要になります。
コールドスタート対策
コールドスタートとは、サーバレスアーキテクチャでよくある問題の1つで、初めての時や一定期間の不活性状態後に呼び出される際、実行環境のセットアップに時間がかかることを指します。これにより、最初の呼び出しが遅くなるという問題が発生します。
この問題を解決するため、OCI Functionsは「Provisioned Concurrency」と呼ばれる機能をサポートしています。この機能を使用すると、開発者は関数の実行に必要なリソースをあらかじめ割り当てることができるので、関数が実行される際に遅延なくすぐに処理を開始することができます。これにより、応答時間が改善され、OCI Functionsのパフォーマンスやユーザーエクスペリエンスが向上します。また、関数の実行に必要なインスタンス数を事前に決定し、不必要なインスタンスの起動を防ぐことで、コストの削減にもつながります。
Oracle Functionsの設定画面では、下記の通りに「プロビジョニングされた同時実行性の有効化」にチェックし、「プロビジョニングされた同時実行ユニット(PCU)」に同時機能呼出しの最小数を指定することで、関数の起動時の初期遅延を最小限に抑えることができます。この値は関数の呼び出し頻度や予想される負荷に基づいて決定する必要があります。
OCIサービスとの連携
OCIが提供する他サービスと統合することで、Oracle Functionsを使用してスケーラブルで効率的なアプリケーションを構築することができます。Oracle FunctionsとOCIの他のサービスとの統合により、以下のようなユースケースが考えられます。
- イベントドリブンアーキテクチャ
OCIは、イベントに応じてコードを実行するトリガーサービスを提供しています。これにより、Oracle Functionsを使用して、他のOCIサービスからのトリガーに応答することができます。たとえば、OCI Object Storageからファイルがアップロードされたときに、Oracle Functionsを使用してファイルを処理することができます。 - DevOps の自動化
Oracle Functions を使用して、アプリケーションのデプロイ、リソースのプロビジョニング、ログの監視など、さまざまな DevOps タスクを自動化できます。 これらのタスクを実行する関数を作成し、Gitリポジトリやビルド・パイプラインなどの他のOracle Cloudサービスのイベントに基づいてトリガーできます。 - データ処理
OCIには、データベース、ストリーミング、バッチ処理など、様々なデータ処理サービスがあります。Oracle Functionsを使用することで、これらのサービスからのデータを処理し、必要に応じて外部サービスと連携することができます。たとえば、OCI Streamingサービスからのストリームデータを処理して、異常を検知するOracle Functionsを作成することができます。
課金モデル
Oracle Functionsの利用時に発生するコストについて説明します。
まず、OCI FunctionsとAWS Lambda、どちらも実行した分のみ課金され、アイドル時間の場合は課金されない体系になっています。OCI Functionsの場合は呼び出し回数と実行時間に対して課金されるモデルになっており、両方とも無料使用枠を提供します。
一方、AWS Lambdaは、リクエスト数と期間に対して課金します。意味合い的にリクエスト数と期間はOracle Functionsの呼び出し回数と実行時間と同様で、無料枠の方も存在します。また、AWS Lambdaの課金体系が複雑であり、リージョン、プロセッサのアーキテクチャによって課金の単価が異なりますので、ご利用の際は事前に検討が必要となります。課金モーダルの詳細は以下の通りです。
OCI FUNCTIONS | 単価 | AWS LAMBDA | 単価 | |
呼び出し回数・ リクエスト数 |
月間200万リクエストまで | 無料 | 月間100万リクエストまで | 無料 |
以降、100万リクエストごと | $0.20 | 以降、100万リクエストごと | $0.20 | |
実行時間・ 期間 |
月間40万GB・秒 | 無料 | 月間40万GB・秒まで | 無料 |
以降、GB・秒ごと | $0.00001417 | 以降、GB・秒ごと | $0.00001667 |
上記の表により、Oracle Functionを利用することで無料枠で許容されているリクエスト数が2倍になり、実行時間が無料枠を超過した後に発生する利用単価を15%安くすることができることが分かります。また、Oracle Functionsの場合は、Functionsの実行に使用されるProvisioned Concurrencyに追加料金が発生しないこともの一つ利点です。
おわりに
OCI Functionsの優れているポイントについてご紹介しました。
コンテナベースのオープンソースのため、場所を束縛されないポータビリティや初回実行時のレイテンシーを低減させる機能、大幅な無料枠と安価な課金体系などの利点により、Oracle Functionsのほうが費用対効果の高いサービスであるという結果になりました。
今回はFaaSプラットフォームについてAWSとOCIで比較しましたが、IaaSやPaaSなどを含めたAWSとOCIの比較結果について資料を公開していますので、是非ご確認ください。
- カテゴリ:
- OCI基礎知識