Serverless

闲言碎语

前段时间看了一些Serverless的文章,恰好最近又听了一门Serverless的应用实践课程,就把笔记拿出来和大家分享一下,如表述有误还请各位斧正

大家关心的问题

  1. Serverless是什么
  2. 为什么Serverless这么火
  3. 与前端的关系
  4. 能帮助前端解决什么问题
  5. 该不该用Serverless来承载业务
  6. 扩缩容策略是什么

因笔者能力有限,无法全都回答上,其它的就交给评论区的各位大牛了

Serverless 是什么

Serverless直译为中文是“无服务器”,但是实际上它仍需要服务器,只不过服务器的管理以及资源分配部分对用户不可见

Serverless 架构即“⽆服务器”架构,它是一种全新的架构方式,是云计算时代⼀种⾰命性的架构模式

相关概念

英文 中文 解释 与Serverless联系
FaaS
----
Function as a Service
函数即服务 无服务计算的一种形式
是在无状态容器中运行的事件驱动型计算执行模型
形式
Function Compute 函数计算 事件驱动的全托管计算服务 形式
Cloud Function ️云函数 放在️上管理的一个函数 命名

传统开发

开发流程

开发之外的问题

对开发团队的要求越来越高

上线后

  • 运维复杂
  • 测试复杂
  • 扩展复杂
  • 稳定安全的运行

解决上述困境的方案:抽象+上云

技术变革,思想先行

名词解释(云计算中的一些概念):

  • On-Premise: 本地部署
  • IaaS: 基础设施即服务
  • CaaS: 通信即服务
  • PaaS: 平台即服务
  • SaaS: 软件即服务

云原生特点:

  • 业务开发变轻,变薄,聚焦业务逻辑
  • 基础设施变重,变厚,变标准

云计算的一些特点:

  • 节约成本
  • 缩短应用部署时间
  • 系统自动扩容
  • 业务升级不中断
  • 故障自动检测定位
  • 。。。

“上云”已成为各个行业技术变革的必经之路

云的未来 - Serverless

追求更低的心理成本,就是能力闭环

Serverless 可能是目前资源抽象最高级别,为能力闭环带来了可能性

价值

Serverless 真正的价值不在于节省了成本,而在于节省了时间,真正的价值在于时间效率,而不是成本效率真正的价值在于时间效率,而不是成本效率

传统云计算和Serverless云计算最主要的区别在于客户是否需要为未被使用或者未被充分使用的资源支付费用

以前,无论是内部数据中心还是云上,我们都需要提前预测容量和资源需求,并且提前准备好

在传统开发中,我们需要提前启动服务器以便随时执行调整镜像大小的服务

而在Serverless配置中,只需要调整代码执行的时机,即只在函数被调用时候执行

Serverless计算服务将函数作为输入,执行逻辑,返回输出,之后关闭。即只需要为函数实际执行所消耗的资源付费,即用即付(Pay-as-you-play),只用为实际使用的资源付费.

总结

Serverless是一种思想,不一定是所谓的 FaaS + BaaS(后端即服务)

1. 为什么Serverless这么火

在中国,能算清账的公司已经打败了99%的公司

现代软件开发成本非常的高,主要就在于 “成本意识”

函数即服务(FaaS)作为 Serverless 时代重要的发展⽅向,能够从⼯程效率、可靠性、性能、成本等⽅方⾯给开发者(企业)带来巨大的价值,尤其是能够极大地提升研发效率。

因此,拥抱FaaS成为开发者关心的重要技术领域

2. 能帮助前端解决什么问题

Node.js的出现 让前端开始有了成本意识

是否在项目中使用Node的心理活动:

  • 用: 具备全栈视角,参与更多的架构决策,有更多优化手段
  • 不用: 担心出问题,维护成本高

本质问题:

生产关系 与 生产力 的问题

Node.js可以解决简单的 能力自治 , 不依赖于后端人员(业务中前期,后端人员少时)

随着业务发展,成熟的业务追求更高的稳定性,会逐渐抛弃 Node.js

Node.js带来了 运维成本高 的问题,是Node.js在企业落地的一个阻碍

理想情况是开发人员只关心业务逻辑:

  • 常规应用

    • 业务逻辑(开发人员负责)
    • 外部服务集成(开发人员负责)
    • 基础设施管理(开发人员负责)
  • Serverless应用
    • 业务逻辑(开发人员负责)
    • 外部服务集成(云商负责)
    • 基础设施管理(云商负责)

对于前端开发者而言,只是想要个接口,或者是包装一个接口,不一定要了解Node Web框架

Node.js成也Eventloop败也Eventloop,本身Eventloop是黑盒,开发将什么样的代码堆进去你是很难全部覆盖的,偶尔会出现Eventloop阻塞的情况,排查起来是极为痛苦的

利用Serverless,可以有效防止Eventloop阻塞。比如加密是常见场景,但本身执行效率是非常慢的。如果加解密和你的其他任务放到一起,是很容易导致Eventloop阻塞的

Serverless能够让依赖Node服务的前端极大减低成本,开发者只需关注业务逻辑,无需关心运维,扩容,Web框架

本地开发一个函数,然后通过CLI发布到Serverless云上,必然是一个趋势

参考

Serverless学习笔记的更多相关文章

  1. 学习笔记之Coding / Design / Tool

    CODING 学习笔记之代码大全2 - 浩然119 - 博客园 https://www.cnblogs.com/pegasus923/p/5301123.html 学习笔记之编程珠玑 Programm ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  3. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  4. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  5. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  6. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  7. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  8. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  9. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  10. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

随机推荐

  1. RocketMQ—RocketMQ消费重试和死信消息

    RocketMQ-RocketMQ消费重试和死信消息 消费重试 生产者重试 设置重试的代码如下 // 失败的情况重发3次 producer.setRetryTimesWhenSendFailed(3) ...

  2. NC20164 [JSOI2008]最大数MAXNUMBER

    题目链接 题目 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作.语法:Q L 功能:查询当前数列中末尾L 个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度. ...

  3. WebAssembly照亮了 Web端软件的未来

    WebAssembly的发展历程相对较短,但影响深远.WebAssembly 于 2015 年首次发布,先驱技术是来自Mozilla的asm.js和Google Native Client,最初的实现 ...

  4. Java容器及其常用方法汇总

    1 概述 Java Collections 框架中包含了大量的接口及其实现类和操作它们的算法,主要包括列表(List).集合(Set).映射(Map),如下: 接口 实现类 数据结构 初始容量 加载因 ...

  5. Java操作EasyExcel实现导入导出入门

    介绍 EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单.节省内存著称.EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从 ...

  6. 一秒出图?SDXL-Turbo实时AI绘画整合包下载

    SDXL Turbo是一种快速生成的AI构图模型,它基于一种称为对抗性扩散蒸馏的新训练方法,该方法允许在1到4个步骤中以高图像质量对大规模基础图像扩散模型进行采样,并将其与对抗性损失相结合,以确保即使 ...

  7. 自定义组件WebComponents加HTML模板template元素及shadowDOM影子DOM及定义一些事件

    自定义组件WebComponents加HTML模板template元素及shadowDOM影子DOM及定义一些事件 Web Components 自定义组件,可以自定义一个类似于div的元素,里面的事 ...

  8. 禁用Windows自动更新并允许手动更新

    新版的 Windows 经常会自动检查更新,然后在某个夜深人静的晚上帮你自动更新. 对于自动更新,一般的解决方案是直接禁用 Windows 更新服务.这种方式虽然关闭了自动更新,但会影响手动更新.Wi ...

  9. 程序员应具备的PS基本技能(三):程序员使用PSD源文件切图

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

  10. 进度条模块之tqdm

    导入模块 from tqdm import tqdm import time ''' desc 描述 ncols 进度条总长度 可修改 range(1000) 封装迭代器 ''' for i in t ...