本文是 serverless 入门与实践 的第36篇
学习<华为 Serverless 核心技术与实践>, 计划: 1篇前言 + 10篇/章 + 1篇总结
Serverless平台与翻译服务: 架构选型
微服务
基于微服务架构的翻译服务
对于翻译团队,采用微服务架构存在如下几个问题:
- 前端和后端的开发环境和语言不同,翻译服务需要前端和后端两种开发团队,同时前端和后端的开发人员需要进行一定的协作和沟通,前端和后端沟通协同成本较高。
- 需要自己购买云资源,配置环境及服务上线后的质量监控等一系列运维操作,诸如防火墙配置、网络安全组策略、VPC和子网划分等往往需要专业的运维人员参与,翻译团队并没有专职的运维团队,如果配置不当可能会导致安全问题。
- 翻译服务面向的是开发者或翻译服务商,其平时的操作主要集中在办公时间,而后端的微服务是一直在线的,没有做到按需使用,存在一定的资源浪费。
- 随着业务的发展,系统请求会越来越大,或者在某段时间内的请求激增,导致系统需要进行扩容或弹性伸缩,因此需要有一套系统及运维来支撑资源的弹性伸缩功能
serverless
相比微服务架构,基于Serverless的架构有如下改进:
- 函数可以采用Node.js语言开发,对前端开发人员来说更容易上手,同一个开发人员既能完成前端的开发,又能完成后端业务逻辑的开发,端到端完成一个完整的业务功能,降低沟通和协调成本,提升研发效率。
- Serverless架构实现了对开发者的免运维,开发人员不需要自行购买资源/服务、部署资源/服务、监控质量等运维操作。
- Serverless服务是按需使用的,当真正有开发者使用的时候才会运行函数,其他情况会自动回收相关资源,节约资源成本。
- Serverless架构本身支持弹性伸缩,对业务来说无须关注其资源和性能不足的问题,只要关注自身的业务功能即可轻松应对流量高峰和业务增长。
基于Serverless技术构建的翻译服务架构
技术选型结果
通过对微服务架构和Serverless架构的特点、优缺点进行对比,结合翻译服务团队的现状,选择Serverless架构来构建翻译服务,主要优点如下。
- Serverless服务免运维,云函数的部署和升级灵活方便,对开发人员的技能要求低,可以充分满足业务快速发布和上线的需求。
- 屏蔽了前端和后端的架构差异,前端和后端可以由同一个人采用自己熟悉的语言进行端到端开发,团队已有的前端人员可以快速上手开发后端服务,使项目能够立即启动。
- 利用Serverless架构的弹性伸缩特性,翻译团队可以轻松应对流量波动和业务增长,不需要寻找高水平的架构师,也不需要在业务上线之后因为性能不足而不断重构优化架构性能。
- 函数按需运行、服务按使用量计费,对于像翻译服务这种不需要实时在线运行的业务,可以极大地降低资源使用成本。采用Serverless技术来构建翻译服务,可以兼顾业务变化快、团队开发和运维经验不足等诉求,同时兼顾技术架构的先进性和可演进性。