写点什么

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

  • 2019-12-25
  • 本文字数:2029 字

    阅读完需:约 7 分钟

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

Gartner 最近的一份报告表明,到 2020 年,全球将有 20%的企业部署无服务器架构


这说明无服务器架构不只是一个流行语,而是一种众所周知的云计算趋势,并且已经在软件世界掀起一场革命。大型厂商(如亚马逊、微软和谷歌)已经在无服务器架构领域重资投入,追赶革命的浪潮。


与其名字相反,无服务器架构实际上并没有把服务器去掉。那么,究竟什么是无服务器架构?

什么是无服务器架构?

无服务器架构是指应用程序使用第三方 Function 和服务,但不需要管理服务器。无服务器架构主要包含了两个方面:


  • FaaS(Function as a Service,Function 即服务):包含服务器端业务逻辑的无状态 Function。这些 Function 运行在独立的容器里,基于事件驱动,并由第三方厂商托管,如 AWS Lambda 或者 Azure Functions。

  • BaaS(Backend as a Service,后端即服务):使用第三方服务(如 Firebase、Auth0)来达成目的。使用 BaaS 的应用程序通常是富客户端应用程序,如 SPA 或移动 App。客户端负责处理大部分的业务逻辑,其他部分则依赖外部服务,如认证、数据库、用户管理,等等。


无服务器架构包含了 BaaS 和 FaaS,不过这篇文章着重关注 FaaS。

无服务器架构的特点

  • 不需要管理服务器;

  • 无状态;

  • 自动伸缩;

  • 没有运营成本;

  • 成本由事件驱动;

  • 处理第一个事件需要一些启动时间;

  • 因为运行时小,所以具有较高的安全性。

无服务器的生命周期

下图描述了一个 Function 的生命周期。


无服务器应用程序架构示例

假设有一个简单的线上汽车拍卖应用程序,用户可以登录并出价,拍卖时间结束时价高者得。


传统上,架构里会包含一个部署了应用程序和前端的单体服务器。



上述架构采用的是瘦客户端方式,所有的业务逻辑(如认证、回话管理、车辆管理等)都部署在服务器端。


那么,在一个无状态的微服务架构中,这个应用程序又会是什么样子?



原来的单体应用程序被拆分成了多个服务器端组件。


  • 认证 Function:这是一个用于管理用户认证(登录)的 Function(Function,FaaS)。

  • 车辆管理服务:一个处理与车辆相关操作的微服务,如列出车辆、查看车辆信息、比较车辆,等等。这个服务可以使用任意的语言或框架来开发,它与数据库通信,并且独立运行。

  • 车辆出价 Function:这是另外一个 Function,也与数据库通信,录入用户出价记录。

  • API 网关:所有服务的入口点和反向代理。来自客户端的请求会先到达网关,网关根据路由规则将请求重定向到特定的服务。


在将服务拆分成微服务或 FaaS 时,需要考虑到业务逻辑、负载、规模等方面的因素。


上述的例子描述了无服务器架构和基于无服务器架构设计微服务时的大致过程。

无服务器架构与 PaaS

平台即服务(Platform as a Service)是另一个不需要开发人员管理服务器(包括硬件和软件)的架构莫斯。正因为如此,开发人员容易把无服务器架构和 PaaS 混为一谈。接下来,我们来看一看它们之间的相似点和不同点。

相似点

  • 开发人员不需要管理服务器。

  • 开发人员只要关注应用程序代码本身。

不同点

  • PaaS 提供了更为可控的部署方式,而无服务器的部署则更为严格。

  • 无服务器架构可以自动伸缩,而 PaaS 的伸缩需要进行配置。

  • 无服务器架构的成本是由事件驱动的,而 PaaS 是固定的。

  • PaaS 应用程序在部署之后会一直运行,并马上开始处理请求,而无服务器需要等待第一个事件,具体取决于事件的发生频率。

用例

无服务器的应用应该不仅限于某个领域、业务或架构。在进行应用程序架构时,你需要考虑多个因素,这些因素同样适用于无服务器架构。


  • 成本——无服务器架构非常节约成本,具体取决于实际的负载。

  • 服务器管理——无服务器架构可以极大地降低用于管理服务器的运营成本。

  • 伸缩——无服务器架构可以自动伸缩。

  • 响应时间——FaaS 需要一些初始化时间。如果负载很小(比如一个小时只有一个事件),每个请求都会经历冷启动,导致整体响应变慢。

  • 更快的发布周期——因为这些 Function 都是很小的单位,发布周期就变得很短。


以下是一些常见的用例


  • Web 应用程序;

  • 批处理和调度;

  • 移动和 IOT 后端;

  • 聊天机器人。

为什么要采用无服务器架构?

使用无服务器架构和 FaaS 有以下这些好处。


  • 减少服务器管理成本;

  • 减少运营成本;

  • 自动伸缩;

  • 比不间断运行的服务更安全;

  • 成本由请求或事件数来决定;

  • 更简单的打包和部署流程;

  • 缩短发布周期;

  • 开箱即用的监控。

无服务器架构的限制

与其他任何一种技术架构一样,无服务器架构也存在同样的限制。


  • 启动延迟;

  • 厂商锁定,对服务器缺乏控制;

  • 性能优化局限于代码内部;

  • 执行时间限制(AWS Lambda 的执行时间限制为 15 分钟);

  • 成本不可预测;

  • 开发环境和生产环境不一样;

  • 测试和调试更为复杂。

总结

无服务器架构是一种架构风格,通过 FaaS 将业务逻辑从长期运行的组件中移到临时的 Function 里。它可以解决很多架构和运营问题,简化开发者和运维人员的工作。


与其他解决方案一样,无服务器架构并不是银弹。它无法直接取代现有的组件,在决定是否要采用无服务器架构之前需要先分析一下自己的业务和技术需求,通盘考虑各种优点和缺点。

英文原文

Serverless Architecture- Why and How It’s a Smart Choice?


2019-12-25 10:5410044
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 390.7 次阅读, 收获喜欢 1982 次。

关注

评论 1 条评论

发布
用户头像
平台即服务(Platform as a Service)是另一个不需要开发人员管理服务器(包括硬件和软件)的架构莫斯。

“架构莫斯”-错别字
2020-01-15 10:45
回复
没有更多了
发现更多内容

龙蜥社区第 21 次运营委员会圆满结束!

OpenAnolis小助手

开源 操作系统 龙蜥社区 运营委员会

UniApp打包教程:使用HBuilder X和AppUploader完成原生App云打包和上架指南"

雪奈椰子

app小程序开发的重点在哪里?|企业软件定制网站建设

Geek_16d138

小程序开发 软件定制 app定制开发

Trapcode Suite for Mac(红巨星粒子插件) 2024.0.2激活版

展初云

Mac 3D粒子插件 红巨星粒子插件 Red Giant Trapcode Suite

和小伙伴们仔细梳理一下 Spring 国际化吧!从用法到源码!

江南一点雨

Java spring

Red Giant Trapcode Suite for Mac中文版 红巨星粒子插件

加油,小妞!

红巨星粒子插件 Red Giant Trapcode Suite

支付宝小程序云托管, 1 分钟即可完成支付宝开放产品服务端部署

TRaaS

支付宝小程序 代码云托管

三大基础方案和AI出海计划重磅发布!加速盘古大模型生态发展

华为云开发者联盟

华为云 华为云开发者联盟 华为云盘古大模型 华为云AI出海计划

Vue3设计思想及响应式源码剖析 | 京东物流技术团队

京东科技开发者

Vue 前端 源码阅读 VUE 3.0 源码 企业号11月PK榜

iOS APP包分析工具 | 京东云技术团队

京东科技开发者

ios 包体积 企业号11月PK榜 ipa

音色逼真、韵律自然的AI人声克隆限时福利!

阿里云CloudImagine

云计算 视频云

服务器如何搭建虚拟主机

Geek_f19a80

服务器

简单的剪贴板工具 PasteNow中文激活版

胖墩儿不胖y

Mac软件 剪切板工具 剪切板软件

PasteNow for mac(剪贴板工具)

展初云

Mac软件 剪切板工具

UltraCompare 23 for Mac文件比较工具

展初云

Mac 文件对比工具 UltraCompare

Mac看图软件:XnViewMP for Mac

加油,小妞!

看图软件 XnViewMP

华为云开源 | 线下meetup • 中国人民大学站

华为云开源

云原生 时序数据库 AI大模型 Meetup 华为云开源

互动LED电子大屏幕成为商显市场的头牌

Dylan

人脸识别 3D vr LED显示屏 AR、

发挥云计算潜力:Amazon Lightsail 与 Amazon EC2 的综述

亚马逊云科技 (Amazon Web Services)

云计算 API Amazon EC2 VPS Amazon Lightsail

Dapp开发

区块链技术

赛桨在结构领域全新探索:机理驱动的无网格结构拓扑优化

飞桨PaddlePaddle

飞桨 AI for Science

全套赛事系统支持:和鲸祝贺粤港澳大湾区这项算法大赛圆满收官!

ModelWhale

人工智能 数据分析 算法赛 大学生竞赛 广州黄埔

协同办公零代码领先实践之企业用品管理

用友BIP

协同办公

数据库系统概述之常用数据库

小齐写代码

iOS信号量造成线程优先级反转 | 京东云技术团队

京东科技开发者

ios 优先级反转 企业号11月PK榜 ios信号

软件测试/人工智能丨长春工业大学“火焰杯”软件测试赛喜获佳绩

测试人

人工智能 软件测试

看完这篇你就知道什么是无服务器架构了_服务革新_Systango_InfoQ精选文章