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. 关于ASP.NET WEB API(OWIN WEBAPI)的几个编码最佳实践总结

    近期工作比较忙,确实没太多精力与时间写博文,博文写得少,但并不代表没有研究与总结,也不会停止我继续分享的节奏,最多有可能发博文间隔时间稍长一点.废话不多说,直接上干货,虽不是主流的ASP.NET CO ...

  2. Redis的Java客户端-Jedis

    Redis的Java客户端-Jedis 在Redis官网中提供了各种语言的客户端,地址:https://redis.io/docs/clients/ 其中Java客户端也包含很多: 标记为的就是推荐使 ...

  3. 20.1 DLL模块的显式加载和符号链接--《Windows核心编程》

    一.显式加载DLL模块使用函数 LoadLibrary/LoadLibraryEx HINSTANCE LoadLibrary(PCTSTR pSzDLLPathName); HINSTANCE Lo ...

  4. SOCKS5协议解析

    socks的官方文档:https://www.ietf.org/rfc/rfc1928.txt 本文改变其他作者之手,在原文基础上加入客户端的编写,完善了服务端代码,原文是Linux端的程序代码,本文 ...

  5. Idhttp Post https 连接 报“IOHandler value is not valid.”错误

    今天研究阿里巴巴的对接,发现IDHTTP 的post 如果是 https 的连接就会报:"IOHandler value is not valid."错误 加载https的站点页面 ...

  6. google三驾马车之一:Bigtable解读(英文版)

    本文重点关注了系统设计相关的内容,paper后半部分的具体应用此处没有过多涉及.从个人笔记修改而来,因此为英文版本. Bigtable: A Distributed Storage System fo ...

  7. NOI 2023 题解

    Copper Loser 的题解-- Day1 T1 方格染色 有一个 \(n\times m\) 的网格,有 \(Q\) 次操作,每次形如有三种:将 \((x_i+j,y_i)\)/\((x_i,y ...

  8. java利用hdfs api进行上传下载操作

    1.说明 最近项目中一部分大文件需要存储到hadoop的hdfs组件中,自己本地用3台centos7虚拟机搭建了一套集群.本地写点java代码测试一下. 代码部分改编自网络. 环境说明 一主二仆结构. ...

  9. Java I/O 教程(一) 介绍

    Java I/O (Input and Output) 用于处理输入和输出 Java利用流的手段来加快I/O操作.java.io包中包含了各种支持输入输出操作的类.参考下图: 我们可以利用java i ...

  10. AIGC程序员效能提升之道

    得益于IT产业近几年的繁荣,老杨所在公司的业务也出奇的兴隆,每天干不完的工作背后,也意味着健康的消耗和体重的不断增加. 曾记否,刚毕业的老杨体重刚刚堪堪破百,同事们经常调侃他说是一阵风就能吹走,经过了 ...