使用 ServerLess 实现云原生

笔者有幸经历了 IaaS(OS)、CaaS(Container),在这两年又听到了 FaaS(Funtion),这也是运维开发领域里的第三个阶段了吧,今天我将从一个不懂得开发的系统工程师视角以及结合以前的几篇系列文章为各位诠释这个概念。python

本文来自 Serverless 社区用户「StatLee」投稿git

1、简述

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

serverless

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

FaaS

传统觉得 Application 就是业务的最终形态,但是随着以开发领域为首的「微服务」及运维领域为首的「SRE/DevOps」理念出来后,传统的业务运维明显已经不能知足新一代业务的需求,为了更贴合这些新的需求,实现:后端

  • 模块拆分化(即一个功能做为一个模块,而非一个业务做为一个模块)
  • 最小颗粒化变动(即分层变动,变动时经过合理调度时变动间隔缩短,实现快速迭代)的目的

云厂商最终在以往的「最终形态」上又拆分了 Function 出来,多个 Function 再组成 Application,除了业务上的好处,这样作的好处还能够支持将 Function 拆分单独做为某个服务经过简单的加壳(API 化)提供给外部调用,从商业角度讲,这样的模式可以给 Application 自己创造的价值以外提供了更多的细分变现领域。api

因此,为何 ServerLess 这么火(至少表面看),就是由于 ServerLess 是上述所说 FaaS 的最佳体现。浏览器

2、实操

  1. 咱们开始建立今天的主角,ServerLess(python 版本随自身业务需求而变)建立一个云函数:

serverless

建立 SCF(云函数,ServerLess)网络

从云函数的功能上来看,与腾讯云的功能整合度仍是比较高的,在规划上笔者建议经过私有网络来构造云函数应用。架构

  1. 对接 cvm apiv3 sdk来实现拉取cvm列表,首先将用到的SDK文件放在云函数所在目录下。less

  2. 经过 VSCode 插件一键部署。这里推荐使用 VSCode 来做为主 IDE,不管是构造 API 的 Django 所用的 TKE 能够经过 Remote Development 插件来进行远程开发,仍是 ServerLess 也能够经过腾讯云提供的 ServerLess ToolKit(固然大部分提供 ServerLess 的云厂商都有提供 Toolkit,安装 ToolKit 时主要不要在 Remote IDE 窗口下点击,不然就变成为远端安装了)进行开发,基本上作到彻底体验一致。

  3. 经过 CVM SDK 获取 ins-id、内网 IP,再调用 Django 构造的接口进行传参。

  4. 结果调用成功添加数据:

serverless

至此,实操完成,这样至关把后端一个「同步信息」的接口搬上了 ServerLess

3、场景

如实验所述,ServerLess 只能是一个相似于「转发器」的玩意吗?并非的,除了业务模块是处于「中间(转发、同步)」的模块类型以外,其实 ServerLess 也是能够结合其余产品来实现对外输出功能的。

自己 ServerLess 是没有对外发布能力的,怎么理解呢?就是通常运维同窗上手一看,这玩意儿为何连个 ip 都没有,域名哪里定义的,端口又在哪里,如何定义协议类型?

实际上 ServerLess 确实这些都没有,由于如简述所说,这是一个细粒化到只须要关注其上 App 中的某个 Function 的一个产品,因此 Function 之下的全部包括 OS、网络、App 都是不具有定制化的。

虽然 ServerLess 自己没有对外发布能力,可是结合 API 网关就不是这回事儿了,当 ServerLess 遇到 API 网关,一般云厂商是支持 ServerLess 添加(或叫注册)到API网关的,这就至关于你能够借 API 网关的「力」来使 ServerLess 实现对外发布的功能。

4、总结

ServerLess 的开发模式业界已经不少公司采用,相比于还在使用传统环境(OS、中间件、选择应用语言、构建数据层、先后端)来讲:

  1. 运维压力小了不少,由于只须要专一在 ServerLess 自己的运行参数以及架构上的调整、运维,而再也不须要关注 Function 如下的运维难点;
  2. 开发人员因为 ServerLess 通常由云厂商提供全链路的整合,加上 IDE 插件的支持基本上全程实现云上开发,灵活的版本、环境也能够保证发布出现问题的概率最小化,同时开发职能的交叉度降到最低开发人员之间的干扰依赖下降
  3. 对于公司的商业模式来讲,像拥有大量访问量、市场受众的企业客户不仅仅能够在业务上实现盈利,某些业务系统模块的优点也能够借助 ServerLess 拆分出来实现内部IT支撑系统的变现

ServerLess 也存在一些问题,好比因为 ServerLess 基本上是依托在云厂商之上,对于有混合云的场景,对于S2S 的连接质量要求更高,固然这些在 ServerLess 的不断优化迭代状况下会愈来愈顺畅,因此,不管是 Dev 仍是 Ops,拥抱并享受 ServerLess 吧。

One More Thing

3 秒你能作什么?喝一口水,看一封邮件,仍是 —— 部署一个完整的 Serverless 应用?

复制连接至 PC 浏览器访问:https://serverless.cloud.tencent.com/deploy/express

3 秒极速部署,当即体验史上最快的 Serverless HTTP 实战开发!

传送门:

欢迎访问:Serverless 中文网,您能够在 最佳实践 里体验更多关于 Serverless 应用的开发!


推荐阅读:《Serverless 架构:从原理、设计到项目实战》

相关文章
相关标签/搜索