一、什么是云原生
1.1 官方定义
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。 云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。
以上是 Cloud Native Computing Foundation(CNCF)的官方定义。从这个定义中我们可以归纳出以下几个重点:
- 云原生技术运行在云环境中
- 核心技术包括容器、服务网格、微服务、不可变基础设施、声明式 API
- 云原生应用具有可弹性扩展、容错性好、易于管理、便于观察、低耦合的特点
- 云原生应用能够以自动化的方式轻松应对系统的频繁和可预期的重大变更
在官方的定义中,我们可以看出,其实“云原生”既是技术集合,又是应用架构思维。不过,也许看了这个定义,还是无法切身或者直观的体会什么是云原生。接下来看看我的理解。
1.2 我的理解
1.2.1 传统开发+部署
先看下图,传统的应用通常在个人 PC 机上开发,然后通过编译、打包,运行在个人 PC 机上或者是传统 IDC 中的某台物理机或者虚拟机上来为业务服务。
从上图我们看到,应用跑在服务器上,使用了服务器的硬盘、内存、网络等资源,应用所能承受的极限负载取决于服务器内存大小、CPU 核数、硬盘大小、网络带宽等。一旦需要业务量上来,即将面对的可能有硬件扩容、数据迁移等繁琐、重复的工作(比如,应用的文件数据等通常保存在应用所做服务器的磁盘内,当磁盘空间不够时,需要进行磁盘挂载来添加,如果应用需要部署多台机器时,又的重新配置机器,有时候可能还需要更改应用写文件数据的路径等配置信息)。那在云原生的环境下,开发者是怎么开发应用的呢?
1.2.2 云原生开发+部署

此时开发者同样可以在个人 PC 机上或者是 web IDE(云上 IDE)进行开发工作。且开发时直接面向的是云上提供的各种服务,如计算服务、存储服务、缓存服务、网络服务、数据库服务、对象存储服务等,无需再关心机器的磁盘以及路径,也无需关心网络带宽,只需要调用相关服务提供的接口(类比传统的文件操作接口等)即可。在应用运行时,如果单个应用的负载过高,可以通过 K8S 等技术来实现自动扩缩容容器实例来缓解系统压力,而扩容出来的时候所需要的资源已经全部交由云计算底座来管理和调度即可。而且扩容出来的多个应用实例,调用的都是服务接口,比如对象存储服务接口,那么他们的数据都将按照程序里面写好的路径被保存,而无需再像传统方式一样,可能需要修改存储路径,且数据散落在多个服务器上;如果某个应用实例要被回收时,传统方式还需要将那个服务器上的文件拷贝到另一台没有被回收的服务器上,而使用存储服务就完全没这个烦恼,云底座提供的服务自动为我们处理好了文件的分布式存储,我们就像在使用一台海量存储的超级计算机。
1.3 总结
结合 1.1 和 1.2,我的对云原生的理解如下
- 云计算提供了一台类似传统 PC 机的超级计算机,它拥有着海量存储、海量计算、海量网络等资源,而云原生相关的技术就是指软件应用开发者利用如容器、服务网格、微服务、不可变基础设施、声明式 API等技术,在这台超级计算机上轻松开发出天然就具有高弹性扩容、分布式特性等特点的应用,天然就能完美的运行在云上;
云原生是一套架构体系和方法论,即面向云服务编程,使用应用生在云上、长在云上。
二、能做什么
充分释放云计算的技术红利
- 云计算的拐点已至,云原生成为驱动业务增长的重要引擎
- 提升业务交付效率,使业务更敏捷、成本更低
- 使业务应用具有极致的弹性和可伸缩性成为可能
- 使应用的管理和运维可视化、自动化
-
三、核心技术
第一,云应用定义与开发流程,包括应用定义与镜像制作、配置CI/CD、消息和Streaming以及数据库等。
第二,云应用的编排与管理流程,包括了应用编排与调度、服务发现治理、远程调用、API网关以及Service Mesh。
第三,监控与可观测性,这部分所强调的是云上应用如何进行监控、日志收集、Tracing以及在云上如何进行破坏性测试。
第四,云原生的底层技术,比如容器运行时,云原生存储技术和云原生网络技术等。
第五,云原生工具集,在前面这些核心技术点之上,还有很多配套的生态或者周边的工具需要使用,比如Devops、流程自动化与配置管理、容器镜像仓库、云原生安全技术和云端密码管理等。
第六,Serverless,这是一种PaaS的特殊形态,它定义了一种更为“极端抽象”的应用编写方式。四、云原生应用特点五、发展趋势
5.1 容器技术发展趋势
5.1.1 趋势一:无处不在的计算催生新一代容器实现
随着互联网的发展到万物智联,5G、AIoT 等新技术的涌现,随处可见的计算需求已经成为现实。针对不同计算场景,容器运行时会有不同需求。KataContainer、Firecracker、gVisor、Unikernel 等新的容器运行时技术层出不穷,分别解决安全隔离性、执行效率和通用性三个不同维度的要求。
基于MicroVM的安全容器占比将逐渐增加,提供更强的安全隔离能力。虚拟化和容器技术的融合,已成为未来重要趋势
- 基于软硬一体设计的机密计算容器开始展露头角。
- WebAssembly作为新一代可移植、轻量化、应用虚拟机,在IoT,边缘计算,区块链等场景会有广泛的应用前景。
5.1.2 趋势二:云原生操作系统开始浮现
Kubernetes已经成为云时代的操作系统。对比Linux与Kubernetes的概念模型,他们都是定义了开放的、标准化的访问接口;向下封装资源,向上支撑应用。
它们都提供了对底层计算、存储、网络、异构计算设备的资源抽象和安全访问模型,可以根据应用需求进行资源调度和编排。Linux的计算调度单元是进程,调度范围限制在一台计算节点。而Kubernetes的调度单位是Pod,可以在分布式集群中进行资源调度,甚至跨越不同的云环境。
从无状态应用,到企业核心应用,到数据智能应用。过往Kubernetes 上主要运行着无状态的Web 应用。随着技术演进和社区发展,越来越多有状态应用和大数据/AI 应用负载逐渐迁移到Kubernetes 上。5.1.3 趋势三: Serverless 容器技术逐渐成为市场主流
Serverless 和容器技术也开始融合得到了快速的发展。通过Serverless 容器, 一方面根本性解决Kubernetes 自身复杂性问题,让用户无需受困于Kubernetes 集群容量规划、安全维护、故障诊断等运维工作; 一方面进一步释放云计算能力,将安全、可用性、可伸缩性等需求下沉到基础设施实现。5.1.4 趋势四:动态、混合、分布式的云环境将成为新常态

上云已是大势所趋,但对于企业客户而言,有些业务出于对数据主权、安全隐私的考量,会采用混合云架构。一些企业为了满足安全合规、成本优化、提升地域覆盖性和避免云厂商锁定等需求,会选择多个云厂商。混合云/ 多云架构已成为企业上云新常态。Gartner 指出,” 到2021,超过 75% 的大中型组织将采用多云或者混合IT 战略。”
5.2 基于云原生的新一代应用编程界面
Kubenetes 已经成为了云原生的操作系统,而容器成为了操作系统调度的基本单元,同时定义了应用交付的标准。但是对于应用开发者来说,这些还远没有深入到应用的架构,改变应用的编程界面。但是这种变革已经在悄然发生了,而且有不断加速之势。
- Sidecar 架构彻底改变了应用的运维架构。由于 Sidecar 架构支持在运行时隔离应用容器与其他容器,因此原本在虚拟机时代和业务进程部署在一起的大量运维及管控工具,都被剥离到独立的容器里进行统一管理。对于应用来说,仅仅是按需声明使用运维能力,能力的实现成为云平台的职责。
- 应用生命周期全面托管。在容器技术基础上,应用进一步描述清晰自身状态(例如通过 Liveness Probe),描述自身的弹性指标以及通过Service Mesh 和Serverless技术将流量托管给云平台。云平台将能够全面管理应用的生命周期,包括服务的上下线、版本升级、完善的流量调配、容量管理等,并保障业务稳定性。
- 用声明式配置方式使用云服务。云原生应用的核心特点之一就是大量依赖云服务(包括数据库、缓存、消息等)构建,以实现快速交付。而这些服务的配置实际上是应用自身的资产,为了能够让应用无缝地运行在混合云的场景,应用逐渐开始以基础设施即代码的方式使用云服务。
语言无关的分布式编程框架成为一种服务。为了解决分布式带来的技术挑战,传统中间件需要在客户端 SDK 编写大量的逻辑管理分布式的状态。今天,还是基于 Sidecar 架构,我们看到很多项目在把这些内容下沉到 Sidecar 中,并通过语言无关的 API (基于 gPPC/HTTP)提供给应用。这一变化进一步简化应用代码的逻辑和应用研发的职责,例如配置的绑定,身份的认证和鉴权都可以在 Sidecar 被统一处理。在这个方面 dapr.io 和 cloudstate.io 是先行者。
5.3 Serverless 发展趋势
趋势一:Serverless 将无处不在
- 趋势二:Serverless 将通过事件驱动的方式连接云及其生态中的一切
- 趋势三:Serverless 计算将持续提高计算密度,实现最佳的性能功耗比和性能价格比
六、总结
当前全球的数字化浪潮逐步加深,云计算成为当今信息化发展的重要基础设施,云原生在数字化浪潮中的角色逐步提升,成为业务创新发展的重要驱动力。可以预见,在不久的将来,基于云原生架构的云原生应用将会引领技术潮流,成为各个企业标配,最终趋于全面云原生化。
