Gartner每年都会发布一份技术炒作周期的研究报告,在这份关于技术趋势、应用的研究报告里,Gartner会以一个观察者的视角去判断技术的发展历程,同时向企业和开发者提供一个参考视角。
但如果你回看过去20年的Gartner技术炒作周期,你会发现:
但同样的,仍旧有一些技术一直在成熟的过程中,许多成熟技术在持续取得进步,今天回看过去十年、二十年的技术发展,你才会深刻地认识到,原来技术从真正意义上地改变了世界。
架构领域在过去的十年时间里,也走完了从单体应用到SOA再到微服务的演进历程。传统印象里,IT架构作为企业技术的核心骨架,一般是成熟而稳定的。稳定就代表着变化小,演进慢,相比技术栈频繁更新的前端领域,架构一词给人的印象就是不动如山。
但在最近两年,我们看到了架构领域发生了巨大的变化。本文试图以架构领域过去一年的变化,找出背后隐藏的IT技术的发展脉络。
中台,2019年技术圈最热词汇,没有之一。
2019 年可以称得上是中台元年,这一年如雨后春笋般涌现的中台名词不胜枚举,业务中台、数据中台、技术中台、算法中台、AI 中台等等让人目不暇接。一般而言,互联网企业的“中台”战略由阿里巴巴首先提出,但中台的思想其实在银行业、硅谷等都有落地经验。
阿里的中台是个累积的过程,从 2009 年建立共享事业部开始,几经曲折,但是一直在积累,直到 2015 年正式发展成中台战略。阿里目前的中台大约有十几个共享业务单元,包括用户中心、商品中心、交易中心等。淘宝、天猫、聚划算等 25 个大型业务应用都是由中台的共享业务单元支持的,共享业务单元则由阿里云平台支持。
谢纯良《阿里巴巴中台技术架构实践与思考》
硅谷虽然没有“中台”一词,但类似的中台建设实践早已有之。此前亚马逊 CTO Werner Vogels 在总结亚马逊过去多年的软件开发经验时曾提到:
为了支持这种新型架构,我们分解了功能层级结构,并将企业组织重新编排为小型自治团队——小到每次点餐只需要两份披萨。我们将这些“双披萨团队”委派到不同的特定产品、服务或者功能集上,赋予他们对应用程序内特定部分的更多操作权限。这使得我们的开发人员成为产品所有者,并能够根据自己的决策迅速对个别产品产生影响。
互联网一直以来的特点就是赢家通吃,只要成功企业推出的前沿概念,盲目追随者的数量不在少数。阿里巴巴在业务和技术上的成功让“中台”一词被业界奉为圭臬,好似软件开发领域的又一颗银弹。但软件开发的历史规律告诉我们,软件开发没有银弹,有的只是与时俱进、不断迭代的 IT 架构。
阿里的一位高P专家在某次活动上告诉我,中台一定是一个一把手工程。言下之意,这是由CTO乃至CEO推动的建设,暗含组织架构层面的大变动,也只有在阿里巴巴这种组织架构变革以年甚至半年为单位的集团企业,才能有如此成功的中台建设实践。
对于那些中台跟随者来说,首先要想清楚的是,自己的业务是否真的需要中台,如果简单的单体应用已经足够解决问题,没必要为了中台而中台。
这些年里,软件架构逐渐从 SOA 进化到微服务,很多人认为微服务是一种细粒度的 SOA,在去掉了 SOA 中的 ESB 之后,微服务变得更加灵活、性能更强。Martin Fowler 曾经总结过微服务实施的前提包括:计算资源的快速分配、基本的监控、快速部署。这基本就是 Kubernetes 所起到的主要作用,随着云原生计算基金会的壮大,基于 Kubernetes 的微服务在社区中的热度越来越高,也开始有很多公司开始利用这一套技术栈来构建微服务。
伴随着微服务转型的浪潮,一个名叫 Service Mesh 的技术走上了微服务的舞台。2016 年,由开发了 Linkerd 的 Buoyant 公司提出。Service Mesh 的出现,极大地补充了 Kubernetes 生态的微服务选型,再加上 CNCF 的一些开源项目,基于 k8s 的微服务技术栈基本就完善了。2018 年 Istio 1.0 发布,更是为这股浪潮加了一把火,未来的微服务将是 Kubernetes 和 Service Mesh 的天下。
这几年,软件架构领域大有万事不决微服务的势头,微服务也成就或者说互相成就了一系列的技术,比如容器,就被认为是微服务的命运双生子,用容器技术构建微服务效果出人意料地好。
另一个层面,发源于十多年前,一直不温不火,却在最近两年频繁出现在人们眼中的DDD(领域驱动设计)思想,成为了另一个给微服务火上浇油的推手。微服务架构是一种架构风格,DDD是一种架构思想,二者的结合,既让微服务的建设得到了更好的理论指导,也让后者找到了落地的心上人,有了流行的基础。
这些,都让未来的微服务多了更多可能。
云原生是真正的未来架构演化方向。
容器 Kubernetes 和云原生新架构慢慢成为下一代软件架构新标准,重构整个软件生命周期,对整个 IT 产业基础设施带来改变,成为释放云价值和云能力的最短路径。而 5G、边缘计算、IoT 万物互联都是具体场景,有垂直化领域内的价值和空间,可以基于云原生技术体系去构建和支撑。
说得通俗一点,云原生的出现就是告诉企业和开发者一个理念,用更好的方式去用云,对用户来说也可以把复杂度交给云。在这个过程中形成了一套新的标准,这个创新是以 Kubernetes 为核心的,围绕周边的一整套生态。就像当年 Linux 的出现一样,但 Linux 是更底层,而 K8s 经过最近几年的打磨已经成为了事实标准。再往上,就是基于 K8s 的这套东西去做 Serverless 和 Service Mesh,在应用层一层层往上做标准化。
毫不夸张地讲,云原生会是一个改变软件应用开发模式的技术,一是节省了基础设施的部署,二是节省了开发人员的时间和精力,更专注于解决业务层面的问题,云原生开发也被视为技术人的福音。
更为关键的是,全面云计算时代的到来,使得传统的应用开发将走向以容器、Serverless 为代表的真正的云计算,而随着终端和云的更深度的集成、物联网的发展、智能化的提升,云和端的界限会变得模糊,我们和理想中的互联网会更加接近。
从软件技术方面回顾架构领域发生的变化,你会发现:中台、微服务、云原生其实是三位一体的,而业务架构也好,反应式架构也好,甚至前端架构也好,其变化都一定伴随着前三者的发展变化。
从硬件角度看,软件并不是凭空发展起来的,它必须要运行在各种硬件上,软件的发展,也离不开硬件的支持。正是硬件的不断升级和变革,支撑了软件的发展进步。也正因为硬件性能的瓶颈,短期内软件技术不会再发生颠覆性的变化。
这大概从某种角度上表明了,好的架构是演进出来的,拥抱变化、持续生长,才能满足不断发展、不断变革的业务需求和场景。架构如此,人亦如此。
个人公众号:小智的互联网观察,欢迎关注
上一篇:构建通用数据中台架构