简化操作 - 在上实现微服务 AWS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

简化操作

为了进一步简化运行、维护和监控微服务所需的运营工作,我们可以使用完全无服务器的架构。

部署基于 Lambda 的应用程序

您可以通过上传zip文件存档来部署 Lambda 代码,也可以使用有效的 Amazon ECR 映像 URI 通过控制台用户界面创建和上传容器映像。但是,当 Lambda 函数变得复杂(这意味着它具有层、依赖关系和权限)时,通过用户界面上传可能会因为代码更改而变得笨拙。

使用AWS CloudFormation 和 AWS Serverless Application Model (AWS SAM) AWS Cloud Development Kit (AWS CDK)、或 Terraform 可以简化定义无服务器应用程序的过程。 AWS SAM 原生支持 CloudFormation,它提供了一种用于指定无服务器资源的简化语法。AWS Lambda 层可帮助管理多个 Lambda 函数之间的共享库,最大限度地减少函数占用空间,集中租户感知库并改善开发者体验。Lambda f SnapStart or Java 增强了延迟敏感型应用程序的启动性能。

要进行部署,请在 CloudFormation 模板中指定资源和权限策略,打包部署对象,然后部署模板。SAM Local 是一种 AWS CLI 工具,允许在上传到 Lambda 之前对无服务器应用程序进行本地开发、测试和分析。

与 AWS Cloud9 IDE、、等工具集成 AWS CodeBuild AWS CodeDeploy, AWS CodePipeline 简化了基于 SAM 的应用程序的创作、测试、调试和部署。

下图显示了使用 CloudFormation 和 C AWS I/CD 工具部署 AWS Serverless Application Model 资源。

显示的示意图 AWS Serverless Application Model (AWS SAM)

图 2: AWS Serverless Application Model (AWS SAM)

抽象多租户的复杂性

在像 SaaS 平台这样的多租户环境中,简化与多租户相关的复杂性,让开发人员腾出时间专注于功能和功能开发至关重要。这可以通过诸如L AWS Lambda ay ers之类的工具来实现,这些工具提供了用于解决跨领域问题的共享库。 这种方法背后的基本原理是,如果使用得当,共享库和工具可以有效地管理租户上下文。 

但是,由于它们可能带来的复杂性和风险,它们不应扩展到封装业务逻辑。共享库的一个基本问题是更新的复杂性增加,与标准代码复制相比,更新更难管理。因此,在寻求最有效的抽象时,必须在使用共享库和重复之间取得平衡。

API 管理

管理 APIs 可能很耗时,尤其是在考虑多个版本、开发周期的各个阶段、授权以及其他功能(例如限制和缓存)时。除了 API Gatew ay 之外,一些客户还使用 ALB(应用程序负载均衡器)或 NLB(网络负载均衡器)进行 API 管理。Amazon API Gateway 有助于降低创建和维护的操作复杂性 RESTful APIs。它允许您以 APIs 编程方式创建,充当访问后端服务、授权和访问控制、速率限制、缓存、监控和流量管理中的数据、业务逻辑或功能的 “前门”,并且 APIs 无需管理服务器即可运行。

图 3 说明了 API Gateway 如何处理 API 调用以及如何与其他组件交互。来自移动设备、网站或其他后端服务的请求会被路由到最近的接入 CloudFront 点 (PoP),以减少延迟并提供最佳的用户体验。

显示了 API Gateway 调用流程的示意图

图 3:API Gateway 调用流程