图片来源 @视觉中国
文丨脑极体
IT 史上有一个经典故事. 那就是在 1943 年, IBM 的董事长老托马斯. 沃森胸有成竹地告诉人们: 未来 5 台计算机就可以满足全世界的市场.
现在我们知道, 老沃森的预言有一半正在实现. 就是世界正在朝着 "5 台计算机" 的方向演进, 当然我们也知道, 老沃森只是很认真地认为世界上用到计算机的地方并不太多, 而不是预见到云计算的到来.
现在, 云计算已经无处不在, 数字世界成为我们的栖身之所. 而近年来, 一个名为 "云原生" 的概念成为云计算领域的热词. 原本企业家们的对话可能是 "你的公司业务上云了吗?", 而现在很多企业家要改口问下:"你的业务上了'云原生'了吗?"
Gartner 报告曾指出, 到 2020 年, 将有 50% 的传统老旧应用被以云原生化的方式改造, 到 2022 年, 将有 75% 的全球化企业将在生产中使用云原生的容器化应用. 在企业上云的趋势下, 我们正在看到越来越多的企业和开发者开始把业务与技术向云原生演进.
那么, 什么是 "云原生"? 为什么 "云原生" 正在变得越来越重要? 我们希望通过对 "云原生" 概念和其代表的整体技术思路做一次梳理, 看下 "云原生" 能够释放怎样的技术红利.
云原生与云原生应用
"云原生", 来自于 Cloud Native 的直译(其实叫原生云更顺口), 拆开来看, Cloud 就是指其应用软件是在云端而非传统的数据中心. Native 代表应用软件从一开始就是基于云环境, 专门为云端特性而设计, 可充分利用和发挥云平台的弹性 + 分布式优势, 最大化释放云计算生产力.
技术永远走在概念之前, 在 "云原生" 概念正式提出以前, 在企业中就已经有了云原生的实践. 比如, 谷歌在 2004 年就开始使用了容器技术, 2006 推出的进程容器(Process Container), 就是一种具有 "云原生" 特征的技术实践.
业界公认的 "云原生"(Cloud Native)概念是 Pivotal 公司的 Matt Stine 于 2013 年首次提出, 然后被一直沿用至今并发扬光大.
在 Matt 那里, 他把云原生理解为一系列云计算技术和开发管理方法的合集, 包括 DevOps, 持续交付, 微服务 (MicroServices), 敏捷基础设施(Agile Infrastructure) 和 12 要素 (The Twelve-Factor App) 等等.
所以, 云原生从一开始就不是一项技术或一个产品, 而是一种系统化的方法论和技术的集合. 只有满足 "上云" 特征, 或者说专门面向 "云" 设计的应用, 才可以称之为云原生应用.
判断一个应用是否为云原生应用, 就要考察它是否具有 "云" 的特性, 包括满足网络访问, 远端部署, 可扩展弹性伸缩, 共享, 按需使用自助服务, 高可用, 可远程监控计费审计, 标准化交付与位置无关等等. 严格来讲, 可以用 Matt 提出的 "12 要素" 来作为判断云原生应用的准则, 其中最主要可以归纳为以下几点:
1, 弹性: 弹性计算正是云计算的核心特征, 也是云原生技术中容器的重要特征. 云原生应用弹性, 应该包括应用使用资源的弹性和应用实例弹性扩展的弹性. 在单实例扩展资源遭遇瓶颈时, 可以配合负载均衡机制实现容器实例的弹性扩展.
2, 共享: 我们知道云计算可以分为 IaaS,PaaS,SaaS 三种类型, 分别通过这三种类型实现资源共享, 平台共享, 应用共享. 而云原生应用则是部署在 IaaS 或 PaaS 层, 通过 SaaS 层提供开放式服务.
3, 自治: 云原生应用的交付一定是按照标准交付, 可以在云端任何支持标准的位置部署, 这样就与位置和环境无关, 同时构建应用所需要的依赖包, 配置文件和后端服务等都是和应用构成一个整体, 实现自治管理. 使用容器的好处就是可以使得应用以标准化镜像的方式交付和运行, 而用微服务实现云原生应用, 也正是符合这一自治原则的.
4, 按需服务: 云应用部署在云端, 客户可以根据自己的需求, 通过网络访问, 自助使用服务, 不需要联系云应用管理人员. 通常会有个云应用服务目录, 每个应用服务都有使用说明, 通过服务目录可以找到适合自己满足自身需求的应用.
此外, 像高可用性, 敏捷, 可监控审计, 可配置等特性也都是云原生应用的重要特点, 但不再赘述.
总之, 云原生正是云计算区别于传统 IT 架构的根本特征, 云原生应用正在成为云计算主流的服务形式. 企业通过采用基于云原生的技术和管理方法而生成的应用, 就能够持续地享受到 "云计算" 提供的源源不断地高效服务.
在探讨云原生应用的价值前, 我们先简单了解下云原生主要使用的技术.
持续进化中的云原生技术
在云原生概念提出的 2013 年, Docker 也正式发布. Docker 的 PaaS 提供商 DotCloud 开源的一个基于 LXC 的高级容器引擎, 帮助开发者把应用打包到容器中并进行发布, Docker 对于开发者来说, 就如同用集装箱货轮来运输货物一样, 效率又高,(容器如同集装箱)部署灵活性也比虚拟机更好, 一经发布就成为极为流行的开源容器发布工具.
第二年, K8s(kubernetes)项目由 google 发布. 在容器和 Docker 诞生之后, 开发者自然而然需要工具来管理这些容器和容器化引擎. K8s 正是用来管理云平台中多个主机上的容器化的应用, 让部署容器化的应用简单和高效. 因为 K8s 也是采用了开源形式, 发布之后也大受欢迎.
2015 年, 由 Google, 红帽, 微软等大型云计算厂商以及一些开源公司, 共同牵头成立了 CNCF 云原生基金会. CNCF 成立之初, 就有 22 个创始会员, K8s 成为 CNCF 托管的第一个开源项目. CNCF 的目标就是致力于培育和维护一个厂商中立的开源生态系统, 来推广云原生技术.
在 2018 年, CNCF 对 "云原生" 的定义中, 给出其代表性技术, 包括容器, 服务网格, 微服务, 不可变基础设施和声明式 API. 在容器技术的普及中, Docker 实现了容器的可移植, 轻量化, 虚拟化, 语言无关, 大大降低了容器技术的使用门槛, 而 K8s 则相当于安排容器发布的管家, 解决了容器编排的全周期管理, 就如同集装箱货轮上的船长一样. 正是这一特性, K8s 也成为了应用上云的可移植性等问题, 被成为云原生技术的基石.
(K8s 架构)
微服务是什么呢? 与微服务相对应的传统的以系统为单位进行部署的单体架构, 与之相比, 微服务架构就是以独立的组件为单位进行部署, 是用户可以感知最小功能集. 微服务具有小而专的特性, 使得开发, 测试, 更新效率提高, 从而实现敏捷. 从功能上看, 微服务可以成为 Docker 的配合搭档, 使得业务流程可以按需编排, 实时部署.
服务网格 ( Service Mesh ) 是指用以处理服务与服务之间通信的基础设施层, 解决了 K8s 在微服务的连接, 管理和监控方面的短板, 为 K8s 提供更好的应用和服务管理, 成为微服务的辅助技术. 而不可变基础设施相比较于之前的可变基础设施, 具有更高的一致性和可靠性, 以及更简单, 更可预测的部署过程, 成为云原生应用的运维的可靠基础架构, 而声明式 API 这可以理解为是 k8s 的编码方式.
这些技术成为目前云原生应用主要利用的工具. 当然, 我们也看到云原生的技术边界和工具集合是处在不断变动和更新当中的. 基于这些特性和工具的发展, 我们看到云原生应用正在成为互联网巨头纷纷布局和转向的应用方式, 也成为众多中小企业和开发者选择应用开发的方式. 那么, 云原生技术到底为何越来越重要, 云原生应用正在发挥哪些价值呢?
云原生, 企业数字化升级的全新生产力
在回答云原生的价值之前, 我们先来问下, 为什么企业的应用开发要原则上云, 并选择云原生技术呢?
而这就涉及到传统的 IT 架构方式, 将开发, IT 运营和质量保障分别设置, 各自独立, 开发与运营之间存在着信息 "鸿沟", 开发人员希望基础设施更快响应, 运营人员则要求系统的可靠性和安全性, 而业务需求则是更快地将更多的特性发布给最终用户使用. 这种被成为 "瀑布式流程" 的开发模式, 一方面造成了开发上下游的信息不对称, 一方面拉长了开发周期和调整难度.
但是随着用户需求的快速增加和产品迭代周期的不断压缩, 原有的开发流程不再适合现实的需求, 这时工程师们引入了一种新的开发模式 -- 敏捷开发. 但是, 敏捷开发只是解决了软件开发的效率和版本更新的速度, 还没有和运维打通.
出于协调开发和运维的 "信息对称" 问题, 开发者又推出了一套新的方法 --DevOps,DevOps 可以看作是开发, 技术运营和质量保障三者的交集, 促进之间的沟通, 协作与整合, 从而提高开发周期和效率.
最终实现的就是 "持续交付", 让软件产品的产出过程在一个短周期内完成, 保证软件可以稳定, 持续的保持在随时可以发布的状况.
而云原生的容器, 微服务等技术正是为 DevOps 提供了很好的前提条件, 保证 IT 软件开发实现 DevOps 开发和持续交付的关键应用. 换句话说, 能够实现 DevOps 和持续交付, 已经成为云原生技术价值不可分割的内涵部分, 这也是无论互联网巨头企业, 还是众多中小应用开发公司和个人, 越来越多选择云原生技术和工具的原因.
基于云原生技术带给企业的应用开发的技术价值, 直接来说就可以大幅降低企业 IT 开发和运维的成本, 从而又提升企业业务的创新效率和产业价值.
对于外界而言, 我们最直观的感受就是节假日前在 12306 抢票再也没有遇到系统崩溃, 一些行政网站的体验也不那么差了, 在购物节的流量高峰时, 我们的页面也很少出现延迟或者刷不出来的情况了, 而那些大型的在线直播, 游戏的体验也很流畅了. 而这些有时高达数以亿计的高并发流量都得益于云原生技术的快速弹性扩容来实现.
而对于企业而言, 选择云原生技术, 也就不仅仅是降本增效的考虑, 而且还能为企业创造过去难以想象的业务承载量, 对于企业业务规模和业务创新来说, 云原生技术都正在成为全新的生产力工具.
过去企业看重的办公楼, 厂房, IT 设施等有形资产, 其重要性也逐渐被这些云端数字资产所超越, 企业正通过云原生构建一个完整的数字孪生的新体系, 而这才是云原生技术的真正价值所在.
对于整个云计算产业的发展本身来说, 云原生区别于早先的虚拟机阶段, 也完成了一次全新的技术生产力变革, 就如同近代能源革命经历的水, 煤, 电的变革导致能量释放的密度和产业规模的数量级跃迁一样, 云原生也是从云技术的应用特性和交付架构上进行了创新性的组合, 能够极大地释放云计算的生产能力.
此外, 云原生的变革从一开始自然而然地与开源生态走在了一起, 也意味着云原生技术从一开始就选择了一条 "飞轮进化" 式的道路, 通过技术的易用性和开放性实现快速增长的正向循环, 又通过不断壮大的应用实例来推动了企业业务全面上云和自身技术版图的不断完善.
当然, 企业业务的全面云原生化, 并非一蹴而就的, 企业业务的技术架构变革仍然要迎接很多的挑战, 比如传统虚拟机模式下的运维习惯, 原有的 IT 资产切换, 人员的思维和管理方式变革等. 不过, 云原生所带来的种种好处, 对于企业的未来业务发展的优势, 已经成为众多企业的新共识.
可以预见, 更多企业在经历了这一轮云原生的变革之痛后, 能够穿越企业的原有成长周期, 跨越到数字经济的新赛道, 更好地活在即将到来的全面云化的数字时代.
来源: http://www.tmtpost.com/4766123.html