【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

  • 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:003874

评论

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

CRM系统化整合从N-1做减法实践 | 京东物流技术团队

京东科技开发者

CRM CRM系统 企业号 7 月 PK 榜 系统化整合

Cnetos7系统---文件压缩与解压命令详解。

百度搜索:蓝易云

云计算 Linux centos 运维 云服务器

宁波企业等保测评找哪家?怎么做?

行云管家

等保 等级保护 等保测评 宁波

全网最强分布式事务详解

程序员小毕

Java 分布式 分布式事务 后端 架构师

数字孪生(Digital Twin)快速入门:简介以及应用示例

龙智—DevSecOps解决方案

数字孪生 digital twin

软件测试 | MyISAM是什么

测吧(北京)科技有限公司

测试

手把手带你初探Vue 3.0 | 京东物流技术团队

京东科技开发者

前端 Vue 3 VUE 3.0 源码 企业号 7 月 PK 榜

户外LED显示屏怎样在5G时代下发展?

Dylan

5G 广告 数字化 城市 户外LED显示屏

搜狗输入法双击输入框崩溃问题 | 京东云技术团队

京东科技开发者

搜索引擎 搜索 输入法 企业号 7 月 PK 榜

Stepn跑鞋/Jogger慢跑者NFT系统开发案例

薇電13242772558

NFT

DevOps国际峰会 | 采访龙智总经理,分享DevOps见解与行业趋势

龙智—DevSecOps解决方案

DevOps 金融行业 devops国际峰会

第二届“鼎新杯”数字化转型应用大赛-全国入围赛结果公示及最佳人气案例投票启动

信通院IOMM数字化转型团队

数字化转型 IOMM 鼎新杯

软件测试 | MySQL字符集的修改步骤

测吧(北京)科技有限公司

测试

从iOS App启动速度看如何为基础性能保驾护航 | 京东物流技术团队

京东科技开发者

ios 开发 企业号 7 月 PK 榜 APP冷启动 启动速度

Ubuntu 18.04系统编译安装Nginx 1.22教程。

百度搜索:蓝易云

nginx 云计算 Linux ubuntu 运维

服装行业MES系统解决方案|免费使用MES系统

万界星空科技

开源 MES系统 服装行业

出海是产业互联网发展的必然趋势之一

用友BIP

产业互联网 中企出海

【升职加薪秘籍】我在服务监控方面的实践(1)-监控蓝图

蓝胖子的编程梦

elasticsearch 性能优化 Grafana 服务监控 #Prometheus

【云计算小知识】云环境是什么意思?有什么优点?

行云管家

云计算 云资源 云管 云环境

8月31日,上海!第十八届中国IDC产业(长三角)年度大典即将召开!

中国IDC圈

数据中心

西安航天基地人才创新创业大赛正式启动

华为云PaaS服务小智

西安 大赛 比赛 西安航天 企业人才

安全文件传输:如何降低数据丢失的风险

镭速

文件传输 安全文件传输

比AD更好用的“PCB设计文件转生产文件”工具

华秋PCB

软件 工具 AD PCB PCB设计

一份数据满足所有数据场景?腾讯云数据湖解决方案及DLC内核技术介绍

腾讯云大数据

数据湖

加速 Selenium 测试执行最佳实践

FunTester

数智融合促进资产共享,实现企业资产效益最大化

用友BIP

资产云

软件测试 | MySQL存储引擎

测吧(北京)科技有限公司

测试

3步带你搞定华为云编译构建CodeArts Build “新手村任务”

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

智能运维进入6.0时代,CloudwiseGPT运维大语言模型强势来袭!

云智慧AIOps社区

智能运维 大模型训练 大模型 大模型时代

业财税档融合:大企业管理升级的必然选择

用友BIP

税务云 业财税档融合

软件测试 | MySQL字符集的设置

测吧(北京)科技有限公司

测试

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