浅谈ServerLess

Posted VMCloud

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈ServerLess相关的知识,希望对你有一定的参考价值。




浅谈ServerLess

冲上云霄——云从业随笔(5)





在云从业随笔系列中,我们介绍了TKE、AS、CVM等等,今天来聊聊ServerLess,也就是所谓的FaaS,笔者有幸经历了IaaS(OS)、CaaS(Container),在这两年又听到了FaaS(Funtion),这也是运维开发领域里的第三个阶段了吧,今天我将从一个不懂得开发的系统工程师视角以及结合之前的几篇系列文章为各位诠释这个概念。
0 1
简述


一开始听到ServerLess我以为是类似于VPS(建站主机)亦或者是VM、Container之类的具备完整OS或半完整OS生态的一个全新开发方式,后来发现我完全理解错了,如果说传统的云计算是这样分层的:

浅谈ServerLess

那么FaaS(ServerLess 为代表的的Funtion As A Service)就是把SaaS再进行精细化拆分,可以看这张图就明白了(特别是红圈部分):

浅谈ServerLess

传统以为Application就是业务的最终形态,可是随着以开发领域为首的“微服务”及运维领域为首的“SRE/DevOps”理念出来后,传统的业务运维明显已经不能满足新一代业务的需求,为了更贴合这些新的需求,实现:
模块拆分化(即一个功能作为一个模块,而非一个业务作为一个模块)
最小颗粒化变更(即分层变更,变更时通过合理调度时变更间隔缩短,实现快速迭代)的目的
云厂商最终在以往的“最终形态”上又拆分了Function出来,多个Function再组成Application,除了业务上的好处,这样做的好处还可以支持将Function拆分单独作为某个服务通过简单的加壳(API化)提供给外部调用,从商业角度讲,这样的模式能够给Application本身创造的价值之外提供了更多的细分变现领域。
所以,为什么ServerLess这么火(至少表面看),就是因为ServerLess是上述所说FaaS的最佳体现。
02
实操


浅谈ServerLess
当我们明白ServerLess是以Function为单位的时候,其实架构的实现上应该这么考虑(理想状态下,图借用自Azure)

浅谈ServerLess

为了简化理解,今天的实验以这样来实现如图架构:

浅谈ServerLess

1、关于如何创建一个基于TKE的WebServer可以看,至于CDB操作相对简单,就不做详细解释。
2、这里通过搭载在TKE上的Django构造一个简易的rest接口,用来接受ServerLess构造的云函数传输:

浅谈ServerLess

我们要实现的预期效果对应的角色关系如图:

浅谈ServerLess

3、接着,我们开始创建今天的主角,ServerLess(python版本随自身业务需求而变)创建一个云函数:

浅谈ServerLess

从云函数的功能上来看,与腾讯云的功能整合度还是比较高的:

浅谈ServerLess

在规划上笔者建议通过私有网络来构造云函数应用。
4、对接cvm apiv3 sdk来实现拉取cvm列表,首先将用到的SDK文件放在云函数所在目录下:

浅谈ServerLess

5、通过vscode插件一键部署:

浅谈ServerLess

浅谈ServerLess

这里推荐使用VSCode来作为主IDE,无论是构造API的Django所用的TKE可以通过Remote Development插件来进行远程开发,还是ServerLess也可以通过腾讯云提供的ServerLess ToolKit(当然大部分提供ServerLess的云厂商都有提供Toolkit,安装ToolKit时主要不要在Remote IDE窗口下点击,否则就变成为远端安装了)进行开发,基本上做到完全体验一致:

浅谈ServerLess

6、这里写了一个通过CVM SDK获取ins-id、内网ip,再调用django构造的接口进行传参(为了demo效果,这里写得比较粗糙):

浅谈ServerLess

7、我们来通过GIF感受下,首先云端部署与运行SCF(云函数):

浅谈ServerLess

浅谈ServerLess

8、结果调用成功添加数据:

浅谈ServerLess

至此,实操完成,这样相当把后端一个“同步信息”的接口搬上了ServerLess

03
场景


浅谈ServerLess
如实验所述,ServerLess只能是一个类似于“转发器”的玩意吗?并不是的,除了业务模块是处于“中间(转发、同步)”的模块类型之外,其实ServerLess也是可以结合其他产品来实现对外输出功能的。
本身ServerLess是没有对外发布能力的,怎么理解呢?就是一般运维同学上手一看,这玩意儿 为什么连个ip都没有,域名哪里定义的,端口又在哪里,如何定义协议类型? 实际上ServerLess确实这些都没有,因为如简述所说,这是一个细粒化到只需要关注其上App中的某个Function的一个产品,所以Function之下的所有包括OS、网络、App都是不具备定制化的。
虽然ServerLess本身没有对外发布能力,但是结合API网关就不是这回事儿了, 当ServerLess遇到API网关,通常云厂商是支持ServerLess添加(或叫注册)到API网关的,这就相当于你可以借API网关的“力”来使ServerLess实现对外发布的功能
而腾讯云上的ServerLess(SCF)也提供这么一个功能,点击云函数(SCF)的“触发方式”栏,点击新建触发方式并选择API网关(需要提前新建):

浅谈ServerLess

保存后你到对应的API网关的“管理API”中就可以看到绑定的云函数了:

浅谈ServerLess

这时候SCF(云函数)就可以借助API网关本身的能力对外提供能力或者被调用了,最终可以实现如图:

浅谈ServerLess

04
总结


ServerLess的开发模式业界已经很多公司采用,相比于还在使用传统环境(OS、中间件、选择应用语言、构建数据层、前后端)来说:
1、 运维压力小了很多,因为只需要专注在ServerLess本身的运行参数以及架构上的调整、运维,而不再需要关注Function以下的运维难点;
2、 开发人员由于ServerLess一般由云厂商提供全链路的整合,加上IDE插件的支持基本上全程实现云上开发,灵活的版本、环境也可以保证发布出现问题的几率最小化,同时 开发职能的交叉度 降到最低,开发人员之间的干扰 依赖降低
3、 对于公司的商业模式来说,像拥有大量访问量、市场受众的企业客户不单单可以在业务上实现盈利,某些 业务系统模块 的优势也可以借助ServerLess拆分出来实现内部IT支撑系统的 变现
ServerLess也存在一些问题,比如由于ServerLess基本上是依托在云厂商之上,对于有混合云的场景,对于S2S的链接质量要求更高,当然这些在ServerLess的不断优化迭代情况下会越来越顺畅,所以,无论是Dev还是Ops, 拥抱并享受ServerLess 吧。
(本篇参与云加社区【玩转腾讯云】征文活动,帮忙点击“阅读原文”并点赞留意吧~)

 相关导读 





技术传递力量,科技改善生活,点击“在看”吧

以上是关于浅谈ServerLess的主要内容,如果未能解决你的问题,请参考以下文章

serverless入门介绍

serverless入门介绍

我的 Serverless 实战 — Serverless 初探

一文让你迅速读懂 Serverless

API网关,让您和Serverless再近一步

浅谈Yolo