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. 单片机 IAP 功能基础开发篇之APP升级(一)

    引言 目的 主要介绍单片机 IAP 开发的设计思路,如何不使用下载烧录器的方式对单片机的程序进行升级,升级区域包括 bootloader 和用户程序的升级,升级方式有 UASRT 通信.CAN 通信和 ...

  2. 硬件、OS、数据库各种兼容性傻傻分不清?

    服务器硬件型号.OS操作系统版本.Oracle数据库版本.. 各种型号各种版本,排列组合的话也是N多种组合,如何确认这些可以兼容并且得到官方认证呢? 其实很简单,各司其职,各自去确认各自的. 我们知道 ...

  3. Docker生命周期,一张图秒懂docker

  4. RedHat Enterprise Linux 8.0终端命令界面字体放大缩小

    一.打开RedHat的终端命令界面. 二.放大界面中字体,Ctrl + Shit  + "+" 三.缩小界面中字体,Ctrl +  "-"

  5. crontab 里如何创建带日期的日志文件

    需求在crontab 执行定时任务时,将执行的任务输出到带日期的文件中 crontab中,执行脚本需要传入系统时间date +"%Y-%m-%d" 问题今天遇到一个crontab问 ...

  6. Sigrok逻辑分析仪软件(基于CY7C68013A)

    关于逻辑分析仪 逻辑分析仪在调试数字电路时是非常重要的工具. 其形式与示波器类似, 采集被检测信号的电平, 并绘制时序图进行分析. 逻辑分析仪和示波器的区别: 数字量和模拟量: 示波器采集的是模拟量, ...

  7. letcode-Z字抖动

    题目 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下 ...

  8. 新零售SaaS架构:什么是订单履约系统?

    什么是订单履约系统? 订单履约系统用来管理从接到销售订单,到把货品送到客户手中的整个业务过程.它是上游交易(如销售和客户下单环节)和下游仓储配送(如库存管理.物流)之间的桥梁,确保信息流的顺畅和操作的 ...

  9. C++ 多线程的错误和如何避免(11)

    不要在对时间敏感的上下文中使用 .get() 先看下面的代码, #include "stdafx.h" #include <future> #include <i ...

  10. win32改变静态控件的文本大小

    HWND static_ = CreateWindow(L"STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 100, 100, 10 ...