云原生究竟是什么
云原生是一个组合词,即 Cloud Native 。
Pivotal (已被 VMware 收购)官网的 What is cloud native?[1] 一文中提到云原生是一种构建和运行应用程序的方法,云原生开发融合了 DevOps、持续交付、微服务和容器的概念在里面。
CNCF (云原生计算基金会)在 cncf/toc[2] 给出了云原生 V1.0 的定义:
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。
这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。
结合官方的定义,我个人对云原生简洁的理解就是:云原生并不是某种具体技术,而是一类思想的集合,用来帮助快速构建和运行应用程序,其中既涵盖着一整套技术体系(容器、服务网格、微服务、不可变基础设施和声明式 API),也包含着应用开发的管理要点(DevOps、持续交付、康威定律[3])。只要符合这类思想的应用就可以称为云原生应用。
云原生技术体系
云原生的一整套技术体系其实是紧密联系的,这得从软件架构的逐步演进说起。
即 单体 -> 微服务 ->