什么是云原生?它有哪些关键特性和使用场景?

Alan Zeichick | 高级撰稿人 | 2025 年 10 月 8 日

云原生计算是一种充分利用云技术平台功能的应用设计、创建、部署和运行方法。在此之前,传统软件(有时被称为“单体软件”)虽然在原有的数据中心运行模式外发展出了公有云运行模式,但却无法充分利用云环境的可扩展性和成本效率优势。

在这一背景下,云原生计算诞生了。相比安装在服务器上的单体应用,云原生软件是由数十、数百,甚至数千个小型软件组件编译而成的。这类组件被称为微服务,位于安装在云服务器上的容器中。微服务彼此之间通过安全的高速网络通信,协作解决业务问题。

这种模块化方法有哪些优势?优势有很多,我们将在本文中逐一探讨。以下是其中四项最显著的优势。

  • 微服务可以独立编写、测试和部署,从而加速开发流程。
  • 如果在某个微服务的设计或实施中发现缺陷,只需对该微服务进行调试、优化和替换,不会影响应用的其他部分。
  • 如果某个微服务因流量突增而过载,可将其容器复制出一个或多个相同副本,分别部署在不同服务器上,分担工作负载。这能够减少甚至消除性能瓶颈。
  • 开发特定微服务的人员可以灵活选用合适的工具、处理器架构,甚至编程语言来构建该微服务。

以下将带您更深入了解云原生计算及其相关概念和术语。

什么是云原生?

“云原生”是指以一种充分利用分布式云计算优势的方式来设计、构建、部署、运行和管理应用,以此方式构建的云原生应用旨在充分利用云技术平台特有的可扩展性、弹性和灵活性优势。

以上就是云原生计算基金会 (CNCF)(一个管理众多云原生开放标准的独立组织)对“云原生”的定义。

云原生技术支持组织在公有云、私有云和混合云等现代化、动态环境下构建和运行可扩展应用,其中的典型代表包括容器、服务网格、微服务、不可变基础设施和声明式 API。

云原生技术能够协作构建弹性、可管理、可观测、松散耦合的系统,还能在强大的自动化技术的加持下帮助工程师频繁、可预测、尽可能轻松地做出巨大改变。

在这里,我们有必要细细拆解“云原生”这个概念,探究它的各种相关术语。

其中,可扩展应用是指无需重写或重新设计就能有效应对工作负载增长的应用;动态环境是指云计算平台,例如 Oracle Cloud Infrastructure (OCI) 和来自所有其他主要服务提供商的公有云、私有云和混合云。

此外,容器负责对微服务打包;服务网格基础设施负责通过支持安全性、可观测性、策略实施和服务发现功能的高速网络联结容器;不可变基础设施意味着一旦部署完毕,容器将不可更改,只能通过高度可控的方式予以替换,还意味着分布式应用可预测和可复制,保证一个容器/微服务的所有副本都完全一致。

最后一个非常重要的概念是“松散耦合”。它意味着当相互协作时,微服务之间通过清晰定义的协议通信。这种协作被称为“声明式 API”,负责精心描述相关微服务的职责、请求何种数据以及将在完成自身工作后返回何种数据。此外,“松散耦合”还意味着微服务自身内部的运作方式是隐藏的,而且可以随时在不影响应用其他部分的前提下予以修改。这就为整个应用赋予了出色的弹性、可扩展性和更新简易性。

云原生应用可在所有云架构下运行,包括公有云、私有云、混合云和多云。其中,公有云架构下,数据通过互联网在云技术应用和最终用户/企业数据中心间传输;私有云架构下,数据完全在安全网络(例如一项部署在一个数据中心内部的云技术服务)中传输;混合云是公有云、私有云和企业数据中心的结合体;多云部署则涉及一个以上的商用云技术服务提供商,例如应用的一部分基于 OCI 运行,另一部分基于 Microsoft Azure 运行。

示意图:云原生的特征,说明如下:
云原生应用充分利用运行于容器(安装在云服务器上)内的微服务。DevOps 团队同时肩负着传统的软件开发人员职能和系统管理员职能,一方面通过持续集成 (CI) 方法创建和增强微服务,另一方面通过持续交付 (CD) 方法,在不影响应用其他部分的前提下将新的微服务推送到云端。

关键要点

  • 云原生方法将大型应用拆分为模块化组件,也就是“微服务”。
  • 微服务被打包进容器,而容器可轻松、快速安装到云技术服务提供商的服务器上。
  • Kubernetes 等编排软件可自动化部署和管理容器化的微服务。
  • 微服务是独立设计、编写、测试、部署和管理的,这既可以加快开发速度,又支持在不影响应用其他部分的前提下调试和优化微服务。
  • 云原生应用可以更充分地利用商用云技术服务,因此运行效率更高,既能避免资源浪费,又能降低软件运行成本。

云原生详解

云原生应用由相互独立的微服务构成,微服务将被打包为轻量、自包含的容器,而容器具有高度的可移植性,支持快速地按需扩展或缩减。通过将微服务封装进容器种,云原生技术能够在各类运行环境(包括数据中心和商用云技术服务)中无缝部署,并可在各种类型的服务器(如 Linux 和 Windows)上运行。

在最常见的云原生设计中,应用功能被拆分为数十、数百,甚至数千项分别执行一项特定任务的微服务。在编写完毕后,微服务将被封装到一个容器映像(一种可被加载到服务,然后执行的交付载体)中。目前,最流行的容器标准是 Docker,这是来自 CNCF 的一种开源格式,已获得当今几乎所有云技术服务提供商的支持。

一个完整的企业应用可能由数千个 Docker 容器构成。如何将所有这些容器部署到云技术服务上,通过合适的安全机制和高速网络将它们连接起来,确保来自某个微服务的消息能被路由到正确的接收方,并处理好扩展性问题以及偶尔出现的服务故障?这就轮到开源的 Kubernetes 平台上场了。与 Docker 一样,Kubernetes 同样背靠 CNCF,也已成为了一项行业标准。关于 Kubernetes,一言以蔽之,它能够有效处理和自动执行大型云原生应用在运行、管理和扩展上的所有复杂工作。

简而言之,通过使用 Docker 容器封装微服务,再使用 Kubernetes 在云技术服务上部署 Docker 容器,您就可以获得一个全面、可扩展、弹性的云原生应用。

传统应用与云原生应用对比

与云原生应用相对的是基于单一代码库,通常由单一开发团队开发的传统/单体应用。它们由开发团队编写和测试,然后被交付至运营团队,由其部署到服务器。当发现软件缺陷时,开发团队将查找问题,进行修正,然后向运营团队交付新版本软件,最后由运营团队停用原始版本软件,安装并重启新版本软件。当需要添加新的软件特性时,开发团队和运营团队将重复这一过程,替换和重启软件。

相比之下,云原生应用是以众多微服务集合的形式编写的,每个微服务都是独立的软件单元。这些软件单元可独立进行设计、编码、测试和部署,不会影响应用的其他部分,从而使修订过程更高效、更新更流畅。开发人员可以为自己构建的特定微服务,选择最合适的工具(包括编程语言)。

我们打个比方:想象一下,您家里客卫的水龙头开始漏水了。要修好它,您需要搬出 House 4.1,用水龙头不漏水的 House 4.2 替换 House 4.1,然后再搬回去。想把单水槽更换为双水槽?那就再搬出去,安装 House 4.3。这就是单体架构(传统软件模式)。您会这么做吗?当然不会!因为一个水管工就可以为您更换水龙头,一个承包商就可以为您重新设计客卫而不影响您家里的其他设施。这就是云原生模式。

云原生开发的关键组件

云原生计算的出现,同时带来了一系列全新的概念和术语,这些内容对于理解该模式的优势至关重要,具体包括:

  1. 容器和容器化

    Kubernetes 旨在实现高可用性 (HA),它提供的用于修复故障容器的自动化特性是云原生模式的核心支撑。这类轻量、自包含的程序包(通常由 Docker 创建)包含应用在不同计算环境中稳定运行所需的全部依赖项。这种容器化实现了应用的可移植性,有助于快速部署应用。

    归根到底,容器提供了一种标准化的隔离环境,它能够降低依赖关系间的冲突风险,使应用独立运行。这种隔离还能将潜在安全漏洞的影响限制到单个容器内,从而提升安全性。此外,容器的轻量化特点也有助于提高资源利用率。

  2. 微服务架构

    微服务是将复杂应用拆分为多个更小的、独立的服务。每个服务专注于特定功能,这使并行开发成为可能,能够加快开发速度。

    微服务架构提升了敏捷性和灵活性。每个微服务都可以独立开发、部署和扩展,支持快速更新和新功能发布。这种模块化设计还能改善故障隔离,使得单个服务出现问题不会影响整个应用。

  3. 不可变基础设施

    不可变基础设施是指资源在部署后绝不直接修改的架构理念。所有变更都通过创建配置已更新的新实例来实现,这能保证环境一致性,并简化回滚流程。对此,基础设施即代码 (IaC) 工具可自动化基础设施的供应,提升效率和可重复性。

    IaC 允许以代码的形式来定义基础设施,从而实现更出色的版本控制、自动化测试以及在不同环境间的一致部署。该理念将基础设施视作应用的核心组成部分,对其采用与代码库同等严格的管理和管控标准。

  4. 自动化和编排

    自动化是云原生的关键环节,旨在实现大规模部署,而这类部署如果依靠人工管理将难以完成。对此,容器编排工具(如 Kubernetes)可以自动化管理和部署容器化应用。这些工具提供高可用性、高效的资源分配和简化的缩放能力,让复杂的分布式系统更易于管理。

    自动化和编排对于实现云原生系统所具备的可扩展性、容错性和自我修复能力至关重要。例如,Kubernetes 云技术服务支持动态资源分配,有助于应用按需扩展和进行自动化故障恢复。

  5. 可观测性和监控

    云原生应用在设计时就充分考虑了可观测性,这意味着开发人员能够更好地理解系统的内部运行状态。这方面包括收集和分析指标、日志和追踪,从而深入了解应用性能、资源使用情况和潜在问题。

    高级监控工具可实时洞察应用的健康状况和性能表现。这些工具支持主动式问题排查,帮助开发人员在问题影响用户之前就发现并解决问题。总之,可观测性和管理服务对于优化应用性能和资源分配至关重要。

  6. 弹性和自我修复

    弹性有助于云原生系统从故障中恢复和维持稳定,是云原生系统的关键特性。这一特性通过副本、负载均衡和自动恢复机制等策略来实现。自我修复能力,能够在无需人工干预的情况下检测并修复问题,维持高可用性。

    云原生应用的一大设计理念是优雅地处理故障,尽可能减少停机时间。对此,自我修复机制可以自动检测并解决问题,确保应用平稳运行。这种弹性对于关键业务运营至关重要,并能带来可靠的用户体验。

视频:什么是云原生?

采用云原生方法的优势

相较于运行传统单体应用,云原生方法能够为企业带来显著优势。这些优势包括:

  • 可扩展性和灵活性。 云原生应用能够以动态可扩展性满足工作负载需求。容器和微服务可实现细粒度缩放,提升资源利用率和成本效益。这种灵活性使企业能够快速响应市场变化。
  • 敏捷开发和更快速投放市场。 云原生方法可缩短开发周期。微服务架构支持并行开发,多个团队可同时开发不同服务,从而加快版本发布速度,为企业带来竞争优势。
  • 成本效率。 云原生架构可优化资源利用率,实现显著成本节约。一方面,企业仅为实际使用的资源付费;另一方面,自动化流程能够尽可能减少手动工作,降低运营成本
  • 更高可靠性和高可用性。 云原生系统具备弹性设计,可保障高可用性。冗余部署、负载均衡和自我修复机制可在故障发生时仍保持应用可用,对核心业务至关重要,且软件更新可实现近乎零停机部署。
  • DevOps 和 CI/CD。 云原生方法无缝契合 DevOps,有助于组织构建高效的持续集成和持续交付 (CI/CD) 管道。同时,自动化贯穿整个开发生命周期,促进团队协作和效率提升。
  • 基于标准的可移植性。 云原生服务通常基于开源和标准化技术,具备良好的互操作性和工作负载可移植性,可降低供应商锁定风险,支持全球基础设施适用性,为全球用户带来更低延迟和更高性能。
  • 安全设计。 云原生方法将安全性全面植入到了每一个层级,例如容器可提供隔离环境,降低漏洞风险;自动化安全更新和策略实施可进一步增强安全态势,使云计算成为了即使具有最严苛安全性要求的使用场景的可行选择。

以下是云原生计算的一些关键特性和优势。

特性 优势
微服务架构 当企业应用以小段代码形式编写,每段代码实现不同的业务功能(即微服务)时,应用的构建速度更快、更易管理、扩展性更强、弹性更高,且升级和增强也更为简便。
容器和容器化 微服务通常被打包到容器中,这些容器可以轻松部署到云服务器上。由于容器经过精心构建和定义,它能够在云技术服务中任何兼容的服务器上运行。如有需要,您甚至可以部署多个容器副本来应对重型工作负载,只需将旧容器替换为升级版本,而不会影响应用的其他部分。
持续集成和持续交付 (CI/CD) CI/CD 是一种流程,开发团队通过管道方式对微服务进行设计、构建、测试并部署到容器中,再将这些容器部署到云服务器。CI/CD 能够加快发布周期、提升开发人员生产力,并适配自动化工作流以加快软件部署速度。
不可变基础设施 容器等不可变组件在部署后绝不被修改。当需要更新时,直接替换容器即可。其优势在于软件环境保持一致、发布流程简化,并且能够轻松将应用复制到新的云数据中心,甚至新的服务提供商。
DevOps 实践 DevOps 是指将传统的开发团队与运维团队合并为一个整体。DevOps 团队负责编写软件、测试软件,随后进行部署并管理部署后的运行。当 DevOps 与 CI/CD 和自动化相结合时,新软件能够快速上线,且由于责任明确,问题可以得到快速解决。
可观测性和监控 可观测性有助于 DevOps 团队了解应用运行时的内部状态。监控是指查看日志文件并分析性能指标的实践。两者结合能够帮助团队更快地发现和修复问题、调优性能,同时满足服务等级要求,确保应用达到承诺的可用性和响应速度。
云技术平台 云技术平台(例如 OCI)通常会提供运行云原生应用所需的一切支持,包括可托管 Docker 容器的服务器、安全的高速网络、预安装的 Kubernetes 引擎,以及支持可观测性和监控的各种工具。此外,云原生应用的可扩展性有助于提高效率,并降低云原生软件的运营成本。

云原生方法面临的挑战

云原生计算听起来可能很复杂。而事实也确实如此,尤其是对于那些刚刚接触云技术、且多年甚至数十年来一直构建传统单体软件环境的企业而言。以下是企业首次全面采用云原生计算时面临的一些挑战。

  • 复杂性、技能缺口和学习曲线。 一方面,云原生架构可能十分复杂,对于大型应用更是如此。另一方面,微服务引入了额外的抽象层,需要精心设计和管理。对此,请投入资源对员工进行培训和技能提升,以便他们能够高效运用这些技术。
  • 文化变革。 拥抱云原生通常需要进行文化变革。其中,DevOps 实践、跨职能协作以及向自动化和敏捷化转型至为重要。这可能需要改变长期存在的流程和组织结构,需要所有技术和业务相关方的认可与支持。
  • 安全性与合规性。 尽管云原生能够增强安全性,但也带来了新的考量。例如,企业必须保障微服务之间的通信安全,这就需要建立并执行安全管控措施,同时遵守相关合规法规。
  • 分布式系统管理。 云架构以及使用 Kubernetes 的相关要求,可能与工程团队的日常运维模式存在很大差异。
  • 成本管理。 如果管理不当,云原生的灵活性优势可能会导致成本激增。对此,企业可以实施监控策略,并利用云技术服务提供商工具进行成本优化。

云原生解决方案实施优秀实践

没有任何两家企业会采用完全相同的云原生转型路径。但您会发现,大多数企业都会遵循以下七项优秀实践。

  1. 采用微服务架构。 架构师将应用拆分为独立的微服务,每个微服务专注于特定的业务功能。随后,开发人员(理想情况下是 DevOps 团队)可以独立构建、测试、部署和缩放这些微服务,从而提升架构的敏捷性和弹性。
  2. 基于容器实现标准化。 使用容器(通常是 Docker)将微服务打包为易于部署、易于管理的单元,有助于保障从开发到生产环境的一致性和可靠性,尤其是在使用 CI/CD 管道时。
  3. 自动化部署和缩放。 DevOps 团队可通过 CI/CD 自动化构建、测试和部署软件,实现快速且可靠的软件交付。此外,借助 Kubernetes 这类平台,CI/CD 管道可支持自动缩放,降低人为出错的可能性。
  4. 使用基础设施即代码 (IaC) 和不可变基础设施。 前沿 IaC 和不可变基础设施工具链可与 Kubernetes 协同工作,自动化创建安全、高速的网络,并确保应用能够快速部署到所需环境。
  5. 优先保障可观测性和监控。 无法观测,就无法管理。因此要强调:微服务在设计时就应生成完善的日志,并支持主流的可观测性和监控标准。
  6. 在每一层都集成安全性。 将安全性融入应用设计和部署的每个阶段至关重要。对此,许多企业正选择采用零信任方法
  7. 优化成本和资源利用率。 云计算属于 OpEx(运营支出)类业务资源:使用越多,费用越高。因此,与数据中心内的传统应用不同,提升效率、合理调整资源规格以匹配工作负载能够立竿见影地带来回报。

利用云原生敏捷性加快应用开发速度

Oracle 提供构建和部署云原生应用所需的一切,包括工具、服务和自动化技术,使开发团队能够快速构建应用,同时减少运维工作负担。

Oracle 云原生服务运行于 Oracle Cloud Infrastructure (OCI) 之上,该平台基于标准构建,相比其他云技术服务提供商不仅性能更高,而且成本更低。通过采用基于开源和开放标准的服务,OCI 使开发人员无需重构即可在任意云技术平台或本地环境运行应用。这种灵活性让团队能够专注于构建和创新,例如借助强大的生成式 AI(乃至预构建的 AI/机器学习服务),为现有应用注入新功能和智能。

云原生应用开发所产出的应用,是否真的远优于传统开发的应用?是的,其优势显而易见:云原生应用具备可扩展性,因为其功能被拆分为微服务并可独立管理。此外,云原生应用支持高度分布式运行,不仅保持独立性,而且可以根据应用需求分配资源。

最后,云原生应用可以跨私有云、公有云和混合云环境提供一致的体验,有助于企业推进业务战略和创造更多价值。利用响应迅速、可靠且可扩展的云原生应用,企业可以充分发挥云计算的优势。

想要深入了解云原生架构?请下载我们的免费电子书,了解为何当下所有组织都可以采用云原生开发策略。

云原生常见问题解答

云原生架构与传统应用架构有何不同?

云原生架构将大型、复杂的业务应用拆分为多个微服务,每个微服务实现一项业务功能。这些微服务通过高速网络相互通信、协同完成任务,应用由此正常运行。每个微服务都独立定义、设计、开发、测试、部署、管理和升级,从而实现更快的部署和更高的可扩展性。例如,当某个微服务面临高负荷运行时,云原生应用可以自动在另一台服务器上创建该微服务的副本,并在两者之间分担工作负载。与之相对,传统应用架构采用单一软件代码库(即单体应用),它作为一个整体进行设计、开发、测试和部署。漏洞修复或升级都需要修改整个单体应用,之后必须重新部署。因此,软件发布通常速度缓慢,扩展性也面临挑战,往往需要重新架构(重写)软件,或安装在更快、更昂贵的服务器上。

企业应如何有效地将现有应用转型为云原生应用?

现有的单体应用可以通过重构改造为云原生应用。具体流程是:先识别出能够拆分为微服务的代码部分,通常从最容易分离或造成性能瓶颈的代码模块开始。通过一次只处理一个模块,单体应用就能逐步获得云原生方法带来的诸多优势。

什么是 CNCF?

CNCF 即云原生计算基金会 (Cloud Native Computing Foundation),是 Linux 基金会旗下的一个厂商中立的开源组织。CNCF 的目标是推广云原生技术,并为众多项目和行业标准提供关键支持,例如 Docker 容器格式以及 Kubernetes 容器自动化和编排平台。包括 Oracle 在内,很多云技术服务提供商均为 CNCF 的工作做出贡献,并采用其标准来提升云生态系统之间的互操作性。

云计算和云原生有什么区别?

云计算指由 Oracle 等商业服务提供商提供的托管计算服务,包括各类服务器、高速网络、存储系统、高级计算函数库(如 AI 和安全相关库),甚至业务应用。您通过网页浏览器访问的几乎所有网站或应用,其全部或部分都部署在云端;其余则运行在企业数据中心中。很多手机应用也依赖云计算来提供基本功能。

云原生则是一种构建业务应用的方法,它将应用拆分为数十甚至上百个微服务,每个微服务封装一项关键业务功能。这些微服务通过安全的高速网络相互协作,各自承担一部分工作负载,共同完成业务处理。云原生应用充分利用云技术服务提供商的资源,实现应用的可扩展性、高效性和弹性。

注:为免疑义,本网页所用以下术语专指以下含义:

  1. 除Oracle隐私政策外,本网站中提及的“Oracle”专指Oracle境外公司而非甲骨文中国。
  2. 相关Cloud或云术语均指代Oracle境外公司提供的云技术或其解决方案。