云原生(Cloud Native)的概念,由来自Pivotal的MattStine于2013年首次提出,被一直延续使用至今。这个概念是Matt Stine根据其多年的架构和咨询经验总结出来的一个思想集合,并得到了社区的不断完善,内容非常多,包括DevOps、持续交付(Continuous Delivery)、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)和12要素(The Twelve-Factor App)等几大主题。云原生是面向“云”而设计的应用,因此技术部分依赖于传统云计算的3层概念,基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。云原生的定义一直在变,同一组织在不同时期有不同的定义,不同组织在同一时期也有不同定义。
云原生从字面意思上来看可以分成云和原生两个部分。云是和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端。原生就是土生土长的意思,我们在开始设计应用的时候就考虑到应用将来是运行云环境里面的,要充分利用云资源的优点,比如️云服务的弹性和分布式优势。原生成长,在云环境下生存。
云原生要具备云的天然基因,天生就是云的一部分。云原生不是为云而生,而是天生就是云,生而是云,所以它具有云的特性:通过网络访问、远端部署执行、可扩展弹性伸缩、共享、按需使用自助服务、高可用、可远程监控计费审计、标准化交付与位置无关等。
目前CNCF给出了云原生应用的三大特征:
容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。
动态管理:通过集中式的编排调度系统来动态的管理和调度。
面向微服务:明确服务间的依赖,互相解耦。
云原生的四大核心要素便是微服务技术、DevOps、持续交付、容器化。
云原生的DevOps、容器化平台、持续交付、微服务都是云原生不可缺少的一部分,而云原生也必然是云计算发展的必定趋势,我们需要以全局地眼光看待问题,对四个核心元素加以整合后才能见到云原生的全局风貌。
简单地把云原生理解为:云原生 = 微服务 + DevOps + 持续交付 + 容器化