文档章节

使用 ServerLess 实现云原生

o
 osc_t59f3rc0
发布于 07/07 09:56
字数 1564
阅读 18
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

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

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

一、简述

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

serverless

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

FaaS

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

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

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

所以,为什么 ServerLess 这么火(至少表面看),就是因为 ServerLess 是上述所说 FaaS 的最佳体现。

二、实操

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

serverless

创建 SCF(云函数,ServerLess)

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

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

  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

三、场景

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

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

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

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

四、总结

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 架构:从原理、设计到项目实战》

上一篇: 集训模拟赛12
o
粉丝 0
博文 71
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
用vertx实现高吞吐量的站点计数器

工具:vertx,redis,mongodb,log4j 源代码地址:https://github.com/jianglibo/visitrank 先看架构图: 如果你不熟悉vertx,请先google一下。我这里将vertx当作一个容器,上面所有的圆圈要...

jianglibo
2014/04/03
4K
3
SQLServer实现split分割字符串到列

网上已有人实现sqlserver的split函数可将字符串分割成行,但是我们习惯了split返回数组或者列表,因此这里对其做一些改动,最终实现也许不尽如意,但是也能解决一些问题。 先贴上某大牛写的s...

cwalet
2014/05/21
9.6K
0
CDH5: 使用parcels配置lzo

一、Parcel 部署步骤 1 下载: 首先需要下载 Parcel。下载完成后,Parcel 将驻留在 Cloudera Manager 主机的本地目录中。 2 分配: Parcel 下载后,将分配到群集中的所有主机上并解压缩。 3 激...

cloud-coder
2014/07/01
6.8K
1
Swift百万线程攻破单例(Singleton)模式

一、不安全的单例实现 在上一篇文章我们给出了单例的设计模式,直接给出了线程安全的实现方法。单例的实现有多种方法,如下面: class SwiftSingleton { } 这段代码的实现,在shared中进行条...

一叶博客
2014/06/20
3.3K
16
Promises/A 和 when() 实现--When.js

When.js 是 cujojs 的轻量级的 Promises/A 和 when() 实现,从 wire.js 的异步核心和 cujojs 的 IOC 容器派生而来。包含很多其他有用的 Promiss 相关概念,例如联合多个 promiss、mapping 和...

匿名
2013/02/15
7.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

认识Node

什么是Node? Node 是 JavaScript 的一种运行环境。可以使 JS 代码不依赖浏览器也可以执行。他俩的差异如下: 两个运行环境都包含了 ECMScript 。另一方面 JavaScript 包含了 BOM 和 DOM。 ...

长臂猿猴
8分钟前
0
0
正则表达式中的非捕获组是什么? - What is a non-capturing group in regular expressions?

问题: 非捕获组(即(?:) )如何在正则表达式中使用,它们有什么用? 解决方案: 参考一: https://stackoom.com/question/Ejkl/正则表达式中的非捕获组是什么 参考二: https://oldbug.net...

技术盛宴
8分钟前
0
0
他在国外演讲时说,学Python只要看答案做完这几十道题,就足够了

你想学Python?其实很简单,因为Python本身就是一门比较简单的编程语言。 你要做的也就是看着答案做完这几十道题就可以了,不管你是不是有编程基础,因为答案摆在那儿,你不可能不会做。 为什...

python小天
9分钟前
0
0
「2020最新」Spring最易学习教程 4—整合Mybatis 事务控制

0 复习 代理模式 代理模式,可以为目标类添加额外功能。 Spring 动态代理 定义目标类对象 定义额外功能,增强。实现Spring内置的接口 配置增强类 定义切入点 编织组装 增强类型 前置增强 Me...

鹿老师的Java笔记
28分钟前
21
0
OpenCV开发笔记(六十九):红胖子8分钟带你使用传统方法识别已知物体(图文并茂+浅显易懂+程序源码)

若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址:h...

红模仿_红胖子
45分钟前
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部