Practical Site Reliability Engineering
上QQ阅读APP看书,第一时间看更新

Code as function deployment

This domain, otherwise known as Function as a Service (FaaS) is very immature at the moment. Often, people working in this domain don't even know when new tools are launched by new vendors. However, the tools that do exist are capable of performing the expected work. Some of the tools that we can use for AWS Lambda deployments are the following:

  • Serverless: This allows deployment engineers to build and deploy Lambda-like functions. More details can be found at the following website: https://serverless.com/.
  • ApexApex is used to deploy, manage, and build Amazon Lambda functions. Non-supported languages in AWS Lambda can be supported using the Apex-like Go language, using Node.js shim injections in the build. More details can be found at the following website: http://apex.run/.
  • Chalice: Chalice is a micro framework for writing Serverless apps in Python. It allows you to create and deploy applications that use AWS Lambda quickly. It provides the following features:
    • A command-line tool for creating, deploying, and managing your app.
    • A decorator-based API for integrating with Amazon API Gateway, Amazon S3, Amazon SNS, Amazon SQS, and other AWS services.
    • Automatic IAM policy generation. More details can be found on the following website: https://github.com/aws/chalice.
  • Claudia.jsThis tool easily deploys Node.js projects to Amazon Lambda.
  • AWS Serverless Application Model (SAM): This is the Amazon way of deploying Serverless code and applications. Amazon has released it under the Apache 2.0 license for partners and Amazon customers.
  • Serverless express: Mainly for Node.js.
  • Traditional Bash scripts: CI/CD tools such as Jenkins, TeamCity, or other similar tools, with the integration of previously mentioned tools or especially with bash-based scripting languages.