2017年的Service Mesh 历程,在平淡中开始,如戏剧般结束,留给我们一个充满想象和憧憬的 2018。让我们一起来回顾这堪称精彩的一年。
在过去的2016年和2017年,微服务技术得以迅猛普及,和容器技术一起成为这两年中最吸引眼球的技术热点。而以Spring Cloud为代表的传统侵入式开发框架,占据着微服务市场的主流地位,它甚至一度成为微服务的代名词。
直到2017年底,当非侵入式的Service Mesh技术终于从萌芽到走向了成熟,当Istio/Conduit横空出世,人们才惊觉:微服务并非只有侵入式一种玩法,更不是Spring Cloud的独角戏!
这一次的新生力量,完全不按照常理出牌,出场就霸道地掀翻桌子,直接摆出新的玩法:Service Mesh,下一代微服务!这一场大战,在 2017 年的最后一个月,终于上演到白热化,被摆上了台面,受到越来越多人关注。往日霸主 Spring Cloud,此时只能沦为看客。
2017年的Service Mesh历程,在平淡中开始,如戏剧般结束,留给我们一个充满想象和憧憬的2018。让我们一起来回顾这堪称精彩的一年。
在我们正式开始2017年回顾之前,我们将时间稍微放前一点,回到2016年:有些故事背景需要预交交代一下。
虽然直到2017年底,Service Mesh才开始较大规模被世人了解,这场微服务市场之争也才显现,但是其实Service Mesh这股微服务的新势力,早在 2016年初就开始萌芽:
在2016年初,service mesh还只是Buoyant公司的内部词汇,而之后,它开始逐步走向社区:
在这一年中,第一代的Service Mesh产品在稳步推进:
而在这个世界的另外一个角落,Google和IBM两位巨人,握手开始合作,他们联合Lyft,启动了Istio项目。这样,在第一代Service Mesh还未走向市场主流时,以Istio为代表的第二代Service Mesh就迫不及待地上路。
现在我们可以进入主题,开始2017年Service Mesh发展历程的回顾。
2017年,Linkerd迎来了一个梦幻般的开局,喜讯连连:
可谓各条战线都进展顺利:产品完成1.0 release,达成最重要的里程碑;被客户接受并在生产线上成功大规模应用,这代表着市场的认可;进入CNCF更是意义重大,是对Linkerd的极大认可,也使得Linkerd声名大噪。一时风光无量,可谓"春风得意马蹄疾,一日看尽长安花"。
需要特别指出的是,Linkerd加入CNCF,对于Service Mesh技术是一个非常重要的历史事件:这代表着社区对Service Mesh理念的认同和赞赏,Service Mesh也因此得到社区更大范围的关注。
趁热打铁,就在Linkerd 1.0版本发布的同一天,创作者继续Service Mesh的布道:
然而现实总是那么残酷,这个美好的开局,未能延续多久就被击碎:
Linkerd的风光瞬间被盖过,从意气风发的少年一夜之间变成过气网红。当然,从产品成熟度上来说,linkerd作为业界仅有的两个生产级Service Mesh实现之一,暂时还可以在Istio成熟前继续保持市场。但是,随着Istio的稳步推进和日益成熟,外加第二代Service Mesh的天然优势,Istio取代第一代的Linkerd只是个时间问题。
面对google和IBM加持的Istio,linkerd实在难有胜算:
Linkerd的发展态势顿时急转而下,未来陷入一片黑暗。出路在哪里?
在一个多月后,Linkerd给出一个答案:和Istio集成,成为Istio的数据面板。
这个方案在意料之中,毕竟面对Google和IBM的联手威胁,选择低头和妥协是可以理解的。只是存在两个疑问:
Linkerd的这个谜团,直到2017年即将结束的12月,在Conduit发布之后才被解开。
自从在2016年决定委身于Istio之后,envoy就开始了一条波澜不惊的平稳发展之路,和Linkerd的跌宕起伏完全不同。
在功能方面,由于定位在数据平面,因此Envoy无需考虑太多,很多工作在Istio的控制平面完成就好,Envoy从此专心于将数据平面做好,完善各种细节。在市场方面,Envoy和Linkerd性质不同,不存在生存和发展的战略选择,也没有正面对抗生死大敌的巨大压力。Envoy在2017年有条不紊地陆续发布了1.2、1.3、1.4和1.5版本,稳步地完善自身,表现非常稳健。
稳打稳扎的Envoy在2017年一方面继续收获独立客户,一方面伴随Istio一起成长。作为业界仅有的两个生产级Service Mesh实现之一,Envoy随后收获了属于它的殊荣:
可谓名至实归,水到渠成。作为一个无需承载一家公司未来的开源项目,Envoy在2017年的表现,无可挑剔。
从Google和IBM联手决定推出Istio开始,Istio就注定永远处于风头浪尖,无论成败。
Istio背负了太多的使命:
Google在企业市场的战略布局,是从底层开始,一步一步向上,一步一步靠近应用。刚刚大获全胜的K8s为Istio准备了一个非常好的基石,而Istio的历史使命,就是继k8s拿下容器之后,更进一步,拿下微服务!
2017年,Istio稳步向前,先后发布四个版本:
在社区方面,Istio借助Google和IBM的大旗,外加自身过硬的实力、先进的理念,很快获得了社区的积极响应和广泛支持。包括Oracle和Red Hat在内的业界大佬都明确表示对支持Istio。
在平台支持方面,Istio的初期版本只支持k8s平台,从0.3版本开始提供对非k8s平台的支持。从策略上说,Istio借助了k8s,但是没有强行绑定在k8s上。
Istio面世之后,赞誉不断,尤其是Service Mesh技术的爱好者,可以说是为之一振:以新一代Service Mesh之名横空出世的Istio,对比Linkerd,优势明显。同时产品路线图上有一大堆令人眼花缭乱的功能。假以时日,如果Istio能顺利地完成开发,稳定可靠,那么这会是一个非常美好、值得憧憬的大事件,它的意义重大:
奈何,事情的发展总是不会这么简单地如人所愿。Istio发布之后,试用中就被发现问题较多,0.1版本时还比较容易被接受,但是接下来的0.2、0.3和0.4,Istio在可用性上并没有明显的改观,导致迄今在全球范围内都几乎没有听到Istio上生产的案例,各家公司都将其停留在简单试用阶段。
此时再看Istio琳琅满目的各种功能,不禁让人疑惑Istio的产品策略:为什么一开场就将摊子铺的如此之大?以至于开发时间长达一年 (注意,虽然开源才半年多,但是开源前已经在开发),却无法得到一个稳定可用的版本。
这有悖于互联网产品的开发理念。下边这个经典图片相信大家并不陌生:
从目前情景看,Istio已经在图上“不应该”的产品迭代路径上走了一年。从5月份0.1版本发布开始,我们就满心期待,却陷入“过尽千帆皆不是”的尴尬境地:每一次新版本试用后的结果,都不理想。
身处局外,无法了解Istio项目开发的背景和真实情况,也自然无法得知为何会如此,我们只能由衷地希望,Istio能在2018年尽快完成计划中的产品开发,实现生产可用。个人意见:哪怕推迟某些特性的实现,也希望能做到主体部分尽快完善。
2018年Service Mesh的整体走势,很大程度取决于Istio:如果Istio能在2018年上半年实现生产可用,哪怕是牺牲部分高级特性,也足以推动整个Service Mesh向前大步迈进。反之如果进展不顺,市场会呈现观望和等待的态势,也会给竞争对手机会,比如说,下面将要出场的Conduit。
2017年底的KubeConf,在Service Mesh成为大会热点、Istio备受瞩目时,Buoyant公司出人意料地给了踌躇满志又稍显拖沓的Istio重重一击:
Conduit的整体架构和Istio一致,借鉴了Istio数据平面+控制平面的设计,同时别出心裁地选择了Rust编程语言来实现数据平面,以达成Conduit 宣称的更轻、更快和超低资源占用。
继Isito之后,业界第二款第二代Service Mesh产品就此诞生。话说得有些拗口,但是一场大战就此浮出水面。Buoyant在Linkerd不敌Istio的恶劣情况下,绝地反击,祭出全新设计的Conduit作为对抗Istio的武器。
需要额外指出的是,作为一家初创型企业,在第一款主力产品Linkerd被Istio强力阻击之后,Buoyant已经身陷绝境,到了生死存亡之秋,作为背负公司期望,担负和Istio正面抗衡职责的Conduit,可谓压力巨大。
从目前得到的信息分析,Conduit明显是有备而来,针对Istio当前状况,针锋相对的:
然而,要抗衡Istio和其身后的Google与IBM,谈何容易。Conduit2018年的发展道路,注定是充满挑战的,艰难险阻可想而知。但是,不得不佩服Buoyant公司,以及以CEO William为首的那支充满挑战精神的团队,有理想、有追求、有魄力、有勇气!期待他们在2018年的表现。
让我们回到Istio和Conduit的竞争格局。从目前局面看,Istio先天优势明显,但是产品策略上的选择给了Conduit一个难得的机会。接下来的2018年,在Conduit的威胁和刺激下,希望Istio能打起精神,给出一份令大家满意的答卷。期待Istio和Conduit能在2018年形成良性竞争,共同引领Service Mesh的大潮。
就在本文撰写之时,在2017年的最后几天,大名鼎鼎的F5 Networks公司突然放出了他们的Service Mesh类产品“Aspen Mesh”,基于Istio构建,目标“企业服务网格”。需要特别强调的是,F5在Service Mesh上的坚定决心:砍掉原有传统产品思路的项目,以内部孵化项目的方式组建独立自治团队,并在新方向上重新开始。而且在Istio才0.1版本的时候F5就做好战略决策,之后默默耕耘,其决策者的胆识令人敬佩。F5在Service Mesh这个新兴技术领域表现出积极进取的姿态,立足Istio完善企业级特性,这也是一条值得探索的路线,期待2018年Aspen Mesh的进展。
2017年的Service Mesh,除了业界先驱Linkerd/Envoy,和后起之秀Istio/Conduit,还有一些其它的竞争者进入这个市场,只是它们都非常低调。
首先是nginmesh,来自大名鼎鼎的Nginx:
nginmesh的定位是作为Istio的服务代理,也就是替代Envoy,思路和Linkerd之前和Istio集成很相似。Nginmesh在发布后的两个多月,github上提交非常少,直到最近突然发力,先后发布了0.2和0.3版本。不过Nginmesh极度低调,github上的star也只有不到100。
然后是Kong,但是这个比默默无闻的nginmesh还要更加低调,只是曾经有传闻kong有意service mesh,但是后来又没有下文。不过kong的github项目介绍里面,悄悄的加上了Service Mesh的字样:“Kong is a ××× Microservice Abstraction Layer (also known as an API Gateway, API Middleware or in some cases Service Mesh).”
在2017年,这些低调的参与者,几乎没有引起外界任何的注意,也无法预期他们在2018年会如何表现。从社区的角度,还是希望有更多的参与者进Service Mesh市场,以推动整个市场的健康发展。
2017年,随着Servic Mesh的发展,国内技术社区也开始通过新闻报道/技术文章等开始接触Service Mesh,但是传播范围和影响力都非常有限。直到年底才剧烈升温,开始被国内技术社区关注:
此外,作为Servic Mesh国内最早的开发和实践者的华为和新浪微博,都积极参与开源。其中新浪微博Service Mesh的核心实现,跨语言通信和服务治理已经在Motan系列项目中提供,而华为也将稍后开源他们基于Golang的Service Mesh代码实现。
特别要指出的是,华为目前已经在公有云上将Service Mesh作为公共服务提供,这在国内公有云中是第一家。预计随着Service Mesh的落地和普及,公有云提供生产级别的Service Mesh服务将成为标配。在国外Google/IBM/Amazon等公有云都有提供Service Mesh的计划,相信国内公有云也会陆续跟进。
2017年的Service Mesh市场,从Linkerd的风光无限开始,到Istio的横空出世,最后止于Conduit的绝地反击,可谓一波三折;产品也经历从第一代的Linkerd/Envoy,跨越性的演化出第二代的Istio/Conduit;同时,技术社区的态度也从年初的逐步接受发展到年底的热烈追捧,下面这张KubeConf上的图片非常有代表性地展示了社区的热切期望:
然而Service Mesh终究是一个新兴的技术,尤其作为未来主流的Istio/Conduit迄今还没有实现产品级别可用,因此2018年对Service Mesh而言,必然不是一帆风顺,必然是充满荆棘和坎坷的。如何实现从技术理念到产品落地,如何实实在在地解决实践中遇到的各种问题,将会是这一年中至关重要的事情。
衷心祝愿Istio和Conduit(也许还有其他的产品)可以在2018年快速成长,实现社区期待的功能和可用性,可以真正地实现降低微服务门槛的目标,让Service Mesh成为名副其实的下一代微服务。
2018年的Service Mesh,值得期望!