栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

阿里云袁坤:Serverless在函数计算中的实践

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

阿里云袁坤:Serverless在函数计算中的实践

作者 | 袁坤   整理 | 徐诗瑶

出品 | CSDN云原生

近日,阿里云aPaaS&Serverless前端技术专家袁坤在CSDN云原生meetup长沙站分享了Serverless在函数计算FC的实践。

 互联网软件架构演进

我们先简单回顾下互联网软件架构的演进之路。

单机部署

在单机部署中,将所有的业务和数据库都部署在一台主机中。

 此架构的优点是:开发、部署以及运维都非常简单。缺点是:一旦遇到流量过大或者机器故障,整个系统瘫痪,甚至丢失业务数据,造成巨大业务损失。

集群化部署

针对上述架构问题,常用的解决方案是采取水平扩容的方式进行集群化部署。引入SLB的流量网关路由,进行负载均衡。集群化部署本质上是单体架构,开发人员在项目开发的时候需要额外注意,比如要使用cookie进行鉴权,session就不能存储在本地,需要引入Redis进行单独存储。集群化部署可以通过快速水平扩容解决流量突增或机器故障的问题。

微服务拆分

随着业务的发展以及团队规模的扩张,单体架构这样紧耦合的方式会带来越来越多的问题,架构的灵活性和可扩展性成为阻碍业务发展的重大挑战。微服务架构应运而生。

对比单体架构,微服务架构远比其复杂,也衍生了很多新技术,比如:API网关、服务注册、服务发现、RPC通信。
 

Serverless架构

从单体架构到微服务架构,从单机部署到集群化部署,互联网软件架构越来越复杂,公司需要投入大量精力和成本进行底层技术的升级和维护。下图是典Serverless架构,和单体架构不同的是将对应的组件换成Serverless云产品。

技术演进的本质是更好服务业务,传统开发方式使企业花费更多的精力打磨底层技术细节,而Serverless架构就是让开发者专注业务实现从而创造更大的业务价值。Serverless架构的优势很明显:

  • 不关注底层基础设施,专注业务价值创造

  • 自动弹性,从容面对突增流量

  • 按资源使用计费,避免资源闲置浪费

Serverless架构探讨 

先来看一下FaaS的执行过程。蓝色部分是用户手动管理,只需要交付代码,其他的启动、运行、运维等都是在FaaS平台进行。

但是此架构会产生一些问题:

  • 代码碎片化,无法统一管理和部署

  • 本地环境和线上环境不一致,无法处理依赖兼容性问题

  • 进行本地Debug和线上调试困难

  • FaaS厂商对代码包有限制,无法部署大代码包

  • 没有统一的标准,导致厂商锁定问题

Serverless-Devs

针对上述问题,Serverless-Devs可以帮助开发者更好地开发管理Serverless应用,它具备以下几个特点:

  • 无厂商锁定,Serverless-Devs帮助开发者将应用部署在各个厂商上面

  • 开源开放,代码逻辑无任何黑洞

  • 功能可插拨,Serverless-Devs通过组件的形式提供,开发者完全可以根据需求,快速开发适合自己的工具套件

  • 项目全生命周期管理能力,Serverless-Devs是用户进行项目初始化创建、开发、调试、部署等全生命周期管理的工具,简化Serverless应用开发

如果说Serverless架构可以帮助开发者开发应用,那么Serverles-Devs就是帮助Serverless开发者更好地开发Serverless应用!

Serverless-Devs官网实践

通过上面的介绍可以看出Serverless-Devs开发者工具并没有提供业务,业务的实现由组件提供,而组件本身分散在不同的GitHub仓库中。

Serverless-Devs官网有下面几个诉求:

  • 不同仓库下GitHub源中的文档汇集在一个界面进行展示

  • 组件开发者专注组件文档编写,文档自动实时同步到官网

  • 组件一旦有变动,官网能够自动部署和构建

整体方案如下:

开发者在GitHub更新文档,触发webhook钩子配置的Http Serverless函数。这里需要注意的是:由于组件的文档数目不定以及GitHub网络不稳定等问题,如果所有的工作都在Http函数中处理,非常容易导致超时,所以将所有的处理逻辑放在异步调用中,执行完后将处理的结果投递到钉钉或者邮件等渠道。

函数计算控制台实践

函数计算FC控制台是用户使用函数计算产品的第一站,控制台的用户体验至关重要。在架构上面临几个问题:

  • 后端采用中心化部署模式,用户在海外访问延时非常高

  • 需要用户手动建设监控、日志、灰度等能力,导致运维成本偏高

  • 研发效率较低,开发过程中前后端需要协调沟通,协作成本较大

整体解决方案如下:

左侧是阿里云通用的网关,负责统一鉴权和安全等逻辑,抽离出BFF(Backend for Frontend)层,这部分的特点如下:

  • 整体BFF部署在函数计算FC上,开发者无需手动运维

  • BFF层由前端工程师负责,前端工程师更好地深入业务,提供优秀的用户体验

  • 后端工程师专注于底层稳定性和原子能力的提供,通过SDK的方式进行交付给BFF

通过Serverless实现的BFF不仅给业务带来了极大的灵活性,对于前端工程师这个群体也有质的改变:从之前的技术视角转变到更加关注业务价值和用户体验提升。

 CD构建实践

常规的自建CD构建集群方案通过Jenkins或Tekton框架实现业务逻辑的编排,资源层面使用K8s部署,实现弹性伸缩。如果需要实现简单的云端构建CD方案,采用上文的架构略显复杂。

CI/CD的业务场景有以下几个特性:

  • 通过事件触发执行

  • 流量无法提前预估

  • 需要长时间在后台运行,对延时不敏感

  • 由于网络时延等问题,需要设计失败重试机制

这些特性完全是为Serverless量身打造的。实现方案还使用了异步函数,将构建的所有流程导到异步函数中处理,整个编排逻辑通过Serverless-Devs进行,完美实现了一个性能稳定的CD构建集群。

函数计算应用中心这款产品的底层的CD能力完全基于上述的原理进行实践,大家可以自行体验。

异步函数

实践中有非常多使用到异步函数的场景,这里简单介绍下异步函数。

总结来看,异步函数有四个特点:

  • 可长时间运行,两个小时到一天不等

  • 可以设置自动终止,自由调节时间,节约资源

  • 可把触发结果分发给各个事件兑现中心

  • 有三次机会可在失败的情况下自动重试


聚焦云原生新技术、新实践,帮助开发者群体赢在开发范式转移的新时代。欢迎关注CSDN云原生微信公众号~  

扫这里↓↓↓加入CSDN云原生交流群

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/914657.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号