在著名的《集装箱改变世界》当中,我们能看到集装箱的发明对于二十世纪全球化的巨大推动作用。集装箱,这一看起来并无多少技术含量的发明,却因为进行标准化和系统化运输的创新彻底改变了全球的货物贸易体系。

如今在IT领域,云计算的出现和发展相当于一次数字世界的“全球化”大发现,而云原生就相当于一次“集装箱式”的创新变革。

如果把互联网看作是数字世界里的贸易航线,那么应用软件和其中的数据就是穿行在航线上的船只和货物。在传统的IT架构当中,最小的货运单位就是船只(单体应用),不同的企业都有自家的船只,因此每个船只上都要配备全套的IT基础设施(计算、存储、网络等),船只要根据业务软件的规模提前规划,如果遇到业务增长,就只能在船上增补硬件设备,但业务下降,这些设备也只能闲置吃灰。

而云计算的出现,相当于是成立了几家大型货运公司,推出了一些超大型的标准化船只,其他企业可以选择把一部分货物交给这些货运公司去托运,甚至直接租用货运公司的船只去运货,这就涉及到云计算几种不同的服务提供方式。

伴随着云计算这种“集中式货运”的出现,一种适应云计算架构特点的应用开发技术和运维管理方式也出现了,那就是云原生。云原生的一个核心技术就是容器(Container),而容器的创新之处就非常类似于集装箱的创新。正如物理世界货运的最小单元从船只变成了集装箱,在云计算中,软件的最小单元不再是主机箱或者虚拟机,而是一个个容器。

正是随着云计算服务和容器化技术的发展下,越来越多的软件开发者和IT运维管理人员开始改变过去独立开发运行的传统模式,从而提出一套基于云计算特点的新的软件应用开发架构和模式,从而诞生了云原生的概念。

云有“原生”初长成

提及云原生,就必然要提到云计算。众所周知,按照云计算的服务提供方式,可以分为基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)三层。从IaaS到PaaS,再到SaaS,意味着云平台提供的工具和服务越来越多,购买云服务的企业所要做的开发相关的任务就越来越少,这一趋势为云原生的出现提供了技术基础和方向指引。

企业业务要想真正的云化,不仅要在基础设施和平台层面实现,而且应用本身也应该基于云的特点进行开发,从架构设计、开发方式、部署维护等各个阶段和方面重新设计,构建真正应“云”而生的“云原生应用”。根据行业内的说法,云原生(Cloud-Native)概念的提出有几个版本,公认的是由Pivotal公司CTOMattStine在2013年首次提出。当然,这一概念被提出来是没有定义的,只是一系列技术的集合。

比如在2010年,WSO2公司CTOPaulFremantle在博客里也提到“CloudNative”的概念,不过他给出的相关解释包含了分布式、多租户、按需收费、弹性可伸缩这些特点,但这些主要是云计算服务的普遍特性,还不够细化。

对于云原生概念,MattStine在2015年发表的《迁移到云原生应用架构》的一书中列举出以下技术和特点:十二因素,微服务,子服务敏捷基础设施,基于API的协作,反脆弱性。

后面,这家公司的另外一位技术大牛KevinHoffman在《Beyondthe12factorApp》一书,基于原十二要素新增了三个新要素,即云原生十五要素。

对于应用开发领域的从业者,这些要素想必都非常熟悉,相当于是一份SaaS应用的最佳实践标准,可以适用于任何语言开发的后端应用服务,将开发流程自动化和标准化,降低开发者的学习成本。

到2017年,MattStine再次将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质;而Pivotal官网则给出了云原生的最新定义,概括为4个要点:容器、微服务、DevOps、持续交付。

另外一个比较正式的云原生定义是由云原生计算基金会(CNCF)提出的。在2015年,CNCF成立之初,这一组织将云原生定义为包括:容器化封装、自动化管理、面向微服务;到2018年,CNCF又把服务网格(ServiceMesh)和声明式API给加到云原生的定义中来。

从云原生的多个定义来看,这一概念在不断完善和更新,不同组织和企业对于云原生的侧重点也有所不同。根据行业专家的总结,现在我们已经能够看到云原生的一个全貌特征:

因此,整体来说,云原生是一套在云端构建和运行软件应用的方法,可以归结为一套技术方法论。“云原生”的“Cloud”,代表了软件应用是放在云端而非传统的IT设备中,而“Native”则代表软件应用从一开始设计,就是根据云的环境,采用云端的技术,充分利用云平台的弹性伸缩和分布式特点,最终在云端高效、稳定、安全运行。

从本质上来说,云原生是架构根植于云,基于云上开发、部署、维护的一套技术方法体系。

点开云原生的“技能树”

根据以上云原生概念的共性,我们主要拆解下容器化、微服务、持续交付,DevOps这些涉及云技术和运维管理方法的主要特征。

首先来介绍代表性的容器技术。最初,一个软件应用都是放在物理主机上的,管理起来非常不方便,后面出现了虚拟化技术,可以通过服务器资源共享的方式,按需构建应用实例,但是虚拟化构建出的虚拟机仍然是一个完整操作系统,虽然比物理机更灵活,但仍然资源浪费的情况。那么,容器技术,就如同IT开发当中的集装箱,采用更小单元彻底将一个应用的资源打包在不同的容器里,从而可以适应各种应用的运行环境。

从2004年开始,谷歌就在内部大规模使用Cgroups等的OS虚拟化技术,2008年,谷歌推出的LXC(LinuxContainer)项目具备了Linux容器的雏型。2013年,Docker横空出世,让Linux容器技术快速席卷开发界。Docker的成功,也让构建应用的最小单元变成了容器,而容器是微服务的最佳载体。

微服务就是一种跟单体应用相对应的新的应用架构,是应用服务单元的小型化和微型化。有个比喻非常贴切,单体应用就是一个大茶壶里煮很多饺子,现在变成一个小茶壶里煮一个饺子,但是拥有很多个茶壶。微服务就是要将应用的颗粒度做到最小,使之独立承担对外服务的职责。微服务的理念是随着软件系统的复杂度上升,需要投入的人力和时间资源越来越多,但却需要及时交付而出现的。

DevOps,是Development+Operations的组合词,也就是开发和运维的合体,当然也包含测试。DevOps是一种敏捷开发思维和IT组织的沟通方法,可以促进开发、技术运营和质量保障部门之间的沟通、协作和整合,从而提高软件和服务的交付效率。反映在云原生上面,就是提高持续交付的能力。

云原生的持续交付,要做到不误时开发,不停机更新,小步快跑,要求开发版本和稳定版本并存,其实需要很多流程和工具支撑。对于广大用户来说,现在一个最直观的感受就是很多巨型应用可以做到几乎在悄无声息见就完成更新,根本不用再一次次进行应用的下载和安装,而这就要归功于云原生的这些能力。

在软件开发领域,曾经有一个“不可能三角”的说法,也就是功能复杂程度、交付周期和可靠性这三者无法同时实现,但基于以上云原生的技术和管理方法,相当于解决了这一的一个开发难题,从而帮助企业提升应用开发效率,实现业务创新。

云原生的能力将造成这样一个结果,那就是让一个应用的底座变得越来越复杂,数据处理也越来越自动化,而应用的业务层面则越来越轻,越来越简单化。对于大众用户来说,就是应用的更新、功能的使用越来越便捷和“聪明”。

 云原生“江湖”

云原生是顺应云计算时代的应用开发特点而产生的一种技术理念,因此在云原生概念一直没有明确的定义,而只有不同组织的不同的解释。相伴而生的就是云原生技术的演化和厂商的纷争。

现在一提到云原生,基本就会提及Docker和Kubernetes(简称K8s)。那么,这两者到底是怎样的关系呢?

简单来说,Docker是目前最成功的容器工具,K8s是目前最流行的容器编排工具。所谓“编排”,源自音乐指挥家对不同乐器演奏的协调,那么用在云原生这里,就是对包含应用程序的容器的协同关系管理。

最初,Google已经在容器技术上有了十多年的积累,只不过,Google的做法是秘而不宣,把基础设施的复杂性都留在内部,只给开发者和用户提供最简单的操作工具就行。但是2013年开源容器工具Docker一经推出就大受欢迎,很快就成为事实上的容器标准,这严重刺激了Google。因此,Google采用了“敌人的敌人就是朋友”的战略,开始支持与Docker分道扬镳的CoreOS,推出了K8s项目,并支持CoreOS提出的另一个开源容器引擎Rocket。

2014年,当Google发现CoreOS在容器生态领域实在不是Docker的对手之后,决定换道超车,于当年宣布推出K8s容器集群编排工具,并在2014年6月7日将初始版本代码提交到Github上完全开源。而此时的Docker公司也雄心勃勃,于年底在DockerCon上发布了自己研发的“Docker原生”容器集群管理项目DockerSwarm,并想与K8s一较高下。一场“容器编排”的战争打响。

但Kubernetes凭借Google在容器集群管理系统Borg+Omega上的多年技术积累,很快横扫DockerSwarm和其他容器编排工具。到2017年6月,据CNCF统计:K8S占据着77%的市场份额,到10月,Docker宣布支持K8s,这标志着容器编排的战争基本结束,最终以K8s的大获全胜告终。

Docker被K8s成功收编,那最大的赢家就是2015年成立的云原生计算基金会(CNCF),当然还有全球的开发者。

CNCF是由Google牵头成立,隶属于Linux基金会,初衷是围绕云原生服务云计算,致力于培育和维护一个厂商中立的开源生态系统,维护和集成开源技术,支持编排容器化微服务架构应用,通过将最前沿的模式民主化,让这些创新为大众所用。

截至2020年4月,CNCF基金会共托管49个云原生项目,其中,Kubernetes是CNCF托管的第一个云原生开源项目。现在全球主流的科技企业和云计算厂商绝大部分都是CNCF会员,云厂商们把加入CNCF作为企业技术竞争力的宣传点。

可以说,云原生在今天的发展壮大,确实离不开CNCF这样的中立组织所发挥的作用。假如说Docker一家独大,就很容易提高容器技术的使用成本,如果K8s不在CNCF开源共享,开发者又可能要面临“二选一”的麻烦。

值得注意的是,在2020年12月,K8s宣布弃用Docker,并非是简单地对Docker的“卸磨杀驴”,而是对于容器编排的进一步优化。因此,我们可以看到云原生的具体的技术工具还演变进化当中。

到这里,我们应该对云原生的前世今生有一个基本的印象。

总的来说,云原生没有一个固定的概念定义,但却有一个清晰的逻辑,那就是软件应用正在按照云原生的方式进行深度的云化,充分贴合云计算的弹性可扩展、敏捷、分布式、自动化的特点,因云而生,又应云而行。

同时,云原生体系的技术也处在不断的演化发展当中,目前正形成以容器及容器编排、微服务、敏捷基础设施、DevOps、声明式API等为特点的云原生应用的技术方法论。在这些云原生技术的演进过程中,CNCF及其提供的开源项目和开发生态将发挥更加显著的作用。

当然,尽管我们看到云原生有这样那样的好处,但是云原生从诞生到如今的破圈而红并非是一蹴而就的,云原生本身的演化也经历一个从青涩到成熟的过程。但云原生的计算价值已经落地生根,某种程度上成为了企业IT的大势所趋,甚至必然选择。

云原生是什么意思?我们为什么需要云原生?相关推荐

  1. 云原生生态周报 Vol. 8 | Gartner 发布云原生趋势

    业界要闻 Gartner 发布云原生基础设施未来的八大趋势:权威分析机构 Gartner 在对 2020 年技术趋势的展望当中指出:"预计2020年所有领先的容器管理软件均内置服务融合技术, ...

  2. 说出你和「云原生」的故事,获得年度云原生顶级盛会通行证

    2021 年 12 月 9 日,阿里云即将携手 10+ 位云原生领域一线技术专家亮相年度最顶级的云原生开源技术峰会-- KubeCon + CloudNativeCon + Open Source S ...

  3. 前沿分享|阿里云数据库解决方案架构师 王宏宇:云原生数据仓库AnalyticDB在零售行业的深度应用和业务价值

    简介:本篇内容为2021云栖大会-云原生数据仓库AnalyticDB技术与实践峰会分论坛中,阿里云数据库解决方案架构师 王宏宇关于"云原生数据仓库AnalyticDB在零售行业的深度应用和业 ...

  4. 阿里云开源PolarDB数据库,与社区共建云原生分布式数据库生态

    简介:5月29日,阿里云开发者大会上,阿里巴巴宣布开源云原生数据库能力,对外开放关系型数据库PolarDB for PostgreSQL 源代码,服务百万开发者,与社区开发者一起共建云原生分布式数据库 ...

  5. rds数据加密_如何保障云上数据安全?一文详解云原生全链路加密

    导读:对于云上客户而言,其云上数据被妥善的安全保护是其最重要的安全需求,也是云上综合安全能力最具象的体现.本文作者将从云安全体系出发,到云数据安全,再到云原生安全体系对全链路加密进行一次梳理,从而回答 ...

  6. 华为云薛浩:媒体业务进入全面云化时代,云原生成为必然选择

    摘要:近日,华为云TechWave云原生媒体服务专题日在线上成功举办.华为云音视频服务正式升级为华为云媒体服务,升级背后的驱动力是什么?代表着华为云在音视频,媒体行业哪些新的布局?华为云媒体服务产品部 ...

  7. 「AI原生」时代来临?百度智能云提出AI-Native,发布新一代云基础架构「太行」

    百度在AI新基建领域的投入持续加码.8月20日,ABC SUMMIT 2020百度智能云智能计算峰会举行,大会以"新基建 新计算 新动能"为主题.百度CTO王海峰.百度集团副总裁侯 ...

  8. Cloudera果然向云出手了!新机器学习服务采用云原生路径!

    今年10月份,Cloudera宣布与Hortonworks合并,这两家Hadoop领域的头部厂商为了抗住主流云供应商亚马逊.微软和谷歌的压力不得不走到一起,根据当时的报道,双方之后会将重心转移到云上. ...

  9. 云原生游戏《云联物语》揭开神秘面纱 云鹭科技温向东带你深度了解云原生游戏领域...

    云原生游戏<云联物语>揭开神秘面纱 云鹭科技温向东带你深度了解云原生游戏领域 作者:阿姆斯特朗雷时间:2020-10-22 分享到: 10月21日,云鹭科技云游戏互动直播分享会在斗鱼直播平 ...

  10. 光云科技快麦ERP正式入选阿里云原生合作伙伴计划,赋能企业“新基建”

    近日,杭州光云科技有限公司(股票简称:光云科技,股票代码:688365)与阿里云签订了"云原生合作伙伴计划协议",成为首批入驻的解决方案伙伴,阿里云解决方案伙伴具备自主解决方案,或 ...

最新文章

  1. 服务器磁盘阵列做win7系统,Raid0可以安装winxp-x86,但不能安装win7-x64,是怎么回事呢?!...
  2. 网易云信直播sdk的整体传输优化
  3. 通过反射运行配置文件内容
  4. echarts2.2.7入门
  5. jmeter 响应结果分析一
  6. 《游戏大师Chris Crawford谈互动叙事》一1.2 两种思维方式
  7. PAT 1072. 开学寄语(20)-PAT乙级真题
  8. [No0000143]Win10“卓越性能模式”
  9. 利用MapGis6.7 对 jpg图像文件进行图形校准
  10. C语言方波转换正弦波,方波转换成正弦波电路
  11. 需要管理员权限解决办法
  12. 读《卧底经济学》有感
  13. 重新启动计算机的方法有,如何取消电脑自动更新后的重新启动计算机提示
  14. [JS] 聊一聊File对象
  15. InfluxDB常用函数
  16. 【UVM实战】第七章:UVM中的寄存器模型(2)简单的寄存器模型
  17. [网友LionD8的毕业论文]Windows2000 内核级进程隐藏、侦测技术
  18. 计算机相关检测手段,计算机硬件测试的三种方法
  19. git 如何提交丰富的emoji表情
  20. html 鼠标经过时显示,css 如何实现当鼠标滑过超链接出现提示框呢?

热门文章

  1. 毕业设计分享----基于Java的个性化博客空间的设计与实现
  2. 点击按钮1 打开/关闭按钮2
  3. RTTI (Runtime Type Identification)
  4. 【redis】SpringBoot整合+geo地理位置应用
  5. 统计学中sp_统计学名词解释
  6. python调用大漠找图_按键精灵大漠插件找图使用方法
  7. 在线教育平台建立付费会员体系
  8. linux设置时间大全
  9. 为什么要对数据进行归一化处理
  10. 利用python绘制分析路易斯安那州巴吞鲁日市的人口密度格局