IT架构的变与不变

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 为代表的真正的云计算,而随着终端和云的更深度的集成、物联网的发展、智能化的提升,云和端的界限会变得模糊,我们和理想中的互联网会更加接近。

写在最后

从软件技术方面回顾架构领域发生的变化,你会发现:中台、微服务、云原生其实是三位一体的,而业务架构也好,反应式架构也好,甚至前端架构也好,其变化都一定伴随着前三者的发展变化。

从硬件角度看,软件并不是凭空发展起来的,它必须要运行在各种硬件上,软件的发展,也离不开硬件的支持。正是硬件的不断升级和变革,支撑了软件的发展进步。也正因为硬件性能的瓶颈,短期内软件技术不会再发生颠覆性的变化。

这大概从某种角度上表明了,好的架构是演进出来的,拥抱变化、持续生长,才能满足不断发展、不断变革的业务需求和场景。架构如此,人亦如此。

微服务发展的历史_三位一体的中台、微服务和云原生,揭示了软件架构的最新发展趋势...相关推荐

  1. 微服务发展的历史_“美丽新羌 光照未来” 新羌社区开展微视频宣传片拍摄活动...

    见圳客户端.深圳新闻网讯(记者 王志明 通讯员 甘力宇)为记录新羌社区的历史变迁,弘扬新羌人与时俱进.开拓进取的创新精神,宣传社区党委.社区一线工作者及社区居民的感人事迹和精神,展现深圳社区发展新风貌 ...

  2. 微服务发展的历史_Spring Cloud Alibaba#03. 微服务的发展史

    本文介绍微服务的发展历史以及架构演变过程 笔记对应视频学习地址: https://www.itlaoqi.com/chapter/2645.html 单体架构 单点架构面临的挑战 用户量越来越大,导致 ...

  3. 服务器和交换机物理连接_利用Calico融合物理网络的云原生容器SDN方案

    01 云原生的背景 随着云计算的蓬勃发展,越来越多的IT设施及架构具备了虚拟化.分布式.多租户的云计算能力,这些能力为高速发展的互联网行业插上了腾飞的翅膀.并为互联网业务的开展提供了极大的便利. 当移 ...

  4. 微服务开发及部署_基于 Kubernetes 的微服务部署即代码

    在基于 Kubernetes 的基础设施即代码一文中,我概要地介绍了基于 Kubernetes 的 .NET Core 微服务和 CI/CD 动手实践工作坊使用的基础设施是如何使用代码描述的,以及它的 ...

  5. python服务发现与注册_(转)微服务架构中服务注册与发现

    https://blog.csdn.net/u011537073/article/details/69663858 想象一下,如果你在写代码调用一个有REST API或Thrift API的服务,你的 ...

  6. mysql指定服务标记为删除_如何解决“指定的服务已标记为删除”

    如何解决"指定的服务已标记为删除" 我尝试使用services.msc删除Windows服务,并遇到以下错误: [SC] DeleteService FAILED 1072: 指定 ...

  7. Seata多微服务互相调用_全局分布式事物使用案例_Order-Module order微服务的配置搭建_写代码下---微服务升级_SpringCloud Alibaba工作笔记0062

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们接着完善我们的订单微服务 我们写完StorageService这个库存的远程调用以后 然后 ...

  8. Seata多微服务互相调用_全局分布式事物使用案例_Order-Module order微服务的配置搭建_写代码上---微服务升级_SpringCloud Alibaba工作笔记0061

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后咱们继续写这个使用seata实现分布式事物调用的案例,上节配置完 微服务的环境以后,然后我们可 ...

  9. 网易微专业python实用技能_网易云课堂微专业大促 抄底价学习职业技能

    原标题:网易云课堂微专业大促 抄底价学习职业技能 3月20日-26日,网易云课堂"3月开工季"促销活动火热来袭,参与用户不仅可领取260元礼包券,还有1元秒杀.新课半价等多重优惠, ...

  10. 云服务如何搭建数据库_【MySQL8.0.18】阿里云服务器上搭建MySQL数据库

    要想搭建个人博客,云服务器和数据库是少不了的.笔者选择在阿里云服务器上搭建一个MySQL数据库. 系统选用CentOS8.0,MySQL数据库版本8.0.18 一.数据库压缩包选择及下载 登录MySQ ...

最新文章

  1. 【Python】一个已经存在 10 年,却被严重低估的库
  2. 后台寻路系统的大体思路与流程
  3. 使用jQuery开发tab选项卡插件
  4. 银监会计算机知识点,2015国考银监会计算机专业考试分析
  5. SWIFT IOS开发 部分compile error
  6. 直接加QQ好友的链接或会话的方法
  7. veu+cesium跨域问题
  8. 人员招聘与培训实务【1】
  9. 利用Word实现交叉引用或引用尾注添加参考文献图解
  10. HTML <blockquote> 标签
  11. 双系统装完只能u盘启动_怎样用u盘安装双系统呢?
  12. 小马激活工具拒绝访问cannot open file c:\oemsf解决方法
  13. R语言caret包preProcess()标准化出现错误: Matrices or data frames are required for preprocessing
  14. 基于D3.js的数据可视化前端实现方案
  15. tiny-emitter 源码解析
  16. 为什么电脑浏览器显示时钟快了_打开网站提示您的时钟快了_网页显示您的时钟慢了,解决方法...
  17. 推荐几款实用的内网穿透工具
  18. iOS图片压缩成指定大小
  19. LeetCode 力扣 56. 合并区间
  20. 一种具备过载检测和打嗝式保护功能的MBUS主机电路

热门文章

  1. 获取简单的输入和渲染窗口(Hello Window)
  2. 第一讲:使用html5——canvas绘制奥运五环
  3. C++-Qt【1】-退出程序静态调试
  4. 最牛B的编码套路 - 呦呦鹿鸣 - 博客频道 - CSDN.NET
  5. ASP.NET中 CheckBox(复选框)的使用
  6. http://www.codeproject.com/Questions/117324/upload-file-in-c-with-HttpWebRequest
  7. [原]ActiveReport6 for net使用(一)
  8. 十种日常食物比砒霜还毒!
  9. 使用C语言进行面向对象的开发--GObject入门[7]
  10. H3C PBR(策略路由)实验