web-dev-qa-db-ja.com

AWS SAM(サーバーレスアーキテクチャモデル)とサーバーレスフレームワークの違いは何ですか?

私たちはプロジェクトに取り組んでおり、nodejsでサーバーレスアプリケーションを構築しようとしています。 AWSSAMとサーバーレスに出会う。サーバーレスアプリケーションの実装に最適なのはどれですか

8
Sagar Gavhane

この記事を比較して確認できます 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を介して利用できる場合に限ります。

9

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にはるかに近いです。

5
AnthonyC