サーバーレスアプリの作成における iFaaS と FaaS (AWS) 間のコストと効率

Nov 25 2022
サーバーレス アーキテクチャは、開発者がサーバーを管理したり、アイドル状態のクラウド サービスに料金を支払ったりすることなく、コードをビルドして実行できるようにする強力なシステム設計です。AWS は、堅牢なサーバーレス システムを作成できる最大のクラウド サービス プロバイダーの 1 つです。

サーバーレス アーキテクチャは、開発者がサーバーを管理したり、アイドル状態のクラウド サービスに料金を支払ったりすることなく、コードをビルドして実行できるようにする強力なシステム設計です。

AWS は、堅牢なサーバーレス システムを作成できる最大のクラウド サービス プロバイダーの 1 つです。ただし、サーバーレス アプリを作成する上で、Lolo Code (サービスとしての統合機能) と AWS (サービスとしての機能) の違いについて触れたいと思う以下の 3 つの観点があります。

  • 費用
  • パフォーマンス
  • 効率

AWS の料金

AWS は、料金設定に従量制のアプローチを提供します。つまり、AWS リソースの使用量に対して料金が発生します。

料金例 AWS

API は、Lambda を呼び出して動的な Web ページ コンテンツを返すサーバーレス Web アプリケーションで使用されます。このサイトでは、1 分あたり 10,000 ページの読み込みが行われます。各 API リクエストは 12KB で、レスポンスは 46KB です。

これは、1 か月あたり合計 4 億 3,200 万のリクエストになります。

月額コスト = 418.8 USD (100 万あたり 0.97 USD) * Amazon API Gateway のコスト (Lambda や DynamoDB は含まれません)

ロロコードの価格

Lolo Code は従量制モデルも提供しますが、より単純です。イベントの合計ではなく、アプリが同時に処理する必要があるイベントの量に対して支払います。

月額 9 ユーロから、256 MB のメモリと 0.125 コア (CPU) を備えた 1 つの LCU (またはレプリカ) を含む 1 つのアプリケーションをサブスクライブできます。無料利用枠には、それぞれ 1 つの LCU を持つ 2 つのアプリが含まれますが、アプリを実行し続けるには週に 1 回アプリを使用する必要があります。無料利用枠のアプリのレプリカを増やしたい場合、価格はそれぞれ 9 ユーロからです。

料金例 Lolo Code

上記と同じ API Gateway の例を使用して、いくつかの計算を行いました。

サイトが 1 分あたり 10,000 ページの読み込みを取得し、各 API リクエストが 12KB で、レスポンスが 46KB である場合、Lolo アプリに対して 10k リクエスト/分を処理する必要があります。これには、0.131 (コア) と 85 MB のメモリが必要です。したがって、これにはそれぞれ 9 ユーロの 2 つのレプリカが必要ですが、そのアプリ内でさらに多くのリクエストを行う余地がまだあります。結果は

月額 = Lolo アプリの月額 18 ユーロ。

Lolo は、AWS Lambda と API Gateway の組み合わせと見なすことができます。Lolo のベイク イン ステート ストアを使用して、動的な Web ページ コンテンツを保存することもできます。このようにして、隠れたコストはなくなります。支払う総額は、月額 18 ユーロです。

パフォーマンス: iFaaS と FaaS の違い

AWS は必要なものをすべて提供する可能性があり、冗長性、スケーラビリティ、および高可用性を備えた大規模なアプリを設計できます。一方、ネットワーク システムをよく理解し、AWS アーキテクチャに精通してその可能性を解き放つ必要があります。サーバーレスには欠点もあります。その 1 つが、悪名高い「コールド スタート」です。

たとえば、コンテナーがコードを実行する準備が整うまで、アプリは一定期間待機します。サーバーレス アプリは関数をスピンアップする必要があるため (つまり、コード、ライブラリ、モジュールなどをダウンロードし、コードを実行する環境を初期化します)、この要求の処理に時間がかかります。この問題は、Lolo Code または AWS のサーバーレス アプリで発生します。

AWS

AWS は、2018 年に Lambda フリートが Firecracker テクノロジーに移行して以来、悪名高いほど良くなっています。ただし、関数はまだスピンアップする必要があるため、コールド スタートが優先されます。

AWS では、最小数のコンテナーで Lambda を起動できます。ただし、継続的に実行するには追加料金を支払う必要があります。

この夏、AWS Lambda の遅延開始について (AWS EU を使用して) ユーザーにテスト * してもらいました実験結果は以下。

+-----------+--------------------
|   time    | ms      
+-----------+--------------------
| 1 min     | 180 ms           
| 15 min    | 750 ms   
| 3h        | 1467 ms 
| 10h       | 2060 ms               
+-----------+--------------------

Lolo Code のアプリにも「コールド スタート」の問題がありますが、Lolo アプリは停止するまで実行を続けます。つまり、Lolo Code はコンテナーで動作するため、停止するまでアプリは技術的に常に実行されます。基本的に、コールド スタートを気にする必要はありません。

ただし、AWS でテストを行った上記のユーザーは、Lolo Code でまったく同じテストを行いました。* 彼の結果は以下に示されています。

+-----------+--------------------
|   time    | ms      
+-----------+--------------------
| 1 min     | 172 ms           
| 15 min    | 210 ms   
| 3h        | 602 ms 
| 10h       | 890 ms               
+-----------+--------------------

他に考慮すべきことは、スクリプトの実行時間が長すぎる場合、AWS が最適な選択ではない可能性があることです。AWS Lambda の最大タイムアウトは 900 秒 (15 分) ですが、Lolo には最大タイムアウトがありません。

効率性: サーバーレス アプリを構築および管理する方法

AWS と Lolo Code の両方で API を構築するのは簡単です。ただし、違いがあります。

AWS

AWS で Lambda 関数を構築し、後でそのトリガーとして機能する別のサービスである API Gateway に接続します。ここには、何かが発生したときにトリガーされる無名関数があります。これは、イベントが発生したときにのみトリガーされる匿名関数である FaaS のまさに理想です。

関数はステートレスであるため、別の場所にデータをフェッチする必要があります。この場合、AWS DynamoDB を使用してデータを保存およびフェッチできます。

AWS サーバーレスでシンプルな API を構築するためのアーキテクチャ

これはスケーラブルで堅牢な設計のように見えますが、いくつかの重要な要素を考慮する必要があります。

  • ソフトウェア コードの変更を管理する方法
  • アプリをすばやくデプロイまたはカスタマイズする方法は?
  • インフラの問題が発生した場合、サービス全体のどこからチェックを開始しますか?

Lambda、API Gateway、および DynamoDB を使用して HTTP API を構築する方法に関する完全なチュートリアルを参照してください。

ロロコード

Lolo Code を使用すると、HTTP トリガーを追加して、ベイクされたステート ストアをデータベースに使用できます。ラムダとして機能する新しい raw 関数を追加できます (上記の正確な使用例に従うため)。

Lolo アプリケーションは次のようになります。

コード ブロック内のコードは、Lolo が共有するテンプレート トリガーである HTTP トリガーを除いて、単純な NodeJS コード () です。

コード (NodeJS) を変更して名前を変更するだけで、コード ブロックの内容を決定できます。

さらに、Lolo Code は、既存のテンプレート関数をコピーして使用し、独自のテンプレートを作成できるライブラリ関数を提供します。API の場合、Lolo/CRUD API v3関数を使用して CRUD API をすばやく作成できます。これは、ゼロから独自にセットアップするよりも高速です。

Lolo が提供するライブラリ関数を使用するだけで、Lolo で CRUD API を構築します。

さまざまな場所であまりにも多くのことを変更する必要はありません。Lolo Code を使用すると、すべての作業が 1 か所にまとめられます。

アプリケーションを保存して実行すると、アプリケーションを実行し続けるために独自のサーバーを維持またはプロビジョニングすることを心配する必要はありません (つまり、完全に「サーバーレス」です)。独自のパブリック クラウド アカウントまたはプライベート データセンターでプライベート ランタイムを使用する場合を除きます。こちらの Lolo runtime-d ドキュメントを参照してください。Runtime-d は、ラップトップまたは Linux サーバーを Lolo ランタイムに変えるスタンドアロン バイナリです。

概要

AWS は広く普及しているクラウド プラットフォームであり、世界中のデータ センターからフル機能のサービスを提供しています。

AWS では多くのことができますが、アイデアをアプリにして AWS にデプロイするには、かなりの労力と時間が必要です。Lolo Code は、開発をスピードアップし、より少ない費用で実行し続けるのに役立ちます。Lolo Code は AWS クラウドを使用してアプリをデプロイしますが、独自のランタイムを使用する機能も提供するため、クラウドに依存しません.

❤️ロロ