作者丨Jan Stenberg

译者丨核子可乐

Wisen Tanasa 在最近的博文当中提到,在目前关于无服务器架构的文献当中,有相当一部分由云服务供应商提供赞助,因此在内容上存在单纯强调优势的倾向。但 Tanasa 认为,每当有新的技术出现时,最重要的是全面了解其意义,因此我们应该从客观角度出发探讨无服务器架构的特性。

作为 Thoughtworks 首席开发者,Tanasa 表示他更倾向于使用“特质(trait)”、而非特性,因为他认为这些属于无服务器架构的固有元素,我们无法像处理其它可塑特性那样做出调整。特质是天然存在的,所以我们必须接受,而非与其针锋相对。

无服务器架构拥有较低的入门门槛;大家能够遵循教程轻松了解如何上手。但 Tanasa 指出,虽然开发人员面对的初步学习曲线比较平缓,但随着项目变得更为复杂,曲线也会迅速呈现出陡峭的态势。在无服务器的世界中,代码、日志记录以及监控等基础设施仍然必不可少。此外,他还注意到开发人员在面对无服务器架构时往往有忽略代码设计的倾向——很多人认为自己只是在直接使用函数。他强调称,对于最重要的构建原则,我们在无服务器世界中同样不应忽视。无论是 SOLID 这类设计概念,还是持续交付原则,都将在无服务器领域继续发挥重要作用。

在无服务器的世界里,不存在主机的概念——我们完全不需要面对任何服务器。由此带来的一大优势,在于显著减少了运营开销——不需要升级服务器、也不必考虑应用程序所必需的安全补丁。但与此同时,这也意味着我们需要对应用程序中的不同度量标准进行监控,换言之我们必须重新学习如何调整整个架构。Tanasa 强调称,尽管能够自动添加安全补丁,但应用程序安全实践在无服务器环境仍然适用。一个典型的例子就是不要在代码当中存储密码,这实际上跟无不无服务器没有关系。

函数即服务(FaaS)具有临时性,这意味着无服务器本身是无状态的。由于状态不会被存储在应用程序当中,因此横向扩展就变得非常简单——只需要直接启动更多实例即可。另外,无状态也意味着发生错误的空间大大减少。但是,无状态也意味着我们无法利用众多有状态技术进行应用程序开发;例如,我们将无法使用 HTTP 会话。

再有,无主机也意味着架构本身具有弹性。换言之,我们不必手动管理资源,资源分配方面的很多原有难题也将随之消失。一般来讲,这还意味着我们只需要为实际使用的资源付费。但在与遗留系统相集成时,这种弹性也有可能带来新的挑战。Tanasa 指出,除非传统系统能够像无服务器组件那样轻松扩展,否则我们必须限制负载以防止其因过载而发生故障。

在默认情况下,无服务器架构当中包含大量通过网络进行分布式集成的组件。持久性由后端即服务(BaaS)负责实现,代码则以多项函数的形式运行,其它服务用于实现身份验证与队列等功能。分布式特质也为架构带来了高可用性。如果当前可用区存在问题,则架构可以使用另一可用区。不过分布式应用程序在一致性方面需要做出权衡,最典型的两种选项就是写入后读取以及最终一致性;我们在更新以及读取数据时,必须考虑到这些具体情况。

由于利用 BaaS 支持事件,因此无服务器架构还具有事件驱动特质。Tanasa 指出,这并不是说开发者必须完全接受事件驱动型架构,但事件驱动确实能够带来诸多优势。举例来说,事件驱动能够显著降低各组件之间的耦合水平。但这同时也会带来无法建立系统整体视图的风险,并提高排除系统故障的难度。

Tanasa 最后指出,无服务器架构带来了一种有趣的范式转变。其改进了软件开发当中的诸多方法,同时也引入了一系列需要由开发人员以及团队加以适应的全新挑战。

在另外两篇博文中,来自 Symphonia 公司的 Mike Roberts 描述了他对于无服务器的定义。在他看来,无服务器应用程序是一类利用无服务器服务实现的应用程序,且此类服务必须具有以下五点共通特质:

  • 不需要管理服务器主机或者服务器进程。

  • 根据负载进行自动规模伸缩与自动配置。

  • 根据使用情况决定实际成本。

  • 性能容量以不同于主机规模或数量的其它术语进行定义。

  • 具备隐含的高可用性。

Jonas Bonér 在今年早些时候的一篇博文中也提到,虽然他力挺无服务器这波浪潮,但编程模型不应只关注无状态函数,因为这同时也会严重限制所能支持的用例类型。

另外,在 2017 年的一篇博文中,Martin Fowler 提到了事件通知的风险,并指出虽然事件通知模式非常实用,但也增加了大规模流量长期处于监控之外的风险。

原文链接:

https://www.infoq.com/news/2019/08/traits-serverless-architecture/

点个在看少个 bug ?

08 域控 架构主机 转移_论无服务器架构的特征相关推荐

  1. 08 域控 架构主机 转移_域控制器的角色转移与抢占

    今天我们通过一个实例为大家介绍如何实现操作主机角色的转移, 这样如果 Active Directory 中操作主 机角色出现了问题,我们就可以用今天介绍的知识来进行故障排除. 我们首先要明确一个重要原 ...

  2. 08 域控 架构主机 转移_域控服务器迁移步骤(精)

    域控服务器迁移步骤 假设主域控制器的 IP 为 192.168.1.10 ,额外域控制器的 IP 为 192.168.1.20 第一步:主域迁移之前的备份 : 1. 备份主域服务器的系统状态 2. 备 ...

  3. SolarWinds:什么是无服务器架构?它有哪些优点和缺点?

    作者 | SolarWinds首席极客 Chrystal Taylor 供稿 | SolarWinds 随着IT行业的快速发展和网络带宽的不断消耗,人们对计算和数字存储的需求也越来越大.在此背景下,云 ...

  4. 看完这篇你就知道什么是无服务器架构了

    作者 | Systango,译者 | 无明.策划 | 小智 Gartner 最近的一份报告表明:到 2020 年,全球将有 20% 的企业部署无服务器架构.这说明无服务器架构不只是一个流行语,而是一种 ...

  5. 无服务器架构_如何开始使用无服务器架构

    无服务器架构 Traditionally, when you wanted to build a web app or API, you'd usually have to spend signifi ...

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

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

  7. plsql无监听程序_详细!看看顶级互联网公司都在研究的无服务器架构!

    无服务器计算(Severless computing,简称 Serverless)现在是软件架构圈中的热门话题,国外三大云计算供应商(Amazon.Google 和 Microsoft)都在大力投入这 ...

  8. 服务器控件的优点和缺点_什么是无服务器架构? 它的优点和缺点是什么?

    服务器控件的优点和缺点 Serverless, the new buzzword in town has been gaining a lot of attention from the pros a ...

  9. 微服务架构 性能提升_如何通过无服务器架构提高性能

    微服务架构 性能提升 by Domenico Angilletta 通过多梅尼科·安吉列塔(Domenico Angilletta) 如何通过无服务器架构提高性能 (How to boost your ...

最新文章

  1. 扯淡设计模式之装饰者模式
  2. RocketMQ:消息ACK机制源码解析
  3. UNITY Profiler 真机调试
  4. [f]动态判断js加载完成
  5. c++new时赋初值_C高级编程精髓之内存管理,万千码农踩过的雷,大神带你走出雷区...
  6. SQLAlchemy 多条件查询
  7. 创建Session时会把含有Session ID 的Cookie对象加到响应对象上
  8. linux tcp文件分包_Linux c实现一个tcp文件服务器和客户端
  9. 1.Web前端之CSS3中3D立方体以及3D轮播图
  10. JAVA-初步认识-第七章-this关键字内存图解
  11. 宏基因组 微生物组 微生物生态领域杂志简介及最新影响因子
  12. Android航海航线地图,Alfa的航海大时代航线介绍 全航线跑商路线详解
  13. 网站优化关键词选择时需要的注意事项
  14. 抽象类和接口的区别(之二)
  15. 12306列车时刻表查询api功能实现
  16. Unity UGUI 图文混排
  17. 设置微信小程序支持npm(解决微信小程序npm构建时提示“没有找到可以构建的NPM包,请确认需要参与构建的npm都在miniprogramroot目录内,或配置project...”错误)的方法
  18. 【Excel】绘图案例_常见复合图:簇状图+堆积图+折线图
  19. 三代日期类的基本使用
  20. Selenium——文件另存为

热门文章

  1. IE6,IE7,FF等浏览器不兼容原因及解决办法(转)
  2. 【机器学习】基于实战项目的SVM算法库使用方法详解
  3. windows下使用webpack的完美解决方案
  4. c++ Boost库之boost::bind学习
  5. How to install python packages
  6. Ubuntu14.04LTS下Firefox浏览器安装flashplugin
  7. python 利用pyttsx3文字转语音 适用于macOS windows树莓派
  8. 示波器1m和50欧姆示阻抗匹配_为什么示波器阻抗偏偏是1M和50欧?-测试测量-与非网...
  9. Flask开发系列之Web表单
  10. 正则 ?= 和 ?= 用法 以及零宽断言等概念