Serverless 架构是一种新兴的云计算模式。与传统的云计算相比,它是一种“无服务器”的架构,可以帮助开发者减少对基础设施的负担,降低开发成本。然而,Serverless 架构对 DevOps 实践也带来了很多新的挑战。本文将深入探讨 Serverless 架构对 DevOps 的影响,并给出一些实践指导和示例代码。
1. Serverless 架构的优势
在传统的云计算方式中,开发者需要自行创建和管理云服务器和操作系统。但是,Serverless 架构可以让开发者在不需要关心服务器和操作系统的情况下仅通过上传代码到云端就能运行应用程序。这样的架构能够极大地降低开发者的工作量,提高开发效率。因此,Serverless 架构具有以下优势:
- 减少配置需求:Serverless 架构可以让开发者省去服务器、操作系统的配置和管理,以及软件更新、代码升级的工作,让开发者将精力集中到业务代码本身的开发。
- 提高可用性:Serverless 架构依赖于云端提供的无缝自动扩展机制,从而确保在应用程序负载变化时都能够自动地处理高峰期的负载。这意味着服务的可用性更高、更具弹性,能够适应应用程序的任何规模。
- 降低成本:Serverless 架构采用按需计费的方式,也就是说仅在需要的时候才会产生成本,避免了长期租用服务器造成的固定成本。
虽然 Serverless 架构有很多优点,但是它也带来了一些挑战,尤其是在 DevOps 实践中。
2. Serverless 架构对 DevOps 的影响
Serverless 架构对 DevOps 的影响主要有以下三个方面。
2.1. 持续交付
Serverless 架构对 DevOps 战略的第一个影响是持续交付。Serverless 架构能够提高开发者与业务之间的交互频率,让业务需求能够更快地被反映到代码中。随着持续集成和持续交付流程与 Serverless 架构的协同工作,开发者不再需要繁琐的部署和测试工作,能够更快地将代码推出到生产环境之中。Serverless 架构为 DevOps 提供了更加平滑的持续交付流程,因此可以将更多的时间和精力放在软件的改进上。
2.2. 测试
Serverless 架构对DevOps策略的第二个影响是测试。因为 Serverless 架构是基于云端的,所以开发者必须与提供商一起工作来测试服务是否符合各种要求。与传统的云计算不同,Developer可以在无服务器原则下快速开始并运行应用程序,而无需提前开发和部署测试环境。这样可以加快代码测试,缩短开发周期。
2.3. 监控和故障排查
Serverless 架构对DevOps策略的第三个影响是监控和故障排查。由于无服务器原则的工作方式,Serverless 架构中的应用程序被划分为多个小型服务,并运行在不同的场所。这就使得监控和故障排查变得更加复杂。尽管云端提供商可以提供一些监控和诊断工具,但是很难在不同的层次上进行增量排查。开发者可能需要建立更多的测试环境,以便对不同的代码修改进行更全面的测试。
3. Serverless 架构最佳实践
尽管 Serverless 架构对 DevOps 策略带来很多挑战,但是通过下面的技巧和示例代码,我们可以克服这些挑战,从而更好地利用 Serverless 架构的优势。
3.1. 自动化构建和部署
为了加快持续集成和持续交付流程,需要使用自动化流程为架构构建和部署的代码提供支持。AWS为我们提供了强大可靠的“CodePipeline”服务,它可以提供自动化流程来构建,测试和部署应用程序更展板的AWS Lambda。这可以为您节省时间,并进行一致性的每周作业。
-- -------------------- ---- ------- ------- - --- - ----- ------------ ------ --- ------- - --- ------- --------------- -------------- ----------- ------------ ---------------------- ------------- - --- ------ --------------- ------------- ------------ -------- -------------- -------------- ------------ ----- --- ------ ------ ----- ------- - --- ------- --------------- ------------- ----------- ------------ ---------------------- ------------ - --- ------ --------------- ------------ ------------ ------- -------------- -------------- ------------ ----- -----
3.2. 应用组成
在使用 Serverless 架构的过程中,开发者应该将应用程序拆分为尽可能小的组成部分,保证它们跨云服务级别进行分离。多在架构中使用:API Gateway、Lambda、SNS、SQS 等服务,将各个接口和服务拆分为较小的部分,从而保持透明度。鉴于应用程序糅合了许多小部分,从而更容易快速修改应用程序并部署运行环境。
3.3. 监控和日志记录
Serverless 架构有许多小型的组成部分需要进行最佳监控和日志记录。 AWS CloudWatch并可以找到系统的系统指标,日志和自定义事件,并提供堆栈跟踪和实时告警。使用AWS X-Ray可以检测并跟踪应用程序运行中的所有服务和请求,从而更好地监控这些应用程序。
以下是从AWS Xray的图形中提取的SetMenu API的部分输出。
3.4. 科学实验
如果一个问题出现了,研究人员如何可以协作互助。使用Lambda函数,可以创建其他测试环境,让所有人都能看到在更改应用程序时发生了什么。所有测试环境都可以部署到单独的AWS API网关上。
从下面 schema 中可以看出,有名为STG_LAMBDA_ENABLED及STG_BUCKET_ENABLED的环境变量:
-- -------------------- ---- ------- ---------- --------------- ----- --------------------- ----------- ------------ ------- ----- ------- ---- -- ------------- ---- -------------------------------------- ------------ ---------- ------------------- ------ ------------------- ------ -------------- ---- ------------ ------------- ---- ----------- -------- --------- -------- ----------- ----- ------- ----------------------- ----------- ---- -------- --
结论
Serverless 架构对 DevOps 实践带来了许多挑战,但也为我们提供了强大的面向未来的云原生技术。开发者应该始终寻找最佳实践,如自动化工具、监控和日志记录,以确保Serverless架构在DevOps中的正确实践,最终的结果是开发者可以更快的反馈业务需求并享受高质量的构建成果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/670f48975f55128102638ad2