写点什么

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

  • 2021-01-09
  • 本文字数:4652 字

    阅读完需:约 15 分钟

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

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


注意:这是该系列文章的第 5 部分。你可以点击这里阅读上一部分


在以前的文章中,我们已经明确了云原生的“什么”和“如何”。可是,还有一个更大、更根本的问题还没有解决。为什么大家要关心这个问题呢?有了前两篇文章的背景知识,我们现在可以探索“为什么”并看看云原生的好处,先从它对业务的意义开始,然后再讨论它对 IT 的意义。



云原生方法的好处

从业务角度看云原生方法的目标和收益


让我们面对现实吧,IT 潮流一直在发展变化。许多业务团队试图超越这些潮流,让 IT 人员自己走自己的路——毕竟,应用服务器或语言运行时的选择通常对业务的运作方式没有太大影响。云原生有什么特别之处?为什么业务部门应该支持向云原生迁移?为了理解这个问题,我们需要从一开始就考虑几乎所有企业都必须关注的三件事:增长、降风险和降成本。我们认为,使用云原生方法构建应用程序有可能为所有这些方面带来好处。

市场增长


市场增长的关键在于发展新客户并保持他们的兴趣。为了赢得新客户,而又不损害边缘客户的利益,你必须能够比竞争对手更快地把好的、新的想法推向市场。诸如采用精益方法和通过管道自动化简化生产环境部署等因素,使团队更快地将业务想法带到生产环境。这缩短了上市时间,帮助 IT 部门按照业务的速度推出新特性。不过,新特性本身并不能保证市场增长。你必须能够剔除那些对客户留存和客户获取产生负面影响的新特性,同时保留那些对这两个指标产生积极影响的新特性。真正关键的是确保创新就绪;让企业可以大胆而迅速地将颠覆性的想法带入生活,从而获得新的细分市场,在竞争中保持领先,同时制定适当的衡量标准,让你能够根据经验来判断哪些想法好,哪些想法不好。

降风险


然而,新特性并不是业务需求的全部。如果一个企业能够通过不断提供新的、令人惊叹的功能来取悦它的客户,那么我们的工作就会简单许多。现实更为复杂和困难,但也非常重要。客户需要信任你的企业。当然,这在监管严格的行业(如金融服务或医疗保健)最为明显,但对所有企业而言都很重要。你提供的解决方案需要有适当的弹性和安全性,让客户可以相信,他们需要的时候你能提供服务,他们信任你,将资金、数据或生活都托付给了你。


正如我们在前一篇文章中所介绍的,写得好的云原生解决方案会利用抽象将自己与底层物理基础设施解耦,从而提供隐式的弹性。此外,其组件还遵循零信任模型,因为它们必须假定组件可以部署到任何云环境中。然而,我们越是关心风险,就越有可能设置变革障碍,这不利于市场增长。在这里,云原生可以通过高度自动化且一致的方式将特性投入生产,从而帮助降低风险,通过部署信心减少对更改的担忧。


然而,云原生方法本身并不能神奇地降低风险。像特性标识和金丝雀测试这样的技术可以让业务人员做一些他们之前可能会因为风险太大而拒绝做的事情,但为了发挥这些技术的价值,需要 IT 与业务人员密切合作。我们必须与业务合作,更新他们度量和控制风险的方式,使其与引入的方法和流程兼容。

降低成本


没有企业可以忽视成本。不管你的市场份额多大,或者你的客户多信任你,如果你不能控制成本,就不能指望获得稳定的利润。企业是由人来经营的(至少如今是这样),而雇人需要花钱。我们需要确保人尽可能少,而回报尽可能高,对于那些技能水平最高的人来说更是如此。构建云原生解决方案的平台应该标准化,并尽可能地自动化软件构建、部署和管理等日常任务。这有助于充分发挥高价值员工的作用,让他们可以专注于直接增加业务价值,而不是陷入日常运营。当然,这些平台及其底层基础设施也需要付费。幸运的是,按照设计,云原生解决方案只使用它们需要的资源,因此,你应该利用平台提供的弹性成本模型,让自己能够利用这种成本效率。

从 IT 角度看云原生方法的目标和收益


到目前为止,关于云原生对业务的影响,我们的讨论还停留在比较高的层次上。为了让业务人员理解云原生的好处,我们必须将我们讨论过的 IT 收益翻译成相应的业务收益。接下来,我们将展示上面描述的每项关键业务收益与我们之前介绍的云原生要素的对应关系。

敏捷性和生产力(市场增长)


每个业务都想从 IT 那里获得更多的特性——他们还希望 IT 能更快,而且要更准确地反映他们的需求。云原生如何帮助实现这一点呢?


更快的组件交付


加速交付是云原生方法最常见的目标,其核心包括三个方面:云平台、敏捷方法和微服务。借助弹性分配和组件编排等技术,云平台使我们可以通过自动化来简化大部分的日常操作,专注于构建业务功能。通过减少体力活,让团队专注于价值更高的工作。敏捷方法使我们能够缩短需求和实现之间的距离,并改进与业务目标的一致性。这意味着返工会更少,并且能够更快地发现和纠正错误。微服务之类的设计方法使我们能够以增量的方式交付功能,减少依赖关系,因此速度也更快。


可以自由创新的自治团队


细粒度的离散组件带来的其中一个结果是,为创建它们的团队提供了更多的自主权。只要遵循我们前面描述的关键解耦规则,接收平台就可以在很大程度上将组件视为“黑盒”。虽然应该鼓励跨团队协作和公共实践,但是团队可以自由地使用任何语言运行时和框架来满足他们的需求。这种创新的自由让团队可以“跳出固有的思维模式”,更快地向业务交付解决方案,而且交付的解决方案在业务方面更具创新性。这种自治的一个关键是,业务必须是自治团队的一部分。产品负责人和发起用户(Sponsor User)这两个概念对构建高效的创新型团队至关重要。


对不断变化的商业环境的快速响应


早些时候,我们讨论了如何创新,以及如何通过具体的经验性指标来确定创新是否有价值,这对于确保 IT 团队和业务保持同步至关重要。在这方面,其中一个关键是业务和 IT 通过假设驱动开发共同工作的能力。简单地说,假设驱动开发是将企业经营理念作为科学假说来表述,可以被证明或证伪。云原生开发只有在业务参与整个开发周期时才会给业务带来好处。


一种主要的参与形式是借助 A/B 测试——如果你制定了适当的指标,比如清空购物车的百分比,或者在浏览后点击“购买”的客户百分比,那么你就可以根据经验来比较不同的想法。你可以引导一些客户使用体现新理念的新方法,而另一些客户使用现有方法,然后随着时间的推移比较两种方法之间的指标差异。这里的关键是,需要业务根据可度量的差异来思考问题。就像一个科学假说如果不能被证伪就不能成为假说一样,业务假设也是如此。业务必须帮助确定一个可量化的衡量标准,通过它可以比较两种不同的想法或方法。也就是说,他们必须参与整个过程,不仅帮助确定哪些想法需要接受测试,而且帮助确定如何测试,以及成功的定义是什么。云原生非常适合赋能这种响应行为。它是敏捷方法的重要组成部分,而且,使用细粒度、良好解耦的组件添加新功能更安全,不会影响现有的功能。此外,服务网格之类的通用机制可以用来选择性地在被测想法之间路由请求,还可以简化假设评估的数据收集。

弹性和扩展性(降低风险)


云平台,特别是容器,从其底层基础设施继承了许多抽象。这就为支持非功能需求(如可用性、健壮性、性能和安全性)提供了通用且风险较低的方法。下面是一些典型的例子。


细粒度的弹性伸缩和弹性


写得好的云原生解决方案是用细粒度、轻量级、状态最小化的组件构建。这使得云平台能够根据需要快速复制和清除组件,从而提供固有的健壮性和可伸缩性。得益于容器化,我们可以用一种标准化的方式提供,从而大幅简化操作。此外,容器编排平台能够跨多台物理服务器、多个区域分发容器实例,进一步提高了可能的弹性水平。


一致的环境和可逆的部署


为了实现上文讨论的敏捷性和生产力,我们需要能够自信地将新代码交付到环境中,安全地重新路由流量,并且在必要时以最小的代价逆转那些部署。在理想情况下,云原生代码应该在包含所有依赖项的不可变镜像中交付,并包括完整的声明式部署指令。这可以确保部署过程和工件在所有环境中都是相同的,从而消除了环境漂移的风险。此外,云平台的特性,如路由器和服务网格,使代码能够在全面推出之前进行金丝雀测试(少量负载通过新代码)。这也简化了版本的回滚,因为我们可以简单地恢复到上一个版本的镜像和部署指令。这种简单性对业务来说很重要,因为它向业务人员保证,如果结果不符合预期,就可以快速安全地回退。


软件运行时的持续采用


敏捷方法规定,通往生产环境的路径必须尽可能地自动化,这包括构建、测试和部署等方面。这些管道通常被称为持续集成/持续交付(CI/CD),由于对源代码的更改而触发。然而,由于声明式部署也是代码,底层运行时版本的改变也会触发新的构建/测试周期——这就是“GitOps”的一个例子。假设我们对自动化测试有足够的信心,我们就能够保持底层运行时版本比如今大多数应用程序的都新,这不仅能确保我们可以利用最新的特性,而且可以保证我们不会暴露在已知安全漏洞造成的风险中。同样,这对企业来说应该也是有价值的,因为它降低了客户数据或资产丢失的信用风险。

优化和效率(降低成本)


基于云的计算使我们能够共享资源:硬件、软件,甚至人。通过跨应用、跨组织域、甚至跨组织共享这些资源,我们有机会降低运营成本。云原生可以确保编写的应用程序能够从这些优化中获得最大收益。


一致的基础平台技能


在那些显而易见的特性(轻量级可伸缩组件)之外,容器还有一个更难能可贵的地方。长期来看,它们最大的好处可能是运营一致性。使用完全相同的技能来构建、部署,提供高可用性、伸缩性、监控、诊断和安全,而不需要考虑一组已经编排好的容器中的运行时,这是一个巨大的飞跃。至少,这意味着技能集可以跨以前孤立的 IT 领域通用。在理想情况下,操作自动化会减少运行特定基础设施所需的人员数量,并提高其可靠性。然而,由于这些技术都是新的,个人和公司必须经历一个陡峭的学习曲线,才能使这些好处成为现实。


优化基础设施的使用和许可


可以说,“云”的最基本定义是对底层物理基础设施的抽象。虚拟机为我们提供了第一级的间接层,我们因而不再被绑定到物理机器中的特定硬件上。如果将容器与云原生要素(如最小化状态、不可变部署等)结合起来,我们就能走得更远。云原生使我们能够在无形之中将组件分布在多个数据中心的许多机器上,为实现规模经济提供了更大的机会。当然,软件许可需要有新的模型以及可能更复杂的动态计量来迎接这个挑战。


资源和能力的快速自助配置


自助配置是云技术的关键承诺之一,它允许我们快速请求虚拟计算、内存、存储、网络等资源。容器平台对此做了进一步的抽象,它允许在部署时对资源进行声明式请求,并设置策略,定义如何在运行时根据负载对它们进行更改。只需一次单击,就可以创建全新的环境,并通过软件定义网络与其他环境隔离。为了充分利用这一切,应用程序就需要采用一种不同的编写方式。应用程序需要是无状态的、可抛弃的、细粒度的,实际上,我们在本系列中已经讨论了所有这些内容。

总结


云原生,就像大部分方法方面的重大变革一样,需要一定程度的投入才能实现目标。正如我们所看到的,这需要许多不同的要素都准备到位。对于许多(也许是大多数)组织来说,他们可能无法从一开始就把所有这些要素都安排到位,所以成功的关键是确定优先级。


选择对你而言最重要的好处。我们希望本系列文章可以帮助你确定,应该优先专注于发展哪种要素。


查看英文原文:

The “Why” of Cloud-Native: Goals and Benefits


延伸阅读:

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

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

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

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

避免不完全的云原生


2021-01-09 12:002502

评论

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

如何通过经纬度坐标获取附近的地址信息?

HarmonyOS SDK

定位

【CSS】什么是外边距的重叠?常见的有哪几种重叠情况?

翼同学

CSS 前端 编程语言 8月月更

持久,redis 持久化有哪几种方式,怎么选?

知识浅谈

redis持久化 8月月更

Selenium 中的 JUnit 注解

FunTester

【React】使用Next.js构建并部署个人博客

海底烧烤店ai

nuxt 博客开发 博客搭建 react rout 8月月更

【CSS·圆角边框】有关border-radius属性的记录以及实现原理

翼同学

CSS html 前端 8月月更

佛山复星禅诚医院黄汉森:云边协同,打造线上线下一体化智慧医疗

阿里云弹性计算

弹性计算 分布式云 云盒 异地双活

MySQL查询重写插件

TimeFriends

8月月更

【CSS】怎么理解层叠性、继承性和优先性?选择器的权重如何叠加?

翼同学

CSS html 前端 编程语言 8月月更

【CSS 盒子模型(下)】:padding 和 margin

翼同学

CSS html 前端 8月月更

弹性云端新算力,驱动沉浸新交互 |2022阿里云金融创新峰会

阿里云弹性计算

计算巢 云盒 倚天实例 专属Region

源码解析 kubectl port-forward 工作原理

张晓辉

Kubernetes 云原生 源码解析

混迹职场10多年的数据开发老鸟,居然被一个职场新人上了一课

雨果

数据工程师

超大规模跨域集群统一监控实践

移动云大数据

亚马逊云科技与TalkingData携手助力美妆巨头数字化营销闭环安全合规地提效

Lily

【实践】手把手带你实现JWT登录鉴权

迷彩

分布式 微服务 前后端分离 JWT 8月月更

【数据结构实践】手把手带你快速实现自定义二叉树

迷彩

数据结构 算法 二叉树 二叉树遍历 8月月更

《数字经济全景白皮书》银行业RPA应用专题分析 发布

易观分析

RPA 金融 银行

【CSS关键字】:inherit、initial、unset分别有哪些作用?

翼同学

CSS html 前端 8月月更 学习分享

【CSS 盒子模型(上)】:width、height、overflow、border

翼同学

CSS html 前端 8月月更

玩转KubeEdge保姆级攻略

乌龟哥哥

8月月更

mysql基础

楠羽

#开源

Docker杀掉了容器?问题分析与解决过程全面复盘

程序员欣宸

Docker 8月月更

浅谈JS发布订阅模式

海底烧烤店ai

JavaScript 前端 发布订阅模式 8月月更

数字藏品app开发:数字藏品发行制作的关键

开源直播系统源码

NFT 数字藏品 数字藏品开发 数字藏品系统 数字藏品软件

面试突击79:Bean 作用域是啥?它有几种类型?

王磊

Java 常见面试题

非关系型数据库Redis核心内容

浅羽技术

数据库 redis redis持久化 Memcache 8月月更

zookeeper的选主过程

浅羽技术

zookeeper 分布式 ZooKeeper原理 8月月更

[JS入门到进阶] 手写解析uin8数组的工具:解析二进制字节,太快太方便了!

HullQin

CSS JavaScript html 前端 8月月更

直播预告丨阿里云佐井:关注预警6要素,帮助用户实现精准监控和告警

阿里云弹性计算

监控 预警

zookeeper的特点和应用场景

浅羽技术

zookeeper 分布式 观察者模式 注册中心 8月月更

避免不完全的云原生(五):目标和收益_架构_Kyle Brown_InfoQ精选文章