文章目录

  • 一、后端服务器架构发展
  • 二、Serverless 与 ServerFul
  • 三、Serverless 定义
  • 四、Serverless 优缺点

【本文正在参与 “100%有奖 | 我的Serverless 实战”征稿活动】活动链接

一、后端服务器架构发展


后端服务器架构发展 :

物理机 + 应用 : 初期是由开发者 自己购买服务器 , 托管在机房 , 部署运行环境 , 然后为其申请 IP 地址并绑定服务器 , 在服务器上运行相关服务器软件 , 如 Tomcat , Oracle 等 ; 该方案 , 除了开发之外 , 还要有硬件维护相关工作 ;

虚拟机 + 云平台 + 应用 : 将一台物理上的主机 , 分割为多个虚拟主机进行使用 , 服务器等硬件设备由云平台厂商提供 , 如阿里云 , 腾讯云等 ; 开发者可以直接购买虚拟机 , 如亚马逊的 EC2 , 阿里云的 ECS , 腾讯云的 CVM ; 在云平台中 , 可以将 数据库运行在云数据库中 , 相关的 文件资源可以存储在对象存储中 , 这样使用维护起来 , 使用更方便 , 风险更低 , 性能可以弹性伸缩 ; 服务器只需要处理业务逻辑 , 存储于功能分离开来 , 更加安全 ; 开发者不需要维护硬件 , 但是相关软件维护工作 , 还是需要花费很多精力 ;

容器 + 应用 : 使用虚拟机时 , 服务器每次扩容 , 都需要初始化先关的运行环境 , Docker 技术出现后 , 在虚拟化基础上 , 将运行环境和部署的业务绑定在一起 , 这样每次初始化服务器时 , 直接使用 Docker 容器直接部署即可 ;

容器编排 : 如果需要短时间内对服务器进行扩容 , 增加服务器吞吐量 , 那么就需要加入很多 Docker 容器 , 管理这些容器对应的技术就是容器的编排技术 , 进行容器编排工作 ;

Serverless 架构 , 就是为了解决上述运行环境问题而提出的 , 开发者可以只关心业务实现 , 不用再服务器 , 运维等方面花费太多的时间和成本 ,

二、Serverless 与 ServerFul


传统的后端开发方式可以理解成为 ServerFul , 服务器的一切细节 , 软件 , 硬件 , 数据库 , 网络 , 空间 等都需要开发者来关注 , 如果任意一个方面出现故障 , 都有可能造成整个系统宕机 ;

ServerFul 架构中 , 开发者需要关注 服务器弹性伸缩 , 负载均衡 , 异地容灾备份 , 性能监控 , 网络安全 , 负载均衡 , 数据 / 文件存储 , 等各种细节 , 这些需要投入大量的成本 ;

Serverless 是后端架构的一种概念 , 思维 ;

并不代表没有后台服务器 , 只是说将相关的服务器工作 , 尽最大可能托管给云平台 , 开发者不用关心服务器运维相关的工作 ;

借用该架构 , 开发者只需要开发相关应用业务逻辑 ; 后端的服务器 , 资源等的管理维护工作 , 交给云平台即可 ; 云平台负责调度管理上述服务器运维工作 ;

云平台基于上述理念 , 提供 Serverless 服务 , 由于没有统一的标准 , 每家云平台提供的云服务都略有差异 ;

三、Serverless 定义


Serverless 的定义 : 采用 Faas 和 Baas 服务解决问题的设计 ;

  • Faas : Function as a Service 函数即服务 , 云平台提供平台 , 开发者只负责开发运行管理业务逻辑 , 无需相关维护操作 ;

  • Bass : Backend as a Service 后端即服务 , 云平台提供整合云后端服务 , 如文件/数据存储 , 推送 , 登录验证等 ;

开发者只需要开发业务逻辑代码即可 , 相关的登录 , 注册 , 存储 , 使用 Bass 提供的服务即可 , 同时开发者将写好的代码提交到 Serverless 中 , Serverless 有一个专门运行逻辑代码的空间 , 这个空间就是 Faas ;

Faas 的本质就是函数运行平台 , 该平台支持各种主流语言 , 如 Java , Python , JavaScript 等 ; 开发者对 Fass 平台底层的服务器 , 硬件配置 , 系统环境 等无感知 ;

四、Serverless 优缺点


Serverless 特点 :

  • 没有运维 : 开发者 不需要关心服务器的运维工作 ; 运维工作由云平台提供 ;

  • 事件驱动 : Serverless 上部署的函数 , 不是随时都在运行 , 而是通过条件触发 , 如用户的 HTTP 请求 , GET / POST 请求等 ; 这些触发事件 , 称为触发器 , 集成在 Faas 平台 , 开发者可以直接调用 ; 传统的服务器 , 需要一直运行一个 Tomcat 服务器 , 如果该服务器宕机 , 用户则无法访问网站 ;

  • 按量付费 : 按照 Faas 函数执行时所消耗的资源进行付费 , 如 CPU 性能占用及时长 , 内存使用量 , 显卡计算量 , 磁盘空间 等 ; 上述资源使用多少 , 就支付相应费用 , 如果不用 , 就不需要支付费用 ;

  • 弹性伸缩 : Faas 的函数实例可以自动进行创建 / 销毁 , 其可以根据当前的需求并发量 , 自动创建 / 销毁函数实例 ; 每个函数的资源调用量不设上限 , 如果需要可以实时申请很多资源 ;

  • 计算存储分离 : Serverless 的架构 计算 与 存储 分离 , Faas 负责计算 , Baas 负责存储 ;

Serverless 缺点 :

  • 云平台依赖性强 : 对 云平台 依赖性很强 , 不同的云平台之间的标准不统一 , 一旦开发部署完毕 , 就 无法更换云平台 ,

  • 调试困难 : 本地开发环境无法模拟云平台运行环境 , 相关的开发环境也不完善 ;

【本文正在参与 “100%有奖 | 我的Serverless 实战”征稿活动】活动链接

我的 Serverless 实战 — Serverless 架构理念 ( 后端服务器发展 | Serverless 与 ServerFul | Serverless 定义 | 架构优缺点 )相关推荐

  1. Spring Boot Serverless 实战 | Serverless 应用的监控与调试

    作者:西流|阿里云函数计算专家 导读:Spring Boot 是基于 Java Spring 框架的套件,它预装了 Spring 的一系列组件,让开发者只需要很少的配置就可以创建独立运行的应用程序.在 ...

  2. 我的 Serverless 实战 — 入门项目实战(2021以后都属于云的时代!)

    [本文正在参与 "100%有奖 | 我的Serverless 实战"征稿活动] 活动地址: 100%有奖 | 我的Serverless 实战 文章目录 前言 什么是Serverle ...

  3. 电脑端京东的我的订单html+css页面_互联网系统架构前后端分离技术体系

    点击「京东数科技术说」可快速关注 「摘要」随着互联网技术的发展以及终端设备的不断增多,前后端分离技术已成为移动互联网领域不可或缺的技术.前后端分离技术的不断完善,让前后端的分工与系统边界划分越来越清晰 ...

  4. 服务器体系(SMP, NUMA, MPP)与共享存储器架构(UMA和NUMA)

    <Linux内存管理:转换后备缓冲区(TLB)原理> <内存管理:Linux Memory Management:MMU.段.分页.PAE.Cache.TLB> <Mem ...

  5. c#服务器后端_一文看懂Serverless:AWS阿里云腾讯云都在发力「无服务器架构」

    冠望 发自 凹非寺 量子位 报道 | 公众号 QbitAI 要说目前软件架构中热度十二分的话题,当属Serverless. 通常我们会将其翻译为"无服务器架构". 尽管成天被称为& ...

  6. Spring Boot Serverless 实战系列“架构篇” | 光速入门函数计算

    作者 |:西流(阿里云函数计算专家) Spring Boot 是基于 Java Spring 框架的套件,它预装了 Spring 一系列的组件,开发者只需要很少的配置即可创建独立运行的应用程序. 在云 ...

  7. Spring Boot Serverless 实战系列“架构篇” 首发 | 光速入门函数计算

    简介:如何以 Serverless 的方式运行 Spring Boot 应用? 作者 | 西流(阿里云函数计算专家) Spring Boot 是基于 Java Spring 框架的套件,它预装了 Sp ...

  8. Spring Boot Serverless 实战系列“架构篇”首发 | 光速入门函数计算

    作者 | 西流(阿里云函数计算专家) Spring Boot 是基于 Java Spring 框架的套件,它预装了 Spring 一系列的组件,开发者只需要很少的配置即可创建独立运行的应用程序. ​ ...

  9. 理解Serverless架构理念

    2019独角兽企业重金招聘Python工程师标准>>> 理解Serverless架构理念 No silver bullet. - The Mythical Man-Month 许多年 ...

最新文章

  1. 推荐C、C++、Java、网络安全、Unix、Linux 一些编程书
  2. python用户名密码登录、错误三次结束_Python实现简单的用户登录信息确认,密码输错3次后,用户被锁定...
  3. mysql多数据源切换_Springboot项目实现Mysql多数据源切换的完整实例
  4. 使用monkey命令来打开一个app
  5. 2g 双核电脑 linux,9208)(奔腾双核E5200/2G/320G)电脑详细技术
  6. c#的winform调用外部exe作为子窗体
  7. 为什么python删除不了_为什么python的imp.reload()不会删除旧的类和函数?
  8. WPF 禁止在文本框中输入数字
  9. C++中STL-queue使用方法
  10. 一种数据结构的封装模式
  11. C++_类和对象_对象特性_拷贝构造函数调用时机---C++语言工作笔记042
  12. 反编译工具ILSpy的下载与使用
  13. RapidShare 真实链接抓取助手
  14. matlab 矩阵位移法编程 结构力学,matlab-矩阵位移法编程-结构力学.doc
  15. Python 类的知识点
  16. html的锚标记,HTML验证锚标记
  17. 如何限制在制品?| Kanban
  18. 使用python中的Selenium爬取百度文库word文章
  19. Maven系列之使用阿里云仓库
  20. nginx安装配置记录

热门文章

  1. 适用于 php-5.2 的 php.ini 中文版
  2. Bootstrap4 导航栏元素居右
  3. Java多态-如何理解父类引用指向子类对象
  4. HokeyPokey — WWDC讲师特供XCode插件高仿版的设计与实现
  5. 自学python系列10:python的函数和函数式编程
  6. Vitamio打造自己的Android万能播放器
  7. ubuntu下创建eclipse桌面快捷方式
  8. Linux查看进程和终止进程的技巧
  9. 谈谈我理解的文化包容性
  10. [BZOJ3595][SCOI2014]方伯伯的OJ(裂点Splay)