什么是云原生应用?有哪些特点?

381 阅读12分钟

近年来,**“云原生”**频繁出现在我们的视野中,成为了IT 圈里耳熟能详的热门词。

根据Forrester数据显示,在2021年,全球云原生应用持续上升,组织中容器和无服务器技术的使用率在一年内都增长了75%以上

并且根据Gartner预测,到2025年,将会有超过95%的新数字工作负载被部署在云原生平台上,而在2021年这一比例只有30%。Gartner分析师Govekar认为:

采用云原生平台的数字或产品团队将能够通过架构原则和功能来充分运用云环境中的固有能力。在云原生环境中部署新工作负载不仅将成为一种流行趋势,更将成为一种普遍现象,任何非云技术都将过时。

前不久,华为成功发射首颗具备云原生边缘计算能力的卫星的消息,更是使“云原生”再度被聚焦在IT舞台中央。

那么,异步君就来给大家捋一捋云原生发展的时间线,一同探寻云原生背后的答案。

本文部分内容源自:国内云原生技术的先行者和布道者刘景应(四牛)创作的**《企业级云原生架构:技术、服务与实践》**

[

](union-click.jd.com/jdc?e=jdext…)

一、从AWS与Netflix的故事说起

在云计算与云原生兴起之前,硬件自行采购和IDC机房租用是大多数企业主要采用的IT基础设施构建方式。不过,机房维护不仅是一件非常复杂的工作,还存在许多问题。

为了使资源拥有快速扩容的能力,服务器的采购周期不再阻碍业务的增长,许多企业开始把目光聚焦在云上,尝试把业务迁移上云。

2006年,亚马逊推出了 Amazon Web Services(AWS),提供对象存储服务S3、消息队列SQS和虚拟机服务EC2,实现了IDC迁移上云,助力业务全球扩展。

亚马逊希望AWS成为一个提供最全面的云原生服务的公有云平台。AWS也不负众望,经过数年发展,如今已成为全球最全面、应用最广泛的云平台之一,提供超过200项功能齐全的服务,包括计算、存储、网络、数据库、分析、应用服务等。

不过,上云只是云原生的开始。

要真正用好云,不仅是基础设施和平台的升级,应用也需要摒弃传统的设计方法,从架构设计、开发方式到部署维护的整个软件生命周期管理,都要基于云的特点进行重构,从而构建“原生为云”而设计的应用,这样才能在云上以最优的架构、最佳的模式运行,并充分利用和发挥云平台

的弹性以及分布式优势。

采用基于云原生的技术和管理方法,可以更好地把业务生于“云”或迁移到云平台,从而享受“云”的高效和持续的服务能力。

在这个过程中,探索出一条切实可行的道路,成为云原生典范的是NetFlix

对于许多喜欢看美剧的朋友来说,NetFlix这家公司一点都不陌生。毕竟,NetFlix网站上的美剧基本上都是最火的。

但其实,在征服全球用户的过程中,NetFlix也经历了很多不为人知的巨大挑战,支持它突破难关、领先竞争对手、快速发展的秘诀之一就是采用基于云原生的系统架构。

云原生架构的内容

2008年8月,NetFlix因为主要数据中心发生故障,导致整个 DVD租赁服务停止三天。

这个故障使得Netflix意识到,以往使IT系统运行在IBM服务器、Oracle数据库和SAN存储搭建的平台上的做法存在问题,他们需要一个没有单点故障的、更可靠的基础架构

因此,他们开始思考是否可以利用新兴的低成本云基础设施来替代以往昂贵的传统IT基础设施。

2009年,随着新业务的发展,NetFlix网站的流量激增。新业务给数据中心带来了巨大的扩容压力,Netflix亟需一种快速扩容数据中心的方法。

因此,Netflix选择了当时是世界上最大的公有云的AWS来迁移其 IT 基础架构。

就此,Netflix起飞于AWS云上。

自建机房与云上laaS的TCO&复杂度对比曲线

不过,要是Netflix只是单纯地借助AWS体验云原生的强大,那么我们也不会把NetFlix比作云原生刀耕火种时代的拓荒者。

Netflix另一个具有开创性和前瞻性的举措是其除了将 IT 基础架构从自己的数据中心迁移到公共云上之外,还通过微服务架构,用较小的易管理软件组件替换单体程序。

这不同于我们如今因为知道微服务的奇妙之处,才会去采用这种技术。

Netflix在当时纯粹是出于业务的需求,充分利用云的弹性和敏捷、利用开源标准、促进业务微服务化和快速迭代,进而满足了业务需求。它也正是微服务架构背后的首批主要推动者之一。

从最初的在云上以虚拟机部署单体应用,到借助ECS、EKS进行微服务化、容器化改造,实现云资源的弹性伸缩,全球容器集群的统一管理

在2013年,**Netflix实现了真正的“生于云,长与云”。**这也是业务云原生进化的典型过程。

二、云原生的定义

云原生的故事虽然早已开始,但是业内对“云原生(Cloud Native)”这个词汇的具体定义还在重定义中。

Pivotal 最初的定义

业内一般公认云原生概念的首次提出是在2013年,由Pivotal公司(Spring开源产品的母公司)的技术产品经理Matt Stine在推特上提出。

2015年,Matt Stine还在其编写的《迁移到云原生应用架构》中,率先提出了将传统的单体应用和面向服务的架构(Service-Oriented Architecture, SOA)应用到云原生架构所需的文化、组织和技术变革,并定义了云原生应用架构的几个主要特征

  • 十二要素应用程序:云原生应用程序架构模式的集合
  • 微服务:独立部署的服务,每个服务只做一件事情;
  • 敏捷基础设施:快速、可重复和一致地提供应用环境和后台服务的平台;
  • 基于应用程序接口(Application Programming Interface, API) 的协作:发布和版本化的API,允许在云原生应用程序架构中的服务之间进行交互;
  • **抗压性:**系统具备良好的健壮性, 能够抵抗外界非预期的流量冲击;

CVCF 最初的定义

同年7月,Google发起成立了云原生计算基金会(CNCF),初步对云原生进行了官方定义,标志着云原生正式进入了发展加速期。

CNCF 最初的定义主要包含三个方面:

  • 应用容器化;
  • 面向微服务架构;
  • 应用支持容器的编排调度;

Pivotal 网站的定义

2017年,Matt Stine重新修正了云原生特征,提出了云原生架构特征2.0:

  • 通过微服务模块化、可观测、可部署、可测试、可处理、可替换。

同年,Pivotal在其网站定义云原生的特征:

  • DevOps、CD、微服务和容器化。

CNCF的重定义

2018 年,几乎所有主流云计算供应商都加入了CNCF,CNCF 基金会中的会员及其覆盖的项目越来越多,国内的阿里云、华为云、京东相继成为CNCF的白金会员。

云原生生态愈发壮大,并且还在逐渐吞并原先非云原生应用的部分。CNCF最初的定义已经不足以支撑云原生生态的发展了,因此,CNCF对云原生进行了重定义。

  • 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用
  • 云原生的代表技术包括容器、服务网格、微服务、不可变基础设施声明式API
  • 这些技术能够构建容错性好、易于管理便于观察松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。

至此,云原生的概念日渐清晰。

三、云原生正在席卷全球,新开发时代已经开启

在理论的完善过程中,还包含了几个决定云原生的落地实践的关键点。

2013年,云计算世界发生了一件划时代的事情——开源容器软件Docker的发布,它将传统云计算(Iaas)与新兴云计算(云原生)划分开来,从此以Docker为代表的容器技术开始兴起**。**

容器化是云原生的第一步,如果不对应用程序进行容器化,就无法实现云原生。

容器是一个标准的软件单元,它将代码及其所有依赖关系打包起来,这样应用程序就可以从一个计算环境快速、可靠地运行到另一个计算环境。至于应用程序的大小和类型,都是无关紧要的。

Docker是容器化的首选平台,你可以将任意大小的应用程序和依赖项,甚至在模拟器上运行的一些程序,都进行容器化。Docker 容器镜像是一个轻量级、独立、可执行的软件包,包含运行应用程序所需的所有内容。

随着时间的推移,你还可以对应用程序进行分割,并将未来的功能编写为微服务。

2014年,Google发布Kuberbetes开源项目,将现在占主导地位的容器编排器带给了世界。

容器编排主要是管理容器的生命周期,尤其是在大规模复杂的生产环境中,软件团队使用容器编排来控制和自动化许多任务。

从2017年开始至今,Kubernetes成为了容器编排的标准,也是目前市场上应用编排领域中使用最广泛的工具。

但是,云原生的脚步就此停止了吗?显然并不是。

我们暂且不看国外,就看国内。

国内普遍认为云原生的概念是由阿里巴巴在2019年提出的。

同年10月,阿里巴巴和微软共同推动的云原生应用规范模型OAM(Open Application Model)宣布开源。

在2019年这个国内云原生元年里,阿里巴巴集团“全面上云”,以“云”为核心的软件研发思想,逐步成为默认选项。

Kubernetes等云原生技能成为技术人员必修课,大量相关的工作岗位涌现。

据云原生产业联盟发布的**《中国云原生用户调查报告(2020年)》**显示:

云原生应用建设需求在逐渐增长,60%以上的用户已在生产环境中应用容器技术,43%的用户已将容器技术用于核心生产业务。

事实上,云原生已从1.0时代进化至2.0时代。在2020年,华为云还创新提出云原生2.0理念,致力于让每一个企业都能成为新的云原生企业。

没有人可以否认,云原生正在席卷全球。

作为诞生于云计算时代的新技术理念,云原生拥有传统IT无法比拟的优势,可帮助企业高效享受云的弹性和灵活性,以服务化的形态获取各种资源,降低大规模分布式高并发的技术门槛,从而实现快速开发、平滑迁移、稳定可靠、运维简便的应用构建模式。

“未来的软件一定是长在云上,企业也必将长在云上。”

不论是企业还是个人开发者,都应该拥抱云原生。它能使企业和开发者成为更好的自己。

应用上云为企业带来新的发展动力

四、如何学习云原生?

从“软件正在吞噬整个世界”,到“开源技术在某种程度上重新定义了科技的边界,这背后的原因在于开源技术正在吞噬软件世界”,到“云计算已改变了天空的颜色”,再到如今的“云原生才是那条最大的吞噬世界的鱼”,云原生在当下的重要性显而易见。

那么,我们如何赶上云原生这股浪潮呢?

在这里,异步君推荐大家从**《企业级云原生架构:技术、服务与实践》**开始。

这是一本匠心之作,它较为全面、系统地介绍了云原生架构相关的方法论与技术产品。

本书的作者刘景应(四牛),具有20年软件开发、架构设计以及解决方案咨询经验,目前就职于阿里云云原生应用平台,熟悉互联网企业的技术栈与开发管理模式,对云原生相关技术、产品、架构有较为全面的理解,是国内云原生技术的先行者和布道者,致力于推动云原生相关理念和技术在国内IT应用中的落地实践。

他结合其多年的大型项目建设实施经验,阐述了分布式环境下面向云原生的架构设计最佳实践。

全书主要分为4个部分,分别是云原生概述、云原生技术、云原生服务、云原生架构实践,每一部分的内容都干货十足。

这本书兼顾理论、技术与实践,对互联网行业的业务咨询师、系统架构师,以及相关领域的技术开发人员来说,具有很好的学习指导意义。