云原生是一种现代化的软件开发和部署方法,旨在充分利用云计算的优势,提高应用程序的可伸缩性、弹性和可靠性。
云原生的详细定义包括云原生计算基金会(Cloud Native Computing Foundation,CNCF)的官方定义和延伸含义。
-
官方定义: 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统做出频繁和可预测的重大变更。
-
延伸定义: 云原生包括云原生产品、云原生技术、云原生架构,以及构建现代化应用的开发理念,如 DevOps。
具体说明如下:
-
“云原生产品”和“云原生技术”需要基于云基础设施(IaaS)。云原生产品是指运行在云计算环境中的应用程序和服务,它们通常采用容器化技术,微服务架构和持续交付流程来构建和部署。而云原生技术则是指用于创建和维护这些云原生产品的工具和技术,包括容器编排工具(如Kubernetes),持续集成/持续部署(CI/CD)工具,服务网格等。
-
“云原生架构”和“云原生开发理念”是基于云原生技术和产品构建或实现的。注意,对于不是基于云原生技术或者产品的架构和理念,如基于传统物理服务器发布构建的 DevOps,是不会被划分到云原生范畴的。
-
“云原生应用”是基于云原生的架构和开发理念构建或实现的。只有结合云原生技术所提供的云服务,改造应用的架构,才能够更好地使用云原生技术,以及更好地构建弹性、稳定、松耦合的分布式应用,解决分布式复杂性问题。此外,对架构的改造还意味着相关的开发模式、交付方式、运维方式等都要随之改变,比如,采用微服务架构重写应用、用声明式 API和自动化工具升级运维方式等。简单来说,云原生使得整个软件的生产流水线都发生了巨大的变化,而具体的变化程度又取决于企业对云原生的使用程度。