技术架构的演变非常快,各种新的名词也是层出不穷。
云原生人云亦云,那到底什么才是云原生呢?云原生又能带来什么好处呢?
对于大部分人来说,大火的云原生还只是一个相对模糊和笼统的技术用语,大家都只是道听途说。
其实任何一个IT新理念都是源于业务驱动,对云原生来说也是如此。
1、云原生的概念
云原生(Cloud Native)是一个组合词,“云”表示应用程序运行于分布式云环境中,“原生”表示应用程序在设计之初就充分考虑到了云平台的弹性和分布式特性,就是为云设计的。
可见云原生并不是简单使用云平台运行现有的应用程序,这是一种能够充分利用云计算优势对应用程序进行设计、实现、部署、交付、操作的应用架构方法。
云原生的核心就是通过优化应用的架构设计、开发流程和部署、运维方式,让云计算的弹性、灵活、自动化优势得到充分发挥,使得工程管理和基础设施管理变得更加高效和自治,从而帮助管理者将精力集中到业务创新之中。
云原生最早提出者Pivotal公司(2013年)最新定义云原生为4个要点:DevOps、持续交付、微服务、容器。
2、云原生的关键技术
(1)容器
容器技术是一种相对于虚拟机来说更加轻量的虚拟化技术,能为我们提供一种可移植、可重用的方式来打包、分发和运行应用程序。
容器提供的方式是标准化的,可以将不同应用程序的不同组件组装在一起,又可以将它们彼此隔离。
容器的基本思想就是将需要执行的所有软件打包到一个可执行程序包中,比如将一个Java虚拟机、Tomcat服务器、应用程序本身打包进一个容器镜像。
容器具有高度的可移植性,用户可以轻松在开发测试、预发布或生产环境中运行相同的容器。
容器技术大大简化了云原生应用程序的分发和部署,可以说容器技术是云原生应用发展的基石。
(2)微服务
微服务是一种软件架构方式,我们使用微服务架构可以将一个大型应用程序按照功能模块拆分成多个独立自治的微服务,每个微服务仅实现一种功能,具有明确的边界。
为了让应用程序的各个微服务之间协同工作,通常需要互相调用REST等形式的标准接口进行通信和数据交换,这是一种松耦合的交互形式。
微服务基于分布式计算架构,具备灵活部署、可扩展、技术异构等优点,但需要一定的技术成本,而且数量众多的微服务也增加了运维的复杂度。
(3)服务网格
随着微服务逐渐增多,应用程序最终可能会变为成百上千个互相调用的服务组成的大型应用程序,服务与服务之间通过内部或外部网络进行通信。
如何管理这些服务的连接关系并保持通信通道无故障、安全、高可用、健壮,就成了一个非常大的挑战。服务网格(Service Mesh)可以作为服务间通信的基础设施层,解决上述问题。
服务网格是轻量级的网络代理,能解耦应用程序的重试 / 超时、监控、追踪、服务发现,并且能做到应用程序无感知。
服务网格可以使服务与服务之间的通信更加流畅、可靠、安全,它的实现通常是提供一个代理实例,和对应服务一起部署在环境中。
(4)DevOps
DevOps是软件开发人员和IT人员之间的合作过程,是一种工作环境、文化、实践的集合,目标是高效自动执行软件交付和基础架构更改流程。
开发和运维人员通过持续不断的沟通和协作,可以以一种标准化和自动化的方式快速、频繁、可靠交付应用。
开发人员通常以持续集成和持续交付(CI / CD)的方式,快速交付高质量的应用程序。持续集成的本质是确保开发人员新增的代码与主干分支正确集成。
云原生应用通常包含多个子功能组件,DevOps可以大大简化云原生应用从开发到交付的过程,实现真正的价值交付。
(5)不可变基础设施
在应用开发测试到上线的过程中,应用通常需要被频繁部署到开发、测试、生产环境中。
在传统的可变架构时代,通常需要系统管理员保证所有环境的一致性,而随着时间的推移,这种靠人工维护的环境一致性很难维持,环境的不一致又会导致应用越来越容易出错。
这种由人工维护、经常被更改的环境就是我们常说的“可变基础设施”。
相对应的不可变基础设施,是指一个基础设施环境被创建以后不接受任何方式的更新和修改,这个基础设施也可以作为模板来扩展更多的基础设施。
简而言之,不可变基础设施架构是通过整体替换而不是部分修改来创建和变更的。
不可变基础设施的优势在于能保持多套基础设施的一致性和可靠性,而且基础设施的创建和部署过程也是可预测的。
(6)声明式API
声明式设计是一种软件设计理念:我们负责描述一个事物想要达到的目标状态并将其提交给工具,由工具内部去处理如何实现目标状态。
在声明式API中,我们需要向系统声明我们期望的状态,系统会不断向该状态驱动。
声明式API能让系统更加健壮,当系统中的组件出现故障时,组件只需要查看API服务器中存储的声明状态,就可以确定接下来需要执行的操作,也能减少开发和运维人员的工作量,极大提升工作效率。
3、云原生的好处
基于云原生技术带给企业的应用开发的技术价值,直接来说就是:降本增效——大幅降低企业IT开发和运维的成本,提升企业业务的创新效率和产业价值。
对于企业而言,选择云原生技术,不仅仅是出于降本增效的考虑。
作为全新的生产力工具,云原生而且还能为企业创造过去难以想象的业务承载量。
企业正在通过云原生构建一个完整的数字孪生的新体系,这便是云原生的真正价值所在。
对于整个云计算产业的发展本身来说,云原生从云技术的应用特性和交付架构上进行了创新性的组合,能极大释放云计算的生产能力。
此外云原生的变革从一开始就自然而然与开源生态走在了一起,也意味着云原生技术从一开始就选择了一条“飞轮进化”式的道路。
通过技术的易用性和开放性实现快速增长的正向循环,又通过不断壮大的应用实例来不断完善企业业务全面上云和自身技术版图。
当然企业业务的全面云原生化并非一蹴而就的,企业业务的技术架构变革仍然要迎接很多的挑战,比如传统虚拟机模式的运维习惯、原有IT资产切换、人员的思维、管理方式变革等。
不过云原生所带来的种种好处,对于企业的未来业务发展的优势,已经成为众多企业的新共识。
可以预见,更多企业在经历了这一轮云原生的变革之痛后,能穿越企业的原有成长周期,跨越到数字经济的新赛道,更好活在即将到来的全面云化的数字时代。
在多云时代,企业的数据和应用不仅分布在企业私有云和公有云上,也分布在远程办公室或分公司乃至边缘计算的环境中。
如今的企业希望实现不同云之间的应用移动性,同时保持对硬件、管理程序或云的开放性。
因此建立一个以业务为中心的运作方式,构建云原生的应用程序和基础设施是一个必然的趋势。
实现对业务的快速部署、弹性动态调整,而且整个架构是以非常简单的方式来打造的,而这就是以应用驱动的企业云原生,隐隐却又注定带动一股潮流,改变企业云的未来。
云原生是当下很火的讨论话题,是多种思想的集合,集目前各种热门技术之大成。相信云原生不仅仅是一种构建和运行应用程序的新方法,而是一种更有生命力的文化。