云原生是当下的热点话题,但是很多人对云原生有很多误解,特别是传统产业物联网或工控、物联网行业对云原生显得"后知后觉"。与其在这里说是预测,不如说是现在进行时,只是由于传统产业本身的技术包袱和组织个人认识程度差异,目前发展并不见快。目前大部分的系统还是停留在旧年代,只是不到火候,还没到尝鲜和推倒重来的必要。但是,面对未来业务的持续增长和行业竞争,必然要面临一个技术的现代化转型升级,即:使用新技术代替老技术,使用新观念代替老观念的痛苦过程。否则老系统必然会变成企业发展的一个瓶颈,因为基于老系统的修修补补只会使系统变得更加复杂和难以维护,最后等待他们的是要么推到重来,要么是逐年生锈老化(修修补补又三年)。我这里针对新近的云原生作为一个切入点,来说明一下为什么说云原生会成为未来企业技术变迁的一个趋势。
概念诞生云原生(Cloud Native)的概念,由来自Pivotal的MattStine于2013年首次提出,被一直延续使用至今。
这个概念是Matt Stine根据其多年的架构和咨询经验总结出来的一个思想集合,并得到了社区的不断完善,内容非常多,包括:
DevOps
持续交付(Continuous Delivery)
微服务(MicroServices)
敏捷基础设施(Agile Infrastructure)和12要素(The Twelve-Factor App)等几大主题。
不但包括根据业务能力对公司进行文化、组织架构的重组与建设,也包括方法论与原则,还有具体的操作工具。采用基于云原生的技术和管理方法,可以更好地把业务生于“云”或迁移到云平台,从而享受“云”的高效和持续的服务能力。
概念理解云原生我这里简单的把它拆成云+原生两个部分来理解。
云:和本地相对。很多人提到云容易先入为主的认为是阿里云,百度云。其实这朵云可以是阿里的公有云,也可以是自家的私有云,或者是混合云,不能简单的理解云原生就要把应用部署在阿里云。运用跑在那朵云需要权衡利弊再抉择。
不同于传统的是,站在研发的整个工程纬度来看,从研发的开始阶段就要设计面向云的系统,而不是先按传统的思路来设计开发,再去做迁移部署,最后导致迁移水土不服。
什么是设计面向云的系统呢?这就要来理解原生的内涵。
原生:就是土生土长的意识,也就是应用一出生就带有云的基因。所谓云的基因是基于微服务原理而开发的应用,以容器方式打包,在运行时,容器由运行于云基础设施(PASS或者叫云操作系统)之上的平台进行调度,应用开发采用持续交付和DevOps实践”。
根据刚才的理解,我把这些概念抽象成脑图:
理解了整体概念,其中蕴含的价值也能逐渐明白清晰,接下来我逐个来展开分析,重点看下其中内置的四个子概念。
微服务微服务的终极价值在于借鉴乐高思想,把应用服务按照领域划分成一个个微服务。
微服务是种理念,它的本质就是分而治之。可以是物理的拆分,也可以是领域的划分,或者是软件接口划分等等。
从中台纬度看,不管是产业互联网、还是传统互联网,亦或是新兴的物联网,他们在系统底层都有相通的技术支撑:比如都需要硬件基础设施层(iaas),需要中台服务层(paas),需要软件服务层(saas)。不同是软硬件规模大小,复杂度高低的差异。
微服务能力的强大在于,提供了灵活多变的定制化能力,比如在物联网领域,从功能维度可以分为:统一身份认证服务、设备管理服务、设备告警监控服务、故障预测服务、报表分析服务等(具体划分可以参看我的另外一篇文章《微服务划分的姿势》),最后达到服务之间的任意拼装,极大的提高了服务的复用,同时降低了重复开发成本。