在技术领域,如果说哪个概念最火,毫无疑问就是云原生,然而每个人对于云原生的定义又有各自不同的看法,它跟云计算是什么关系,今天我们就来澄清两者的关系,帮助大家更好的理解云原生的概念。
首先,我们来说说云计算,云计算的划分可以分为3层,即基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS),看下图,其实我们大概就能明白IaaS、PaaS、SaaS解决的问题。
那我们再来看看云原生(Cloud Native)这个概念,是由Pivotal的Matt Stine于2013年首次提出,他还在2015年出版了《Migrating to Cloud-Native Application Architectures(迁移到云原生架构)》一书。
这里我先抛出一个概念:云原生的定义尚不明确,但含义丰富。不同的人和组织有着不同的理解。
众多顶级技术的铸造者、Matt Stine的东家Pivotal这样定义云原生:
“Cloud native is an approach to building and running applications that fully exploit the advantages of the cloud computing model.”--云原生是一种构建和运行充分利用云计算模型优势的应用程序的方法。
CNCF云原生计算基金会如此定义云原生:“云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。
云原生的代表技术包括容器、服务网格(Service Mesh)、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
所以,业界有一种说法,云原生=微服务+DevOps+持续交付+容器化。
总结一下云原生的特点:
• 模块化:抽象独立的服务包(如容器化或无服务器架构);
• 可编程性:通过声明API和策略来实现资源调配和管理;
• 伸缩性:协调器通过自动化和策略驱动的方式纵向动态扩展资源;
• 弹性:服务就是松散耦合的单元,相互独立且兼具容错能力。
总结,云原生属于技术架构理念,而云计算提供应用所需的基础资源。云计算的发展推动了云原生架构的诞生,只有结合云计算提供的云服务,改造应用架构,才能更好的构建弹性、稳定、松耦合的分布式应用,并解决复杂性问题。同时云原生技术的发展反向促进云服务的升级和改进,总之,两者是相辅相成。