关于 Serverless 应用架构对企业价值的一些思考
作者:寒斜
前言
对于企业方而言,最关心的核心诉求就是如何能获取更多的营收,更高的利润,通俗点说就是如何赚更多的钱;企业赚钱的方式主要是通过出售企业服务,当用户购买更多的企业服务,企业赚的钱就越多;而出售企业服务所付出的成本越低,企业获取的利润收益就会增加。进一步总结下来就是,企业最希望的事情是他们的企业服务在效率,成本,体验上可以不断地提升,因为企业服务体验做的好,购买他的客户自然便会增加;企业服务效率高的公司,在同等单位时间内提供的企业服务就会更多;而企业服务的成本降低,单个企业服务的利润营收就会变高。
明确企业服务价值后,我们了解到成本,效率,体验是营收利润增长的关键。
何谓 Serverless 架构?
我们可以简单地理解为,构建应用中需要的计算,存储,网络,数据库,中间件服务等都实现了 Serverless 化,各个系统实现了最精细化的用云,并且该架构体系在安全,高可用方面以及处理高并发的能力,可扩展性都达到了价值的最大化。下面我举一个实际的例子:_Serverless 架构实现的 Websocket 集群场景-弹幕应用 _来为大家更详细地解释一下。
该项目综合运用了计算,存储,网络,数据库,中间件全部件,用企业的标准构建,同时具备安全,高性能,稳定性,可扩展等能力,且实现了云,边,端的现代化访问架构思路。
其中 websocket.serverless-developer.com 主域名通过全球加速 DCDN 管理,主域的请求会被转发给边缘节点中的 ER 程序,ER 程序进行缓存处理和动静态分流,动态的资源转发到阿里云函数计算网关。函数计算网关弹性启动实例,处理业务逻辑以及访问 MNS 消息中间件和 tablestore 数据库存储,静态资源则尽最大限度进行缓存,必要时从 OSS 对象存储进行回源。其中 DCDN 可以进行边缘防护,防止 DDOS 攻击,并且增加了 Https 安全证书进行网站的加密传输,边缘节点的 ER 程序是 Serverless 化的启停,可以达到毫秒级响应时间。同时函数计算会对更复杂的业务算力进行弹性,访问量大的时候多弹实例,无访问数据则释放至 0。
barrage.websocket.serverless-developer.com 则单独提供 websocket 服务,由 DCDN 自动回源到函数计算,因为本身 websocket 协议无法被边缘应用程序转发。
值得一提的是,笔者作为一名前端程序员,几乎没有高可用,高并发,安全等专业方面的知识,但是这并不妨碍我把这些能力构建到自己的应用上,Serverless is More ,这句话越品味越有感觉。更详细地介绍可参考《人人都是 Serverless 架构师-websocket 集群实践》[1]
企业数字化转型中 Serverless 架构的优势
现在我们能够达到的一个基本共识就是:期望通过企业的数字化转型来优化企业服务的成本,效率,用户体验。但是我们暂且先不去讨论企业方因此需要在组织文化方面做的改变,单纯去看数字化管理工具,具体而言就是业务软件部分。构建软件的基本架构在慢慢的发生变化,从 IDC 到容器集群,今天 K8s 已经帮助企业在基础软件架构层面进行了运维体验,效率,成本的提升。**下一个阶段的进化是 Serverless。**这里需要明确一点是,现在寻求的是 效率,成本,体验三者整体的最佳平衡点,并不是单一项的绝对值提升,因为这三者中存在互斥的现象,比如你提升体验的前提可能是把成本和效率增加了,而降低成本或者提升效率本身也可能会影响体验。我们期待 Serverless 架构能够在适合领域中相较于容器集群管理,去实现三者更优的平衡。
成本
**从计算资源成本方面:**Serverless 具有比容器化更细粒度的计算抽象。可以做到按量付费,从而极大的节省计算资源的浪费。
**开发成本: **Serverless 架构应用随着分布式的拓扑节点增多,开发运维成本会提升上去,另外市场上因为新的应用架构相关的人才缺乏,从而也会影响 Serverless 架构的应用落地。不过值得注意的是,Serverless 开发者工具正日渐完善,Serverless 应用的开发范式也会更加明确,市面上 Serverless 应用架构的实践案例将会越来越多,相信开发成本会很快被弥补上来。
效率
1.数字化工具本身的迭代更新效率
Serverless 架构本质上是一种精细化用云的架构。传统服务器中的网络,计算,存储,数据库,中间件等都被单独的划分出来,每一项都只关注自己最擅长的部分。比如边缘节点提供的网络能够降低用户的访问时延和流量资费,Serverless 化的计算服务提供极致弹性,存储则提供了无限容量的可能,数据库高性能读写分离,中间件可以提供应用高并发的处理能力,总结下来 Serverless 架构中的组件体系解决了应用逻辑以外的各类复杂的 IT 问题,使得开发人员不必关心非业务开发以外的东西,这实际上能够大大提高数字化工具的迭代更新效率。
再结合 DevOps、AIOps 这些现代化的开发工程体系,Serverless 可以进一步提升开发效率。
2.通过数字化工具提升的企业服务效率
未来对于企业发展而言,会越来越依赖企业级的数字化服务能力,包含性能,高可用,高并发,安全这些属性在内。但是通常对于业务型的研发团队而言,很难处理这些非业务并且很复杂的软件工程问题。Serverless 的应用架构本质上是一种组装范式,其中的组件是被高度抽象化之后并且由专业团队花费数年打造出来的具备企业级能力的技术方案,所以对于业务研发而言不必掌握其技术底层细节,只需要能够将其利用起来去服务好业务本身即可。这样组装出来的软件应用天然具备企业级的能力。
Serverless 架构的组装式研发
用户体验
这里主要指数字化服务体验,更具体一点就是企业业务中涉及软件应用的使用体验。比如软件功能本身亦或是软件的易用性。软件功能除了跟业务的抽象定义相关,也跟技术团队的实现相关。丰富的原子化能力使得 Serverless 架构能够帮助企业跨越技术鸿沟,在构建更复杂的数字化服务软件上有着天然的优势。
还是以上面 webscoket 集群为例,企业相关业务推出弹幕应用,但是因为受限于技术实现无法做到大规模高并发实现,势必会影响希望使用这项服务的用户,但是有了 Serverless 架构可组装实现高可用架构,那么即使公司没有高可用高并发领域相关的专家,也可以实现具备高性能,高并发的业务诉求。
另外,得益于 Serverless 在全链路地扩展,使得开发人员可以在网络层面介入性能优化,利用边缘 Serverless 计算能力,我们可以做边缘渲染和边缘的缓存,让数字化服务触达用户的时间更短,提升数字化服务的访问体验。
评论