2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

避免不完全的云原生(六):为什么你可能不需要弹性伸缩?

  • 2021-02-05
  • 本文字数:1669 字

    阅读完需:约 5 分钟

避免不完全的云原生(六):为什么你可能不需要弹性伸缩?

本文最初发布于 The Startup 博客,经原作者授权由 InfoQ 中文站翻译并分享。


云原生开发最常见的其中一个特性是弹性伸缩。许多公司告诉我们,他们认为弹性伸缩是他们的团队评估云平台的关键需求。然而,我们很少听到这些团队告诉我们,他们为什么需要弹性伸缩。


事实上,我们甚至可以说弹性伸缩是“在云上”的标志之一。所有云平台都提供某种弹性伸缩支持。不管是 Kubernetes 中的Horizontal Pod Autoscalers(根据观察到的 CPU 利用率自动扩展 Pods 的数量),还是像AWS Autoscaling(它会自动缩放 EC2 实例、Dynamo DB 表和许多其他资源类型)这样的供应商特性,通常,弹性伸缩都被视为最想要的云特性。


如果你是一家全新的初创公司,正在构建一个新的 B2C 应用程序,那么弹性伸缩可能至关重要,因为你无法预测你的业务何时会突然腾飞。但大型企业不是初创公司。它们有现有的客户群,而且它们的使用模式在很大程度上是已知的。相反,在大多数企业中,我们看到,公司是将所有不同的工作负载作为一个整体来运行,这些工作负载大致可以分为以下几类:

  • 最大的一类是静态负载,它是可预测的、不变的负载;这可能占所有应用程序的 65%。

  • 第二大类是计划内的伸缩(季节性、批量处理或计划内的活动)——可能占所有应用程序的 35%。

  • 剩下的就是计划外的伸缩(不可预测的负载);剩下的可能非常少——在许多企业,这样的应用程序可能只有 5%。


下图展示了这个划分(取自一个真实的客户,仅用于说明这种情况):



各种伸缩情况的占比


问题是,许多团队在构建他们的应用程序时,都将其当成是这 5%的一部分,而实际上,只有很少的应用程序属于这 5%,这 5%总是受到计划外负载的影响。现在,这并不是一个新问题。在相对更传统的应用程序环境中,常见的方法是准备远超需要的基础设施,“以防万一”。显然,这是一种浪费,也是团队想要迁移到云的原因之一。然而,理想的云原生方法假定每个功能都部署成可无限扩展的。然而,对于我们与之合作的那类大型企业,更好的方法是设法识别这 5%的功能,将它们从庞大的单体中分离出来,并以云原生的方式构建它们(例如,它们可能是 Strangler 模式的早期候选对象)。


因此,假设所有的云原生程序都必须具有弹性和无限的可伸缩性,通常是一种误导——相反,对于 95%的企业应用程序来说,更重要的是弹性而不是弹性伸缩。反之,如果我们需要的是横向稳定性(这是实现横向伸缩的必要条件),那么,这些程序就是那 5%确实需要横向稳定性的。


因此,换句话说,如果一个节点或实例丢失、替换或重启,程序应该可以继续稳定地运行,而服务不会中断——与突然需要额外增加节点的扩展相比,这要常见得多。现在我们发现,关键的云原生要素(如松耦合、不使用共享数据库以及仅通过 HTTP 和消息传递系统等标准的、可伸缩的协议进行进程间通信)是实现这一目标的好方法。因此,以云原生方式编写应用程序仍然是正确的做法,但原因可能和你想的不同。


而且,对于许多企业来说,弹性伸缩都是一种反模式。例如,当我们与一家银行谈论弹性软件许可模型时,我们被告知,鉴于他们进行应用程序成本规划的方式,对于新项目的业务案例,他们实际上需要预先确定软件成本。遗憾的是,我们合作的很多企业都是如此。


一个我们会反复听说的可怕的故事(太经常了,我们都希望它是虚构的,但不幸的是我们见证了不只一个这样的例子)是,一个团队新部署了一个具备自动伸缩能力的云原生应用程序,第一个月因为自动伸缩而产生了一个巨额的云提供商账单,这不是因为客户使用率高,而是因为在测试中未遇到的意外错误导致在正常负载下 CPU 利用率反常升高。在成本模型和财务规划赶上技术发展的步伐之前,你最好以云原生的方式构建应用程序,但部署的时候要么固定资源数量,要么采用有资源限制的自动伸缩设置。


查看英文原文:

A Cloud-Native Coda: Why You (probably) Don’t Need Elastic Scaling


延伸阅读:

避免不完全的云原生(五):目标和收益

避免不完全的云原生(四):技术和基础设施角度

避免不完全的云原生(三):架构和设计角度

避免不完全的云原生(二):人员和流程要素

避免不完全的云原生(一):云原生到底意味着什么?

避免不完全的云原生

2021-02-05 16:004136

评论

发布
暂无评论
发现更多内容

高危!Fastjson反序列化远程代码执行漏洞风险通告,请尽快升级

葡萄城技术团队

json 安全 Fastjson

netty系列之:在netty中使用TCP协议请求DNS服务器

程序那些事

Java Netty 程序那些事 5月月更

智能汽车领域的开源软件供应链安全检测工具分享

墨菲安全

idea插件 工具分享 开源安全 墨菲安全 软件供应链

英特尔开源项目推动SYCL标准采用,打破单个厂商封闭生态系统

科技之家

数字人民币智慧学生证来了,对于特定群体硬钱包或大有可为

CECBC

uniapp 如何将输入值转成大写

CRMEB

MBTI 剧透人生,你的天选职业是什么?(免费测)

融云 RongCloud

小区适合投放自助洗车机吗?

共享电单车厂家

自助洗车加盟 小区投放自助洗车机

没有店面店铺可以做自助洗车吗?

共享电单车厂家

自助洗车加盟 自助洗车店面

百度智能小程序巡检调度方案演进之路

百度Geek说

以区块链技术推进应急管理体系现代化

CECBC

重磅首发!火线安全发布《云安全攻防技术期刊》

火线安全

安全 云安全

固定资产投资管理系统解决方案

低代码小观

资产管理 CRM系统 客户关系管理系统 企业设备管理 设备巡检管理系统

如何用Apifox 发送接口请求?

Liam

开发者 测试 后端 开发 Postman

TiDB 查询优化及调优系列(四)查询执行计划的调整及优化原理

PingCAP

网页在线帮助中心的搭建策略

小炮

帮助中心

从流量交换到共享联盟,开放银行如何助力金融数字转型?

CECBC

2021年证券类APP更新迭代监测专题分析(中)发布

易观分析

证券

YARN Federation技术解析及应用

移动云大数据

YARN

Fastjson官方再次披露高危漏洞,包括rocketmq、jeecg-boot等近15%的github开源项目受影响

墨菲安全

安全 idea插件 Fastjson 依赖漏洞检测 墨菲安全

避免惊群以及负载均衡的原理与具体实现

C++后台开发

nginx 负载均衡 后端开发 C++后台开发 惊群

6月月更“粽”头戏,大家一起来参与吧!

InfoQ写作社区官方

热门活动 6月月更

企业的文档管理策略

小炮

文档管理

前端监控的搭建步骤,别再一头雾水了!

杨成功

架构 大前端 5月月更

是开自助洗车店还是传统洗车店好?

共享电单车厂家

自助洗车加盟 开自助洗车店 传统洗车店

《Mybatis 手撸专栏》第9章:细化XML语句构建器,完善静态SQL解析

小傅哥

源码分析 小傅哥 源码学习 手写Mybatis 源码实践

模块二

Geek_2ce415

自助手动洗车设备洗车怎么样?

共享电单车厂家

自助洗车加盟 自助洗车机洗车 自助手动洗车设备

平衡人工智能的性能要求,实现可信AI在银行业务场景的高质量应用

易观分析

人工智能

7 款最棒的开源 React UI 库测评 - 特别针对国内使用场景推荐

蒋川

JavaScript react.js 开源 UI 组件库

fastposter v2.8.2 发布 电商海报生成器

物有本末

避免不完全的云原生(六):为什么你可能不需要弹性伸缩?_软件工程_Kyle Brown_InfoQ精选文章