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. hv_balloon: Balloon request will be partially fulfilled. Balloon floor reached

    windows 的hyper-v 安装了 centos 或者龙蜥 操作系统,会一直提示这个信息: hv_balloon: Balloon request will be partially fulfi ...

  2. 练习(java):关于自增运算的练习

    //练习3: byte bb1 = 127; bb1++; System.out.println("bb1 = " + bb1);//-128 bb1--; System.out. ...

  3. java获取最近12个月月份

    最近在做一个换电站管理的项目,其中有一个大屏折线图.要求计算近12个月的数据.所以,就需要写一个生成近12个月月份的算法.算法如下. 一:编写生成近12个月月份的算法 二:编写判断当天是否是月初的算法 ...

  4. Windows10系统下JDK1.8的下载安装及环境变量配置

    1. JDK1.8安装 2. 环境变量配置点击此处:官网下载 根据自己的系统 ,下载相应的JDK版本. 1. JDK1.8安装双击下载的安装包(.exe文件),进行安装. 点击"下一步&qu ...

  5. DBGRIDEH 排序 我自己大总结【含DBX,Dac控件】

    1.三个属性让DBGridEH可以点击表头自动排序 只要设置下面三个属性: ColumDefValues->Title->TitleButton设为TRUE  sortlocal   设为 ...

  6. ASP.NET Core分布式项目实战(Consent 代码重构)--学习笔记

    任务23:Consent 代码重构 新建一个 Sercices 文件夹,在文件夹下新建一个 ConsentService,专门用于处理 Consent 的逻辑,我们会把 controller 中不是 ...

  7. NC210520 Min酱要旅行

    题目链接 题目 题目描述 从前有个富帅叫做Min酱,他很喜欢出门旅行,每次出门旅行,他会准备很大一个包裹以及一大堆东西,然后尝试各种方案去塞满它. 然而每次出门前,Min酱都会有个小小的烦恼.众所周知 ...

  8. Vue+SpringBoot+ElementUI实战学生管理系统-2.搭建Vue+elementUI脚手架

    1.项目介绍 前一片介绍了项目的整体情况,这一篇开始搭建前端工程,需要的朋友可以拿去自己定制.:) 2.获取源码 源码是捐赠方式获取,详细请QQ联系我 :)! 3.项目截图 登录页 列表操作 动态图 ...

  9. Qt+ECharts开发笔记(一):ECharts介绍、下载和Qt调用ECharts基础柱状图Demo

    前言   使用Qt开发大数据可视化看板,基于Qt使用QWidget或者QML是很难达到ECharts大数据看板的效果,所以使用Qt来制作.   核心思想   每一个ECharts图表使用一个无边框的Q ...

  10. 麒麟系统开发笔记(五):制作安装麒麟系统的启动U盘、物理机安装麒麟系统以及搭建Qt开发环境

    前言   电脑从U盘装麒麟系统,搭建实机Qt开发运行环境.   制作麒麟系统U盘(使用LiveUSB) 步骤一:先准备个至少8GB的U盘   之前购买的一批联想U盘,如下图:    查看U盘:   步 ...