本文重点探讨下开发者使用 Serverless 时常常遇到的一些问题,以及如何解决
过去一年,咱们和大量 Serverless 用户进行了线上和线下的交流,了解你们的业务场景、对 Serverless 的见解和使用体验。html
大部分用户认为 Serverless 会是云计算下一阶段的必然趋势,但不是如今。 为何呢?由于构成 Serverless 架构的云函数尽管有引觉得傲的自动扩缩能力,可是糟糕的开发体验、让人畏惧的冷启动、原有业务的改造难题等等,均下降了使用者的信心。git
所以,尽管很多用户承认 Serverless 的价值,但依然认为其很难承载核心业务。github
针对这些关键问题,腾讯云在今年 6 月份发布了 Serverless 2.0,全面升级了产品形态、系统调度以及开发者工具。为了便于你们理解,咱们就从云函数的运行原理做为切入点,以解释问题产生的缘由以及云函数的应对方法。数据库
以下图所示,FaaS 不只给用户提供了标准的 Runtime,同时在应用层也帮用户管理了请求的调度。开发者只须要聚焦在核心业务逻辑开发,按照函数的粒度去编写代码。而与底层硬件相关的资源维护,则交给更加专业的云厂商来搞定。express
所以,对于用户来说,能够把更多的精力和时间放在业务上。而 IaaS 和 PasS,则均须要用户去运维云主机或者容器集群、搭建业务所需的运行环境。segmentfault
在这里咱们也将解答云函数的冷启、下降核心业务迁移复杂度等问题。后端
以下图所示,开发者在实际使用时,能够借助 Web IDE 或者本地 IDE 完成代码开发,而后经过插件、工具等方式把代码及其相关依赖,一块儿打包部署到云函数平台,用户能够自行选择部署为函数形态或者服务形态。安全
在代码里,用户须要本身实现业务逻辑,好比访问数据库、对象存储、消息队列、第三方服务接口等。计算逻辑和后端服务共同构成了所谓的 Serverless 应用架构。而终端用户根据平台提供的请求方式,去触发部署在云函数平台上的业务代码,好比发送 http 请求,平台会根据用户的请求量去拉起相应的计算资源运行用户代码。架构
函数形态和服务形态在收到用户请求的时候,均能实现自动扩缩。并发
以下图所示,用户虽然只须要关注绿色部分和业务相关的代码实现,可是平台也须要提供强大的开发者工具来保障开发和使用体验。如云函数推出的 Serverless 本地开发工具、VS Code 插件,与 CODING 联合推出的 Web IDE、DevOps 平台等,均能很大程度上提高开发、部署效率,实现本次开发、本地调试、联动云端调试、本地部署、版本发布等能力。
同时,云函数也完善了配套的监控和告警机制,提供如调用次数、内存使用、并发使用、超时、代码错误等多维度的监控和告警能力。这些基础设施、资源管理、安全、容灾等能力,是云函数平台必备的基础能力,也是开发者关心的核心能力。
Serverless 不只仅是计算,还须要不断完善周边生态。
随着用户量的增长,Serverless 必然会面临更多的挑战 —— 怎么帮助用户组织管理代码,怎么解决带状态的业务诉求,怎么实现数据库链接数管理,怎么实现应用级部署等等。咱们也在不断探索和优化用户的使用体验,计划提供诸如 Serverless DB、性能监控、日志分析、Serverless 框架、函数编排、高性能调用等功能。
后续的专栏文章也将陆续解读更多核心能力,帮助开发者更好地理解和使用 Serverless。
Serverless is more!
传送门:
- GitHub: github.com/serverless
- 官网:serverless.com
欢迎访问:Serverless 中文网,您能够在 最佳实践 里体验更多关于 Serverless 应用的开发!
推荐阅读: 《Serverless 架构:从原理、设计到项目实战》