作者:CSDN云原生

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

互联网软件架构演进

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

单机布置

在单机布置中,将一切的事务和数据库都布置在一台主机中。

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

此架构的长处是:开发、布置以及运维都十分简略。缺陷是:一旦遇到流量过大或许机器故障,整个系统瘫痪,乃至丢掉事务数据,造成巨大事务丢失。

集群化布置

针对上述架构问题,常用的处理计划是采取水平扩容的方法进行集群化布置。引进 SLB 的流量网关路由,进行负载均衡。集群化布置本质上是单体架构,开发人员在项目开发的时候需求额外留意,比方要运用 cookie 进行鉴权,session 就不能存储在本地,需求引进 Redis 进行独自存储。集群化布置可以经过快速水平扩容处理流量突增或机器故障的问题。

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

微服务拆分

跟着事务的开展以及团队规划的扩张,单体架构这样紧耦合的方法会带来越来越多的问题,架构的灵活性和可扩展性成为阻碍事务开展的严重应战。微服务架构应运而生。

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

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

Serverless 架构

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

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

技能演进的本质是更好服务事务,传统开发方法使企业花费更多的精力打磨底层技能细节,而 Serverless 架构便是让开发者专心事务完成然后发明更大的事务价值。

Serverless 架构的优势很明显:

  • 不重视底层基础设施,专心事务价值发明

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

  • 按资源运用计费,防止资源闲置浪费

Serverless 架构讨论

先来看一下 FaaS 的履行进程。蓝色部分是用户手动办理,只需求交付代码,其他的启动、运转、运维等都是在 FaaS 渠道进行。

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

可是此架构会发生一些问题:

  • 代码碎片化,无法一致办理和布置

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

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

  • FaaS 厂商对代码包有限制,无法布置大代码包

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

Serverless Devs

针对上述问题,Serverless Devs 可以协助开发者更好地开发办理 Serverless 使用,它具备以下几个特色:

  • 无厂商确定,Serverless Devs 协助开发者将使用布置在各个厂商上面

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

  • 功能可插拨,Serverless Devs 经过组件的形式供给,开发者彻底可以依据需求,快速开发适合自己的东西套件

  • 项目全生命周期办理才能,Serverless Devs 是用户进行项目初始化创立、开发、调试、布置等全生命周期办理的东西,简化 Serverless 使用开发

假如说 Serverless 架构可以协助开发者开发使用,那么 Serverles Devs 便是协助 Serverless 开发者更好地开发 Serverless 使用!

Serverless 架构实践

Serverless Devs 官网实践

经过上面的介绍可以看出 Serverless Devs 开发者东西并没有供给事务,事务的完成由组件供给,而组件本身涣散在不同的 GitHub 库房中。

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

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

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

  • 组件一旦有变动,官网可以主动布置和构建

全体计划如下:

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

开发者在 GitHub更新文档,触发 webhook 钩子装备的 Http Serverless 函数。这儿需求留意的是:因为组件的文档数目不定以及 GitHub网络不安稳等问题,假如一切的工作都在 Http 函数中处理,十分容易导致超时,所以将一切的处理逻辑放在异步调用中,履行完后将处理的成果投递到钉钉或许邮件等渠道。

阿里云函数核算控制台实践

阿里云函数核算 FC 控制台是用户运用函数核算产品的第一站,控制台的用户体会至关重要。在架构上面对几个问题:

  • 后端采用中心化布置形式,用户在海外拜访延时十分高

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

  • 研制效率较低,开发进程中前后端需求协调交流,协作本钱较大

全体处理计划如下:

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

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

  • 全体 BFF 布置在阿里云函数核算 FC 上,开发者无需手动运维

  • BFF 层由前端工程师担任,前端工程师更好地深入事务,供给优异的用户体会

  • 后端工程师专心于底层安稳性和原子才能的供给,经过 SDK 的方法进行交付给 BFF

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

经过 Serverless 完成的 BFF 不仅给事务带来了极大的灵活性,关于前端工程师这个群体也有质的改动:从之前的技能视角转变到愈加重视事务价值和用户体会提高。

CD 构建实践

常规的自建 CD 构建集群计划经过 Jenkins 或 Tekton 结构完成事务逻辑的编列,资源层面运用 K8s 布置,完成弹性伸缩。假如需求完成简略的云端构建 CD 计划,采用上文的架构略显杂乱。

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

  • 经过事情触发履行

  • 流量无法提前预估

  • 需求长期在后台运转,对延时不敏感

  • 因为网络时延等问题,需求规划失利重试机制

这些特性彻底是为 Serverless 量身打造的。完成计划还运用了异步函数,将构建的一切流程导到异步函数中处理,整个编列逻辑经过 Serverless Devs 进行,完美完成了一个性能安稳的 CD 构建集群。

阿里云函数核算使用中心这款产品的底层的 CD 才能彻底根据上述的原理进行实践,我们可以自行体会。

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

异步函数

实践中有十分多运用到异步函数的场景,这儿简略介绍下异步函数。

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

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

1、可长期运转,两个小时到一天不等

2、可以设置主动停止,自在调理时间,节省资源

3、可把触发成果分发给各个事情实现中心

4、有三次机会可在失利的情况下主动重试