1.1.1 什么是云原生
专门为云设计的应用程序到底意味着什么呢?云原生计算基金会(CNCF)在其云原生定义中回答了这个问题。
云原生技术使组织可以构建和运行可扩展的应用程序,这些应用运行在现代的、动态的环境中,如公有云、私有云和混合云。容器、服务网格、微服务、不变的基础设施和声明式 API 就是典型的示例。
这些技术使松散耦合的系统具有弹性、可管理性和可观测性。与强大的自动化相结合,它们允许工程师用最少的劳动,进行频繁的和可预测的重大功能更新。
根据这个定义,我确定了三组信息,我称之为云原生的 3 个 P:
- 位置(Place)。云原生应用程序的运行环境是现代的、动态的环境:云(公共云、私有云或混合云)。
- 特性(Properties)。云原生应用程序是可伸缩的、松耦合、有弹性、可管理、可观测的。
- 实施(Practices)。围绕云原生应用程序的实践包括健壮的自动化、结合频繁且可预测的更改:自动化、持续交付和 DevOPs。
什么是云原生计算基金会?
云原生计算基金会(CNCF),是 Linux 基金会的一部分。致力于构建可持续的生态系统,促进社区支持云原生开源软件的增长和健康。CNCF 主办了许多云原生技术和项目,以支持云的可移植性,但并没有固定供应商。如果您想寻找云原生方面的项目,我建议查看 CNCF 云原生互动全景。
在以下部分中,我们将进一步研究这些概念。不过,首先,我希望您注意,云原生的定义是与任何特定的实现或细节无关的。CNCF 在定义中提到的这些,比如容器和微服务,都只是例子。最常见的误解是,在开始迁移到云时您必须采用微服务架构并构建容器。然而事实并非如此。Fremantle 在 2010 年的文章就是证明。他没有提到这些,因为当时这些技术都不存在。然而,他所描述的应用程序不仅仍然被认为是云原生的,而且还被认为是符合 CNCF 八年后给出的定义的。