文章目录

  • PaaS
  • FaaS
  • 开发者经验
  • 总结
  • 原文

我们都知道微服务是分布式进程,必须独立发布、部署和扩展。乍一看,平台即服务(PaaS)函数即服务(FaaS),又称无服务器。这两种云计算模型也能够在软件开发过程中,提供非常短的交付时间,从而促进创新和持续研究。

然而,当深入研究它们的技术细节时,会很快意识到它们并不总是适用在相同的场景。

PaaS

Platform-as-a-Service(平台即服务)是一种云模型,你提供源代码,平台将打包、发布、供给、部署、运行、监控和扩缩微服务。我能想到的最好的例子是Cloud Foundry, Heroku和谷歌App Engine。

你的应用程序在PaaS上至少有一个实例在运行。当需要通过SSE (Server-Sent-Events)Websockets或RSocket实现通知推送时,这很方便。还有很多其他的好处,例如:及时处理传入的请求,在内存中保存数据(也称为进程内数据缓存),实现断路器模式处理部分故障,或者利用连接池来调节工作负载和减少响应时间。

FaaS

Function-as-a-Service(函数即服务)指的是计算模型,在这个模型中,你的代码将被平台打包,并作为一些可配置事件(如HTTP请求、消息到达、文件上传)的结果,在有限时间内按需运行,之后可能随时被处理。这里的优秀代表有AWS Lambda, Azure函数和谷歌云函数。

我们可以用大量的functions来组装应用程序,但每个functions需要单独配置和部署。这就是为什么FaaS有时被称为纳米服务

  • 如上所述,function生命周期在用户请求激活时开始,在返回时结束。处理时间通常受到平台的限制。

  • FaaS的自动扩展几乎是无限的,它允许我们无缝地处理工作负载峰值。另一方面,大量的函数实例可能会给我们的体系结构带来巨大的压力,直到某个地方出现了问题,我们最终将DDoS作为我们自己的后端,即:数据库、内部服务或第三方API。

  • functions往往比services粒度更细,因此我们最终需要协调、集成和管理大量的部署单元。需要实现的特性越多,成熟的FaaS应用程序就越复杂。

考虑下面的图表,比较了使用无服务器框架(Lambda + API网关)实现的项目和使用纯Node.js实现的项目之间的代码行。对于添加到软件系统中的每一个重要的功能,当使用无服务器架构时,维护项目所需的配置代码行数将以陡峭的线性速度增长。简而言之,从短期来看,无服务器架构的前景似乎不容乐观。

上图摘自:[The Real (and Hidden) Cost of Serverless Architecture](https://twintechinnovations.wordpress.com/author/twintechinnovations “The Real (and Hidden “The Real (and Hidden) Cost of Serverless Architecture”) Cost of Serverless Architecture”)

  • 如果没有用户请求需要处理,function将不会运行。这个特性就是众所周知的scale-to-zero,它是FaaS计算的标志。当工作负载较低时,它可以节省基础设施成本。

  • 另一方面,在稳定的工作负载下,运行functions的成本可能更昂贵。下面的图表比较了AWS LambdasEC2虚拟机每个工作负载的价格。

上图摘自:Economics Of Serverless

注意: 上面的图片比较的是Lambdas和重量级VM,而不是PaaS,后者在Kubernetes出现之前就已经使用了容器。以Cloud Foundry为例,我看到客户在高度规范和非常严格的生产环境中,在每个VM上运行20多个不同的微服务。这意味着之前的收支平衡将发生在平均每秒5个请求由m4.4xlarge VM支撑的平台。

开发者经验

我已经看到一些同事和公司倡导将FaaS作为一种方法,以避免构建和维护大量容器镜像以及跨各种环境协调的痛苦。

我非常同意将管理基础设施的负担,从开发人员身上抽象出来的想法。然而,我们已经看到PaaS和FaaS都能够代表开发人员处理无差别的繁重工作,包括打包、部署和自动伸缩应用程序,以及管理安全、路由和日志聚合。

没有必要仅仅为了避免大规模运行容器所带来的复杂性而采用FaaS

如果您的目标仅仅是提高开发人员的体验,那么您可能会发现,与FaaS相比,PaaS以更低的复杂性和更少的侵入性来满足需求。我相信这一理念是数字平台模式越来越多人采用的原因。

数字平台是自助服务API、工具、服务、知识和支持的基础,是一个引人注目的内部产品。自主交付团队可以利用平台以更快的速度交付产品特性,减少协调。

总结

现在炒作Serverless似乎接近尾声,可以查看为何Serverless停滞不前和Serverless未实现的潜力

我认为,每一种模式都有各自的优点和缺点。在将我们的工作负载迁移到云上时,似乎总是没有万能的解决方案。混合的方法可能会帮助我们获得最好的结果。

我目前的立场是:

  • 两种云计算模型适用于不同的场景
  • 我发现PaaS和FaaS提供了比Kubernetes更好的开发体验
  • 我不认为FaaS可以取代PaaS
  • 我不认为PaaS已经过时。事实上,我认为数字平台趋势是PaaS的一种重新尝试,但它更侧重于构建而非购买

所以您在做决定之前先考虑自己的需求和环境,无论跟风或是什么原因,甚至可以作一些体验,这是这两种云计算模型提供的最大好处之一。


翻译自PaaS 与 FaaS我应该选择在哪一个上运行我的微服务?

原文

本文首发于微信公众号【我的小碗汤】,扫左侧码关注,了解更多咨询,更有免费资源供您学习

PaaS vs FaaS,运行微服务应该选择哪个?相关推荐

  1. 【6】使用dockerfile打包/运行微服务项目,并上传到私服harbor

    使用dockerfile打包/运行微服务项目,并上传到私服harbor 关键词 dockerfile自定义demodocker 镜像 把自定义镜像上传到私服harbor 一.环境准备 主机地址 部署 ...

  2. Docker部署运行微服务

    1.环境准备: 主机: X-shell X-ftp jar包 这里只说下jar包,另外两个到官网下载即可 Idea打包jar包流程 先按这四步走 先点击左下的框框,再点击maven,出现右边的窗口,点 ...

  3. 极简的docker教程-在docker上运行微服务

    文章目录 用一个简单的demo了解docker构建自定义镜像 首先用docker拉一个nginx 编写一个Dockerfile 构建 查看自己构建的镜像是否成功了 运行 测试 了解一下Dockerfi ...

  4. 企业信息化建设中微服务架构选择的必要性

    目前大型或者超大型企业的IT平台都是烟囱式的系统架构,缘由是企业内部为了迎合业务发展不停地打造各种系统,也导致各系统间的重复功能建设和维护带来的重复投资.重复投资不仅消耗了人力.财力还有时间.但打通烟 ...

  5. php微服务rpc选择,Dora RPC:PHP 的分布式 RPC,支持微服务、服务发现

    Dora RPC 简介(Introduction) Dora RPC 是一款基础于Swoole定长包头通讯协议的最精简的RPC, 用于复杂项目前后端分离,分离后项目都通过API工作可更好的跟踪.升级. ...

  6. 告别“臃肿”,选择微服务(文末福利)

    点击标题下「异步社区」可快速关注 参与文末话题讨论,每周赠送异步图书 --异步小编 一直以来,系统的架构设计是IT领域经久不衰的话题,也是构建每一个系统最核心且重要的部分之一.它决定了系统能否满足业务 ...

  7. 新书推荐 | OpenShift在企业中的实践:PaaS DevOps 微服务

    新书推荐 <OpenShift在企业中的实践:PaaS DevOps微服务> 长按二维码 了解及购买 多位全球知名企业IT负责人联名推荐,两位红帽和亚马逊AWS云计算和微服务资深架构师和技 ...

  8. springboot jar服务器运行后无法请求_Spring boot、微服务、OAuth、OpenID的爱恨情仇!...

    在本文中,我们学习如何使用Spring boot轻松配置和部署微服务,然后使用OAuth和OpenID保护它们. 在微服务体系架构中,其中较大的应用程序由多个较小的服务组成,每个服务都有自己的目标,它 ...

  9. 基于事件驱动架构构建微服务第10部分:在docker容器内运行单元测试

    原文链接:https://logcorner.com/building-microservices-through-event-driven-architecture-part11-run-unit- ...

最新文章

  1. logback输出日志到sentry
  2. STM32F4 HAL库开发 -- SPI Flash
  3. SpringSecurity分布式整合之common工具模块创建
  4. 为tornado自定义session
  5. 复练-软考网规-虚拟化专题
  6. SAP全日志管理系统(堡垒机)
  7. python打开鼠标指定文件夹_学会python文件操作,鼠标好像没用了,学习python第10天...
  8. 高职计算机专业英语词汇,高职计算机专业英语词汇的学习方法
  9. 下载hibernate4的jar包
  10. DTCC 2020 | 阿里云李飞飞:云原生分布式数据库与数据仓库系统点亮数据上云之路
  11. matlab 周期性边界,PID控制器阶跃响应的分析(基于MATLAB仿真的实验):
  12. 军犬舆情每日热点:台湾海峡发生6.2级地震;泉州通报碳九泄漏事件处理结果
  13. 空头平仓什么意思_外汇空头平仓是什么意思?外汇如何平仓?
  14. Python案例1—人民币与美元的汇率兑换V_8.0
  15. [RK3288][Android7.1]调试笔记 --- Settings设置WLAN热点支持遥控器弹出软键盘输入法
  16. swing添加按钮监听后,面板监听失效
  17. 后缀是lnk是什么文件_lnk文件怎么打开?lnk是什么文件?
  18. 不一样的课程表,不一样的Excle--用Excle进行设计(12):网状结构
  19. ChatGPT如何提问?30句ChatGPT提问公式,快收藏
  20. 1. vue.js的快速入门使用

热门文章

  1. Java (JDK和JRE安装)简单粗暴
  2. 南邮CTF:WEB 起名字真难
  3. mysql datetime类型精确到毫秒、微秒的问题
  4. vue 项目优雅的对 url 参数加密
  5. 使用R-studio恢复硬盘数据
  6. AW3410S应用分享,10GHz / USB3.1模拟数据开关,多路复用/分离器
  7. DW_apb_uart (2)
  8. string::npos的一些说明
  9. 卡片笔记,一个不断增长的外部思想库 | 读书
  10. Eclipse 删除Git远程仓库分支