Serverless

谢运良
2023-12-01

Serverless 概述

Serverless 是一种全新的架构模式,它让开发人员更专注于业务逻辑而不是基础设施。传统上,应用程序需要在服务器上运行。但是,随着云计算和容器化的出现,Serverless 这种无服务器的概念开始逐渐流行起来。

Serverless 架构将基础设施隐藏在抽象的层次之下,因此开发人员可以专注于应用程序的业务逻辑,而不是维护基础设施。在 Serverless 架构中,应用程序不需要直接运行在服务器上,而是通过事件触发器来响应请求。

AWS Lambda

AWS Lambda 是 Amazon 提供的 Serverless 计算服务,它允许开发人员以事件驱动的方式运行代码。Lambda 可以自动扩展以处理数百万个请求,而无需事先设置任何服务器。

AWS Lambda 支持多种编程语言,包括 Node.js、Python、Java、Go 和 C# 等。Lambda 提供了一个易于使用的 Web 控制台和命令行工具,可以轻松创建和部署 Lambda 函数。

下面是一个使用 Python 编写的 AWS Lambda 函数示例:

import json

def lambda_handler(event, context):
    # 从事件中获取输入数据
    input_data = json.loads(event['body'])

    # 执行业务逻辑
    output_data = do_something(input_data)

    # 将输出数据返回给调用方
    response = {
        "statusCode": 200,
        "body": json.dumps(output_data)
    }

    return response

在这个示例中,lambda_handler 函数是 AWS Lambda 函数的入口点。当 AWS Lambda 启动该函数时,它将传递一个事件和上下文对象作为参数。事件包含请求的输入数据,而上下文对象包含有关 Lambda 函数的运行环境的信息。

API Gateway

API Gateway 是一种 AWS 服务,它使开发人员能够轻松创建、部署和管理 RESTful API。API Gateway 提供了许多功能,例如请求路由、负载均衡、身份验证和 API 文档等。

在 Serverless 架构中,API Gateway 用于公开 Lambda 函数。当客户端向 API Gateway 发送请求时,API Gateway 将请求转发到相应的 Lambda 函数,并返回响应结果。

下面是一个使用 AWS Lambda 和 API Gateway 创建 RESTful API 的示例:

  1. 创建 Lambda 函数

在 AWS Lambda 控制台中,创建一个新的 Lambda 函数。选择一个运行时环境(例如 Python)并编写一个函数来执行您的业务逻辑。

现在您已经创建了一个 REST API,接下来您需要添加资源和方法。

  1. 创建 API Gateway API
  2. 打开 AWS 管理控制台,选择“API Gateway”服务。

  3. 单击“创建API”按钮。

  4. 选择“REST API”,并单击“构建”。

  5. 在“REST API”页面上,选择“新建API”。

  6. 输入 API 的名称,并选择一个“Endpoint Type”(可以是 Regional、Edge Optimized、Private)。

  7. 单击“创建API”。

设计API主要包括定义资源和资源路径,以及对应的HTTP方法。

资源是API的核心,资源路径则是资源的唯一标识符。资源路径的设计需要遵循RESTful API设计规范,例如使用名词表示资源,使用HTTP方法表示对资源的操作等。常见的资源路径包括:

/users: 用户资源 /orders: 订单资源 /products: 产品资源 /companies: 公司资源

HTTP方法定义了对资源的操作,主要包括以下几个方法:

针对不同的资源路径,我们需要定义对应的HTTP方法,例如:

在API Gateway控制台中,可以通过“创建资源”、“创建方法”等按钮创建API资源和方法。

配置API主要包括API资源的授权和后端服务的配置。

API资源的授权是指限制访问API资源的条件,常见的授权方式包括API密钥、IAM角色、Lambda函数权限等。在API Gateway控制台中,可以通过“API密钥”、“授权”等选项配置API资源的授权方式。

后端服务的配置是指将API请求路由到对应的后端服务,例如AWS Lambda函数、EC2实例、S3桶等。在API Gateway控制台中,可以通过“集成请求”、“集成响应”等选项配置API请求和响应的集成。

API部署是指将API配置应用到实际运行环境中。在API Gateway控制台中,可以通过“部署API”选项选择部署环境和部署版本,并生成API的访问URL。

API测试是指对API进行功能和性能测试,以验证API的正确性和可靠性。API测试通常包括以下几个方面:

在API Gateway控制台中,可以通过“测试”选项测试API的功能和性能。

  1. GET:查询资源信息
  2. POST:创建资源
  3. PUT:更新资源
  4. DELETE:删除资源
  5. GET /users: 查询用户信息
  6. POST /users: 创建用户
  7. PUT /users/{userId}: 更新用户
  8. DELETE /users/{userId}: 删除用户
  9. 配置API
  10. 部署API
  11. 测试API
  12. 功能测试:测试API的基本功能是否正确实现,例如查询、创建、更新和删除资源等。
  13. 性能测试:测试API的响应时间、吞吐量、并发性等性能指标。
  14. 安全测试:测试API的安全性,例如防止SQL注入、XSS攻击、跨站点请求伪造等安全漏洞。
  15. 负载测试:测试API在高并发情况下的稳定性和可靠性。
 类似资料: