- containerd原理剖析与实战
- 赵吉壮 张明月编著
- 1690字
- 2024-12-31 21:30:42
1.1 云原生概述
随着Kubernetes和容器技术的崛起,云原生受到越来越多的关注。那么,到底什么是云原生?本节我们会一起了解云原生,以及云原生应用相比于传统应用所带来的价值。
1.1.1 云原生的定义
云原生可以被理解为一种方法论:云原生是充分利用云计算的优势,从而在云计算中构建、部署和管理现代应用程序的软件方法。
CloudNative = Cloud + Native。其中,Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初就考虑到云的环境,为云而生,生于云而长于云,充分利用和发挥云平台的弹性和分布式优势。
当然,随着时间的推移,云原生的定义其实也在一直变化着。
云原生的最初定义可以追溯到Pivotal公司(已于2019年被VMware公司收购,当前负责VMware Tanzu产品组合中的一部分)。2015年,刚推广云原生时,Pivotal公司的Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、抗脆弱性。
2017年,Matt Stine对云原生的定义做了一些修改,将云原生架构的特征归纳为模块化、可观察、可部署、可测试、可替换、可处理。
当前,Pivotal(VWmare Tanzu)已将上述几个特征更新为DevOps、持续交付、微服务、容器技术(1)。
DevOps:Devops是一个组合词,即Dev+Ops,表示开发和运维之间的协作。DevOps是一种敏捷思维,是一种沟通文化,也是一种组织形式,在这种文化和环境中,构建、测试和发布软件可以快速、频繁且更一致地进行,更好地交付高质量软件。
持续交付:持续交付是相比于传统瀑布式开发模型而言的,其特征是不停机更新,小步快跑,这要求开发版本和稳定版本并存,其实需要很多流程和工具支撑。持续交付使发布软件的行为变得乏味而可靠,因此组织可以更频繁地交付软件,风险更低,并可更快地获得反馈。
微服务:几乎每个云原生的定义都包含微服务,跟微服务相对的是单体应用。每个微服务都可以独立于同一应用程序中的其他服务进行部署、升级、扩展和重启。通过使服务高内聚、低耦合,使得变更更容易,可以在不影响客户的情况下进行频繁更新。
容器技术:与传统虚拟机相比,容器技术可以提供更快的启动速度和更高的效率。容器技术的低开销与单个机器上的高密度部署结合,为微服务化的实施保驾护航,使得容器技术成为部署微服务的理想工具。容器技术可以说是云原生的根基,没有容器技术就没有云原生。
对于云原生,除了Pivotal,还不得不提CNCF(Cloud Native Computing Foundation,云原生计算基金会)——一个为云原生的推广立下汗马功劳的基金会组织。
2015年,CNCF成立之初便对云原生的定义进行了阐述,起初的定义包含以下3个方面。
(1)应用容器化。
(2)面向微服务架构。
(3)应用支持容器的编排调度。
2018年,CNCF对云原生进行了重新定义,提供了云原生定义1.0版本(2)。
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。
云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统做出频繁和可预测的重大变更。
CNCF致力于培育和维护一个厂商中立的开源生态系统来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。
1.1.2 云原生应用的价值
云原生到底能为企业带来哪些价值呢?简单来讲,可以带来以下3个方面的价值。
1.提高效率
云原生开发带来了DevOps和持续交付等敏捷实践。开发人员使用自动化工具、云服务和现代设计文化来快速构建可扩展的应用程序。原本以月或以周为周期的开发周期缩短为以小时为周期,部分变更甚至缩短为分钟级。
2.降低成本
云原生能带来弹性伸缩能力,并通过削峰填谷、在离线混部等降低系统总体的资源消耗,使得公司不必投资于昂贵的物理基础设施的采购和维护,这样可以节省运营支出。
3.确保可用性
云原生技术使公司能够构建强弹性、高可用的应用程序。软件升级做到不停机更新,并且可以在流量较大时间段动态进行横向扩容,提高用户体验。
1.1.3 云原生应用与传统应用对比
由上面的介绍可以得知,传统应用即使上了云也不是云原生应用,只有为了更好地利用云原生平台优势的改造或者完全按云原生理念构建的应用才是云原生应用。云原生应用和传统应用的对比如表1.1所示。
表1.1 云原生应用和传统应用的对比