私たちはプロジェクトに取り組んでおり、nodejsでサーバーレスアプリケーションを構築しようとしています。 AWSSAMとサーバーレスに出会う。サーバーレスアプリケーションの実装に最適なのはどれですか
この記事を比較して確認できます SAMとサーバーレス
そのページに記載されている主な違いは次のとおりです
Serverless Frameworkは、AWS、Google Cloud、Kubelessなどの無数のプロバイダー向けにイベント駆動型関数を簡単に作成できるようにするフレームワークです。プロバイダーごとに、関数を呼び出すように一連のイベントを構成できます。フレームワークはオープンソースであり、定期的に更新を受け取ります。
AWSサーバーレスアプリケーションモデル(SAM)は、CloudFormationの前にある抽象化レイヤーであり、AWSでサーバーレスアプリケーションを簡単に作成できます。 Lambda、DynamoDB、APIGatewayの3つの異なるリソースタイプがサポートされています。 SAM Localを使用すると、LambdaとAPIGatewayをDockerコンテナを使用してローカルで実行できます。
両方のフレームワークには、CloudFormationを生成するという共通点があります。言い換えると、どちらもCloudFormationを抽象化するため、サーバーレスアプリケーション(SAMの場合)を構築し、Lambda関数(SAMとサーバーレスの両方)をデプロイするために必要なコードを減らすことができます。最大の違いは、サーバーレスはFaaS(サービスとしての機能)機能をさまざまなプロバイダーにデプロイするように作成されていることです。一方、SAMは、FaaSだけでなく、ストレージにDynamoDBを使用し、サーバーレスHTTPエンドポイントを作成するためにAPIGatewayを使用するAWS専用の抽象化レイヤーです。
もう1つの違いは、SAM Localを使用すると、Lambda関数をローカルで実行し、APIGatewayをローカルで起動できることです。これにより、Lambda関数をAWSにデプロイしなくても、開発とテストが簡単になります。 Serverless Frameworkを使用すると、コマンドラインからLambda関数を呼び出すこともできますが、それらがAWSにデプロイされ、APIGatewayを介して利用できる場合に限ります。
SAMとSFの最大の違い:
1)SAMはAWSのみです。 SFは複数のバックエンドをサポートしているため、マルチ/ハイブリッドクラウドアプリケーションの展開をサポートします。 SFはkubernetesバックエンドもサポートしています。
2)AWSの場合、SAMテンプレートとSFテンプレートの両方がCloudformation(CF)にコンパイルされます。 SAMには、本質的にCFのマクロであるTransformを使用する機能があります。
3)SAMはPythonで書かれています。 SFはJavascriptで書かれています。
4)SFには、任意のコード(Javascript以外を含む)を実行できるプラグインがあります。これは事実上、CFでまだサポートされていない何か(新しいもの)が常にあるため、Cloudformation(CF)の制限を超えることが可能であることを意味します。プラグインシステムも非常に柔軟性があり、非常に便利です。
5)SF変数システムはより柔軟であり、他のパラメーター(ステージなど)の存在に基づいて動的インクルードを実行できます。 SAM変数はCFにはるかに近いです。