We chose to use AWS Serverless Application Model (SAM) over Serverless Framework. We made this logical decision for a few reasons:
- A lot of new infrastructures that our customer built was already in AWS Cloud.
- They were migrating old infrastructure into the AWS.
- AWS provides a combination of the tools and building blocks that we needed without significant changes to the off-the-shelf.
Serverless Framework suites better if you need to have multi-cloud support. For instance, if you need to deploy your serverless code to Microsoft Azure and AWS at the same time. We suggest that you may want to use AWS SAM if you are building AWS specific integrations since it designed explicitly for AWS. You may think it sounds like a vendor-lock, but it is not: both frameworks are similar, which allows you to migrate your code from AWS SAM to Serverless Framework and vice versa.
AWS SAM provides excellent support for local development out of the box without installing additional plugins.
The decision on the language came naturally. We are experts in writing serverless Python code (or Python Serverless if you will), so this came well into play with our customer needs, as most of their engineers are Python experts.