云原生不是一个产品,而是一套技术体系和一套方法论,技术的变革,一定是思想先行,从内到外的整体变革。更确切地说,它是一种文化,更是一种潮流,是云计算的一个必然导向。
云原生(Cloud Native)这个组合词包括了“云”和“原生”,云是和本地相对的,云表示应用跑在云上;原生就是土生土长,从应用设计之初就为在云环境下运行做准备,要充分利用云资源的优点,比如️云服务的弹性和分布式优势。
云原生的概念众说纷纭,更多人相信这个概念由Pivotal的Matt Stine于2013年首次提出,而后多次迭代,Pivotal官网将云原生概括为4个要点:DevOps+持续交付+微服务+容器,是相对易懂的说法。
在阿里云研究中心发布的白皮书《企业全面上云成功路径与实践》中,阐述了云原生的架构和价值、云原生理念和技术、基础设施云原生化建设瓶颈分析、敏捷基础设施的构建与风险防控、阿里巴巴云原生架构设计,以及各个行业面临的挑战及解决方案。将帮助上云负责人继续企业全面上云的旅程,拥抱云原生架构,用技术加速创新,进一步发挥企业上云的价值。
1.云原生概述
01
全面上云对企业IT提出新要求
历经多年发展,我国云计算产业保持着较高增长率,产业规模已突破千亿,产业链条趋于完善。随着我国在“新基建”领域布局加速,云计算迎来全新的发展机遇。
如前所述,企业上云经历了基础IT要素上云、业务系统上云、企业云端互联、企业全面上云四个阶段。全面上云对企业IT,特别是IT基础设施,提出了全新要求:
[ 1 ] 持续交付能力
快速响应市场需求已经成为企业竞争的决胜因素,持续交付使开发人员可以在短时间存在的特性分支上工作,同时始终让主干保持可发布状态,能做到在正常工作时段里按需进行一键式发布,提升开发的效率。但复杂传统应用的单体架构模式在代码维护与集成编译方面困难重重,难以做到持续交付;
[ 2 ] 极致弹性能力
在部署业务应用时,虚拟机分钟级的弹性不再满足快速扩缩容的需求。更加轻量级的容器技术成为微服务部署的最佳载体,容器技术很好的解决了应用移植过程的环境一致性问题,使微服务实现快速弹性的部署;
[ 3 ] 开发运维一体化能力
敏捷开发带来应用的快速迭代,同时也增加了版本发布的风险与业务运维的复杂度。开发、测试、运维高度协同的一体化理念被提出,需要在完成高频率部署的同时,提高生产环境的可靠性、稳定性、弹性以及安全性,消除频繁发布的风险。
02
云原生加速企业IT架构敏捷化
[ 1 ] 云原生架构定义及设计原则
云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。
云原生架构设计遵循以下几个重要原则:
服务化原则
服务化可将业务模块间的关系高度抽象化、标准化,从而将不同生命周期的模块解耦分离,并行业务迭代加速整体的开发进度和稳定性;
弹性原则
即系统的部署规模可以随着业务量的变化自动伸缩,降低余量规划带来的资源浪费;
可观测原则
充分考虑分布式云计算的环境,引入日志分析、链路跟踪和度量等手段,将跨主机、全链路的服务调用情况进行记录、分析和下钻,极大程度上维持业务健康;
韧性原则
业务所依赖的软硬件组合出现异常时,架构能够进行较大程度的抵抗与自愈,保障业务能够持续提供服务不中断;
过程自动化原则
在软件交付标准化的基础上进行自动化,通过配置数据自描述和面向终态的交付过程,让自动化工具调谐交付目标与环境差异,实现软件交付和运维的自动化;
零信任原则
云原生架构打破传统边界安全思想,聚焦以身份为中心的访问控制,任何内外部的人、设备和系统都需要基于认证和授权重构访问信任。
[ 2 ] 云原生架构与传统架构的差异
新的计算架构正在改变企业搭建和使用计算资源的方式,从物理机到虚拟机,提高了硬件的利用率并使资源的使用和变更变得更加灵活。云原生技术进一步降低了应用对运行操作环境的依赖,提高了应用的可移植性和交付效率。根据Gartner的报告预测,到2021年全球70%的企业实现应用的云原生化部署,传统IT架构向云原生转型是大势所趋。
传统架构是稳态业务部署的重要选择,在过去的十年中,云主机的性能已经发生了重大转变,低延迟、可预测的高性能以及更好的隔离环境,使它成为静态单体架构应用程序和性能敏感的工作负载(如高性能计算应用、视频编码、机器学习等)的部署首选。云主机提供的强大安全性和隔离功能使其成为IT运营、风险管理和开发人员可以达成一致的默认计算载体。
云原生架构是敏态业务部署的最优选择,云原生架构由于其面向应用的扩展方式以及超强的可移植性以及轻量级优势,逐渐成为应用部署的重要组成部分。
应用微服务化加速大型应用的并行迭代效率,基于云原生架构的应用具备微服务化特性,即以功能域或逻辑关联将单体应用拆分为松耦合的多个子应用,这些相对独立的微服务研发、测试和部署流程可并行执行,极大的提升了整体迭代效率;
负载容器化保障了应用在异构环境中弹性部署,容器作为标准化的软件单元,将应用及其所有的依赖项打包,使应用不再受环境限制,在不同计算环境间快速、可靠的运行。同时容器共享内核的技术特点使载体更加轻量,相较于虚拟机分钟级的弹性伸缩能力,秒级的资源弹性伸缩能力能够更加快速灵活的响应不同场景的需求。
03
云原生架构对企业的价值
企业上云不应仅仅是简单粗暴的搬迁上云,应用也需要优化传统的设计方法,从架构设计、开发方式到部署、维护整个软件生命周期都基于云的特点设计,从而构建原生为云而设计的应用,这样才能充分利用和发挥云平台的弹性以及分布式优势。
[ 1 ] 从IT架构角度看云原生价值
云原生架构最大程度上继承了云的强大功能。基于云原生架构在云环境的应用开发能够在资源编排机制、分布式部署、高可用架构等方面得到较好的基础支撑,通过新的架构、技术保障应用系统变得更加健壮,云原生最大程度发挥了云的优势。
云原生架构具备更加极致的弹性能力
云原生有效解决了异构环境的部署一致性问题,促进了资源的标准化,为服务化、自动化提供了基础。云原生技术体系以容器为基本的调度单元,相比虚拟机资源的切分粒度细化至进程级,共享内核的轻量化设计进一步提升了资源的弹性效率。
云原生架构能够兼容应用开发多元的技术栈
与传统架构下的单体应用强行绑定语言和技术栈相比,云原生架构下的应用在业务域划分上应是相互独立的,这使得不同业务域有不同的技术选择权,比如推荐系统采用Python实现效率可能比Java要高效得多。云原生架构实现了使用多元技术栈做应用开发的兼容统一,使得每个业务团队能够根据实际需求灵活的选择最佳技术路线。
云原生架构能够更好的提升业务稳定性
自动化程度高,自愈性高,云原生使得应用本身具有“韧性”,即面对强大压力的缓解能力以及压力过后的恢复能力。通过服务状态、系统健康度、接口调用情况、异常的实时告警等实现可视化及预警化,自动化的量化和监控功能,结合业务健康检测启用容器级别的异常自动恢复,及时规避业务风险。
[ 2 ] 从企业运营角度看云原生价值
云原生架构大幅减少企业IT成本
云原生极致的弹性免除了企业侧因应对峰值业务所带来的预留资源的浪费,提高资源的复合利用率,降低了资源成本。
传统IT架构下的应用中捆绑嵌入了大量的非业务功能,重复造轮子现象严重,研发成本居高不下。云原生技术标准化的交互方式,应用与应用基础设施(编程框架、中间件等)逐步分离,应用基础设施从专用转为通用,从中心化转为松耦合模块化。应用基础设施下沉与云平台充分融合,将云能力与应用基础设施能力进行整合封装构筑统一的技术中台,向业务应用提供简单、一致、易于使用的应用基础设施能力接口,实现技术中台化,缩减重复开发的人力与资源成本。
云原生架构带来更快速的业务交付速度
数字化转型的紧迫需求下使得企业中越来越多的业务衍变成数字化业务,直面用户需求更加快速的响应成为企业的核心竞争优势。应用微服务化开发,服务之间使用标准的API接口进行通信。松耦合架构会减轻因需求变更导致的系统迭代成本,为多团队并行开发提供基础,并加快交付速度。云原生技术实现了应用的敏捷开发,大幅提升交付速度,降低业务试错成本,快速响应用户需求,增强用户体验,加速业务创新。
云原生架构带给企业更低心智负担的使用体验
传统架构下的中间件通常与业务捆绑,不能实现通用中间件的有效复用,在应用部署过程中需要投入大量的精力重复构建且极易出错,用户使用体验较差。基于公共云搭建的云原生架构,基础设施层繁琐的运维工作大部分由云服务商承担,企业用户可一键部署启动云原生集群,搭配平台提供的各种标准化中间件服务,实现应用的快速上线部署,降低了用户使用的心智负担,使用户能够聚焦价值更高业务逻辑,提升研发整体效能。
云原生架构更大程度的降低了内部协同的折耗
通过引入DevOps理念优化软件研发运营全周期的管理,从软件需求到生产运维的全流程改进和优化,结合统一工具链,实现文化、流程、工具的一致性,降低组织内部的沟通与管理障碍,加速业务的流程化、自动化。云原生架构变革了研发运营的生产方式,打破组织壁垒,实现研发与运维的跨域协同,进一步解放生产力。
2.云原生理念、技术
01
云原生理念
云原生是一系列云计算技术体系和企业管理方法的集合,既包含了实现应用云原生化的方法论,也包含了落地实践的关键技术。云原生应用利用容器、服务网格、微服务、不可变基础设施和声明式API等代表性技术,来构建容错性好、易于管理和便于观察的松耦合系统,结合可靠的自动化手段可对系统做出频繁、可预测的重大变更,让应用随时处于待发布状态,云原生技术有利于各组织在公共云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用,借助平台的全面自动化能力,跨多云构建微服务,持续交付部署业务生产系统。
02
云原生技术
容器技术:一种轻量级的虚拟化技术,能够在单一主机上提供多个隔离的操作系统环境;
微服务:微服务是指将大型复杂软件应用拆分成多个简单应用,每个简单应用描述着一个小业务,系统中的各个简单应用可被独立部署。各个微服务之间是松耦合的,可以独立地对每个服务进行升级、部署、扩展和重新启动等流程,从而实现频繁更新而不会对最终用户产生任何影响。
Devops:DevOps是一组过程、方法与系统的统称,提倡打破开发、测试和运维之间的壁垒,利用技术手段实现各个软件开发环节的自动化甚至智能化,提高软件研发效率。
以上仅做简介,云原生技术还包括Serverless、开放应用模型(OAM)、Service Mesh 技术等等。
随着云计算的普及与云原生的广泛应用,越来越多的从业者、决策者清晰地认识到“云原生化将成为企业技术创新的关键要素,也是完成企业数字化转型的最短路径”。因此,具有前瞻思维的互联网企业从应用诞生之初就扎根于云端,谨慎稳重的新零售、政府、金融、医疗等领域的企业与机构也逐渐将业务应用迁移上云,深度使用云原生技术与云原生架构,解决交付周期长、资源利用率低等实际业务问题。