目录

从阿里云峰会看Serverless现状与发展趋势

2021年5月28日至29日两天,阿里云开发者峰会在国家会议中心盛大举行,会议上阿里云在端侧、边侧、云侧,为开发者提供了自由的发挥空间,让阿里云“被集成”的理念再一次深入人心。

/images/pasted-261.png

本次峰会中,我最为关注的部分是云原生部分,在经历了纯IaaS层作为底座的云计算1.0时代后,以云原生服务为底座的2.0时代,会逐步成为系统构建的核心。在云原生领域中,无服务化Serverless又是云计算的发展的未来。阿里云的函数计算是我最早的接触的无服务架构的重要服务。在《Serverless发展历史》一文中我也曾经提到过,阿里云早在2016年就发布了自己的函数计算服务,仅比AWS Lambda仅仅晚了两年的时间。

作为Serverless的使用者,我更多的是从开发者角度来研究无服务化的可用性,而每家云厂商对于Serverless方向往往有全局性和整体的规划,其中就有很多我们看不到的内容。本篇Blog也从多个维度来聊一聊关于开发者眼中的阿里云Serverless。

阿里云Serverless概述

阿里云Serverless的官方链接是:serverless.aliyun.com,网站中的内容主要是对阿里云函数计算、Serverless平台以及应用场景进行了介绍,最后是完整的入门手册全面介绍函数计算。

从阿里云Serverless我们能了解到围绕在函数计算服务的生态服务。其中对象存储、API网关比较常见。日志服务便于函数计算服务的调试和跟踪。至于批量计算和函数计算的关系,我理解是批量计算调用函数计算,按量计费的方式,但是在控制台上并没有非常明显的入口或者提示。

/images/pasted-209.png

另外,按照阿里云提供的Serverless能力来说,还应该包含Serverless容器服务ASK,Serverless应用引擎SAE以及用于函数计算编排的工作流服务等。在阿里云的服务目录可以搜索到这些服务,但是在Serverless首页上并没有过多的去宣传这些服务和应用场景。

函数服务

从2020年到2021年,阿里云函数服务还是发生了很大的变化,例如在触发器上增加了至少五种类型。触发器的种类决定了函数计算应用场景的丰富程度。这是2020年初的触发器截图:

/images/pasted-211.png

这是2021年的触发器截图,通过对比,可以很明显看到函数服务在一年时间里,增加了五种触发器类型(API网关、loT、云监控、消息队列Kafaka和事件总线触发器)。触发器的增多,

/images/pasted-213.png

以云监控触发器为例,比如你的ECS由人为引起了重启,你可以触发你的函数计算去处理自动化运维操作。通过云监控中的事件进行触发配置,不过这里不太方便的一点,新的几个触发器配置起来都不太方便,都需要通过查询文档才能知道跳转到哪个平台进行关联性配置,用户体验方面有待提升。通过这种手段,函数计算的可观测性得到了提高。

/images/pasted-221.png

在我们实际的生产环境中,阿里云函数计算已经稳定运行了一年多的时间,通过对函数计算的使用,节约了线上系统的成本,研发人员在开发和维护时也更加方便。至少有三种业务场景使用到了函数计算:

  • 提供二维码申请迁移产品License页面,用户提交申请后自动将请求转发至钉钉流程中
  • 迁移SaaS产品中,自动进行License审批,通过函数计算服务提供了REST API服务
  • 通过函数计算作为路由转发层,对外向第三方系统提供REST API接口,作为接受请求的服务端,之后再将请求转发至多个系统中

/images/pasted-207.png

轻量级Serverless应用构建——Serverless Devs

函数计算除了在最佳实践中成为连接云原生服务组件之间最后一公里的服务,在单独构建轻应用上也具备非常大的优势,特别是面向业务属性很强的应用时。这是阿里云官方给出的一张Serverless IT架构模式,这里重点突出了以函数计算为轴心的无服务化轻应用构建的基本框架。

/images/pasted-208.png

但是在构建此类应用过程中,开发者往往遇到诸多问题,例如:管理困难,调试困难、关联服务多、部署繁琐等诸多问题。同时在混合云上,由于每个云厂商提供了各自不同的工具,很难使用一套工具来管理不同云上的Serverless应用。在本次峰会上,我也非常欣喜的看到,阿里云提供了一套全新的Serverless开发者工具平台——Serverless Devs,解决了上述提到的开发痛点。目前Serverless Devs工具支持编排阿里云函数计算、Serverless工作流、NAS服务、资源编排、权限管理、VPC、日志服务,基本可以满足日常开发需求。

/images/pasted-262.png

从上图我们看到,Serverless Devs目前已经支持了主流的五大公有云。同时提供了大量的不同语言的框架模板,加速应用开发。Serverless Devs目前的官网地址是www.serverless-devs.com,有大量的学习资料供开发者使用。

/images/pasted-263.png

目前该项目在Github上获得了582星,还处于起步阶段,所以有兴趣的开发者也可以参与到项目贡献中。

OAM/KubeVela

虽然以函数服务为核心的轻应用能够满足很多业务场景,但是对于复杂的应用架构支持上还存在天然的不足。谈到这一点不得先说一说OAM(Open Application Model),一个用于描述应用程序与其实现解耦的规范。简单来说,OAM就是让Dev和Ops职责变得更为清晰。

/images/pasted-264.png

当然OAM作为一种规范,并不是强制使用Kubernetes,但是目前几大公有云厂商推出的基于OAM的实现基本都是基于K8S。KubeVela就是基于这一规范,由阿里巴巴和微软共同开源的项目。

/images/pasted-267.png

对于应用开发人员来讲,KubeVela是一个非常低心智负担的云原生应用管理平台,核心功能是让开发人员方便快捷地在 Kubernetes 上定义与交付现代微服务应用,无需了解任何Kubernetes本身相关的细节。

/images/pasted-265.png

通过对底层基础架构层的进一步抽象,基于容器环境的系统可以在多云之间自由移动,降低厂商锁定的风险。

/images/pasted-266.png

总结

作为云计算未来发展方向的Serverless已经成为各大云厂商的必争之地,从本次峰会上看,阿里云在这方面也是全力投入。通过底层技术不断迭代,为阿里的云钉一体化发展战略提供了强大的技术保障,也让云边协同的能力得以发挥。

对于普通开发者来说,云计算的趋势已经不可逆转,而云原生已经成为未来工作必须掌握的技能之一,也是缓解“35岁危机”最有效的自我升级的方式。

/images/pasted-268.png