当我们讨论云原生时, 我们在谈论什么?

“数字原生的巨浪正不断拍向人类文明的海岸线,它隆隆的轰鸣声低沉而经久不息。”—Noer

数字化重生时代永远不缺少新概念。

从虚拟化,云计算,公有云,私有云和混合云,从SAAS,IAAS, CAAS,PAAS,FAAS, DAAS 到Serverless各种眼花缭乱的技术导入,而纳斯达克上定位于云原生数据仓库的SnowFlake公司上市,更因为云原生和巴菲特概念的加持,让一个营业额仅为2.65亿美元的技术公司市值却一夜暴增到千亿美元的神话。“云原生”在2020年犹如一道耀眼的光,划过整个行业的天空,一时惊艳天下。但即使在很多业内人士面前,云原生却依然很是神秘而无感,或者迷茫而一脸懵逼。

云原生到底什么鬼?

按百度百科的词条定义如下:云原生是Cloud Native的中译,包括开发运维一体化DevOps、持续交付(Continuous delivery )、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)、康威定律(Conways Law)等,以及根据商业能力对公司进行组织和业务重组。Cloud Native既包含技术(微服务,敏捷基础设施),也包含管理(DevOps,持续交付,康威定律,组织和业务重组等),也可以说是一系列技术、企业管理方法的集合。

究其出处,“云原生”这个词实际上自于2015 年Matt Stine所著的《Migrating to Cloud Native Application Architectures》一书中提出的Cloud Native。

关于云原生的核心价值,实际上存在于以下四个方面:

1. 开源的软件栈实现了基于任意公有云私有云或混合云的部署,从而避免了单一供应商依赖;因为云原生使得原来封闭的单一提供商变成了由众多服务提供商合作来提供云上开源服务

2.从原来电脑上的几个用户节点,可扩展到数以万计的自愈式(自诊断,自恢复)多租户节点它的核心基石经历了:服务器,虚拟机,构建包,容器,集群化容器等阶段,从而实现无限扩展性

3. 通过将应用分解为已明确说明依赖性的一系列微服务来提升灵活性,可维护性,增强灵活性与可维护性

4. 通过一个集中编排的动态管理/治理微服务的过程,来高效率与资源优化

而云原生并不是一个一夜之间从地底下冒出来的新概念,在各种纷繁复杂,有时令人无所适从的各类技术名词里,如此耀眼的云原生,到底处在怎样的位置,它又经历过怎样的历史演变历程呢?让我们且来看一下它的前世今生和未来。它经历了从物理机,虚拟机,IT基础设施虚拟化服务(IAAS)到PAAS(平台即服务)后又经容器最后再到云原生,无论是技术还是理念都经历了一个漫长的演变和迭代过程,主要历程如下:

公元2000年以前

物理机即非虚拟化服务器(Non-Virtualized Servers)时代 在公元2000年时,当你需要启动一个新应用系统时,就需要去购买一批物理器,你的应用的基石是物理机服务器;

公元2001年 

VMware在2001年服务器市场发布Popularizes virtual machines (VMs)使虚拟机应用普及化 在一台物理机上可以运行多个虚拟机,意味着我们可以减少物理服务器购买数量。基于虚拟机构建我们的应用系统,架构的基石变为虚拟机;

公元2006年

亚马逊公司旗下云计算服务平台AWS首创了the Infrastructure-as-a-Service (IAAS)概念, IT基础设施即服务的概念.AWS通过在2006年启动Elastic Compute Cloud(弹性计算云EC2)来建立Iaas市场, 贝佐斯领导的亚马逊提出了一个大胆的商业设想即将企业用于IT基础建设的资本性t 支出转化为日常运营性支出,当企业有需求时,可以在1小时内就可以租到企业所需要的服务器,架构的基石也是虚拟机(应用系统同样基于虚拟机),称为Amazon Machine Image (亚马逊机器镜像AMI)

公元2009年

Heroku 提出Platform-as-a-Service(PaaS)概念, 平台即服务  Heroku在2009年开始普及推广平台即服务(Paas,架构的基石是Buildpack,启用容器化的12要素应用程序,构建容器的过程是非透明yy的,但是,部署一个新版本应用只需要使用GIT命令: git push heroku(即把代码Push到heroku上去)。

公元2010年 

OpenStack开源Iaas。OpenStack整合了一批非常杰出,多样化的供应商来构建开源的基础设施即服务(Iaas)它开始与AWS,VMWare进行竞争。基于虚拟机来构建应用系统,基石仍然是虚拟机。

公元2011年

Cloud Foundry开源PAAS,Pivotal 创建了开源 PaaS 来替代Heroku’s PaaS,并且在2014年底启动了 Cloud Foundry 开源基金会。它基于Garden容器技术(它可以承载Heroku buildpacks,Docker,甚至非Linux的操作系统),来构建应用系统。

公元2013年

Docker推出了容器技术。 Docker 结合了 LXC(一种Linux内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源),Union File System (Docker联合文件系统), cgroups(Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制)来创建了一个被全球开发人员所接受的容器标准。它拥有有史以来最快的技术开发速度;它实现了隔离性,复用性,与不可变性.

公元2015年

CNCF云原生。云原生计算通过开源软件统筹来实现:将应用分解为微服务,将应用每一部分装入属于其自己的容器。同时动态编排这些容器让让资源使用达到优化。Cloud Native 一词正式在Pivotal 公司的Matt Stine所著的《Migrating to Cloud NativeApplication Architectures》一书中提出。

公元2020年 云原生浪潮兴起。

而究其本质,云原生与其说是一种技术,不如说是一个技术理念。首先这是一种理念和价值观的体现。简而言之,我们身处什么样的环境,就应该采用和那个环境所相适应的方法来存在。从IT的角度来讲,在云计算成为这个时代的普遍选择之后,我们的就该采用和云时代相一致的技术架构,IT治理及和云相匹配的开发方法。它是云时代的一个必然选择,即让一切IT治理和IT应用生而为云。

云原生,其次是一个组织变革,即云原生要成为一种技术实现,要有和其匹配的组织结构来对应,对此,早在半个世纪前,有个工程师叫 Melvin Conway ,提出了一个论断“Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.”中文意思就是:设计系统的组织,其产生的设计等同于组织之内、组织之间的沟通结构。后来在每个程序员都应该去拜读的Brooks Law《人月神话》(1975年)总结成的“康威定律”

后才是适应云原生的一套技术路线和技术框架,以及在此技术路线下展开的一系列去适应云时代的技术方法。在这样的技术理念下形成五个云原生的特点:

1.云原生的十二要素特征

2.开发运维一体化(Devops)

3.微服务(Microservice)

4.持续交付(Continuous Delivery)

5.敏捷基础设施(Agile Infrastructure)

笔者在多年的软件开发部署经验中,深刻的认知到 ,随着传统企业云化这个大势所趋的背景下,企业为实现数字化转型, IT要更好适应线上线下业务,无论硬件、软件、还是基础架构都在朝着敏捷和弹性的方向发展。 所以基于云原生的软件应用的一个必然方向,通过IT技术设施的云化弹性,应用的敏捷构建,将复杂的系统部署于云中,更好的弹性和容错机制等优点将彻底革新原来的软件开发方法和部署运维。

天下大势,顺之者昌。在这样的一个趋势下,我们唯一要做的,就是大胆拥抱云原生。未来的软件之路也将是一条漫漫的云原生征途,而征途的尽头绝不会是李雪琴的铁岭,那是未来的星辰和大海。。

你可能感兴趣的:(当我们讨论云原生时, 我们在谈论什么?)