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. JVM metaspace思维导图整理

    JDK8中用元空间metaspace代替了永久代perm,原因和其特性简单介绍一下. 思维导图 图中gc log详解链接:https://www.jianshu.com/p/cd34d6f3b5b4 ...

  2. Linux中如何查找特定的数据是否在目录或文件中

    一个很简单的方式就是使用grep命令,grep命令是一个强大有效可靠并且很流行的命令行工具,用于查找对应的数据包含文件或者目录中在Linux环境中. 为了便于学习,我们准备了以下文件,具体想要查找以实 ...

  3. Go语言的100个错误使用场景(30-40)|数据类型与字符串使用

    目录 前言 4. 控制结构 4.1 忽视元素在range循环中是拷贝(#30) 4.2 忽略在 range 循环中如何评估表达式(#31) 4.3 忽略在 range 中使用指针元素的影响(#32) ...

  4. Python递归遍历目录并删除文件中的前N行

    1 import os 2 3 # 遍历目录下的所有文件 4 def check_file(file_path): 5 os.chdir(file_path) 6 print(os.path.absp ...

  5. gitlab+jenkins+docker持续集成环境搭建实战

    介绍 什么是持续集成? 持续集成(CI)是在源代码变更后自动检测.拉取.构建和(在大多数情况下)进行单元测试的过程.持续集成是启动管道的环节(尽管某些预验证 -- 通常称为 上线前检查(pre-fli ...

  6. DFS算法模板(2488:A Knight's Journey)

    DFS算法(C++版本) 题目一: 链接:http://bailian.openjudge.cn/practice/2488/ 解析思路: 骑士找路就是基本的DFS,用递归不断找到合适的路,找不到就回 ...

  7. 关于char * 和 char [] 的一点理解

    截取一段有用的信息: c++的char[]和char*的区别 char str1[] = "abc": 这里的"abc"是一个常量,首先会在常量存储区里存储&q ...

  8. 【Android逆向】apk 反编译

    1. Kali搭建apktool环境 1. 访问apktool 官网https://ibotpeaches.github.io/Apktool/install/ 参考红圈里的步骤处理即可 2. 执行命 ...

  9. 如何快速使用LayUI MINI框架

    是什么 LayUI MINI是基于LayUI框架开发的一套最简洁.易用的后台框架模板,它已经是一个非常完整的脚手架,有现成的页面模板可以参考甚至是直接使用. 通常来说,如果我们准备开发一套管理系统的W ...

  10. 解决xshell连不上ubuntu虚拟机

    分析 原因:虚拟机未安装ssh服务(Xshell远程连接需通过ssh协议) 解决方法 ubuntu安装ssh服务器 sudo apt-get install openssh-server 后续有问题可 ...