基于云原生的架构体系

云原生,不同的组织有不同的定义,但综合起来大致意思是:使用开源技术栈开发微服务架构的应用,并容器化部署在动态变化的云环境中,以充分利用云环境提供的一系列优势。所以,云原生架构指的是一个架构体系,而不只是某种单一的应用架构,而云原生应用呢,是指充分利用云环境所提供优势的应用,这些应用从一开始的设计就要考虑到云环境的特点,生在云上,长在云上,是云计算环境的原住民。

云原生是云计算发展到一定阶段才提出的概念,和云计算服务推出的时间相比,大概后推了十年。这是可以理解的,因为在云计算发展的初期,云计算的各种功能都不是很成熟,大家都是摸索着前进。而当云计算趋于成熟的时候,越来越多的应用上云、云化,这时候就需要考虑怎样的使用方式才能最大发挥出云计算的价值,云原生的概念也就应运而生了。

说到云原生,首先绕不开的是Kubernetes项目,它是云原生计算基金会(CNCF)孵化后最先毕业的项目,是容器编排领域事实上的标准,所有的其它云原生项目,几乎都是围绕它而发展。Kubernetes不仅仅编排和调度容器,而且抽象出了部署系统里面需要涉及的各种资源对象,上层只需要操作这些资源对象来完成部署,从而达到将底层异构的硬件基础设施标准化的目的。不同的基础设施标准化后,各个厂商可以基于此构建自己的PaaS平台,这样也能提高应用在不同PaaS平台中的移植性。从某种程度上来说,你可以认为Kubernetes是一个分布式操作系统或者是一个云操作系统的内核,各家云厂商都基于同样的操作系统内核去进行扩展、定制,从而为用户提供具有差异化的操作系统界面。

那么我们所说的云原生架构,就包括了这个分布式操作系统本身的架构,以及基于此操作系统进行的其它各种应用、内核扩展组件的架构。这里的内核组件,并不是真正的Linux或Windows的系统内核,只是一种类比。因为我们说Kubernetes是操作系统内核,那么围绕它提供服务的存储、网络组件,就可以看成是对这个内核的扩展组件。我们基于这个操作系统开发的微服务应用,使用了底层存储、网络组件提供的服务,充分利用了云计算环境提供的优势,那么这种微服务应用架构也就符合了云原生架构所倡导的理念。

对于要学习和了解云原生的技术同仁来说,首先要了解云计算的基本概念和技术,然后根据实际需要,适当学习Kubernetes,以及围绕着Kubernetes而发展的其它一些项目,这样才会有一个全局的视角。对于一个架构师或一个企业的技术领导者来说,需要思考怎样构建企业的基础架构和应用架构,那么全局的视角是非常重要的,所谓不谋全局者不足以谋一域,说的就是这个意思,还没体会到的朋友,随着你逐渐地成长,慢慢就体会到了。

可能有人就质疑了,云原生架构,真的有那么神吗,真的值得去关注吗?我一向喜欢化繁为简,所以这么说吧,云原生架构体系,应该是未来5年到10年的架构方向,而在这期间,Kubernetes会逐渐成为云操作系统,当90%的人都采用这种新的操作系统来跑应用的时候,对于那10%的人来说,就好比如90%的同行都在使用Win7或Win10系统了,而你还在坚持使用XP甚至Dos系统!从这个角度来看,你是不是似乎明白了点什么。

欢迎微信扫码关注【技术人成长】视频号,与你分享更多技术人成长的心法,我们视频上见!