微服务已经大势不在?

简介: 微服务已经大势不在?

受宠的微服务火了这么多年,没想到被一个不懂软件研发的马斯克戳破了越来越膨胀的气球。

image.png

马斯克的话有没有道理?

我对Twitter内部的架构不了解,没有发言权,但我觉得大概率是对的,很有可能微服务在Twitter已经被滥用了。至于他说的20%微服务有价值,呵呵,这压根儿就是马斯克拍脑袋随意给出来的,哪有什么科学依据!大概还是80/20原则在作祟吧。

马斯克此言一出,一石激起千层浪,最高兴的大约就是曾经“喷”过微服务的人了吧。

image.png

我不知道他喷微服务的观点是什么。可一个“喷”字体现批斗精神,让我心里不爽。

任何技术必有双面性。我们对比单体和微服务,就会发现单体的优势恰是微服务之劣势,而微服务之优势又恰是单体之劣势,哪有绝对正确、绝对优势的技术存在?还是咨询师爱说的一句话——看情况嘛!在技术决策中,哪里需要彼之仇寇我之英雄呢?

也有人间清醒,例如:

image.png

归根结底,微服务只是一种架构模式,有它适用之处,自然就有它不适用的场景。这几年,国内的IT公司对微服务确实到了迷信的地步。

最可笑的是不懂技术的领导们非要跳进来刷自己的存在感。我曾经看到一份某政府部门的采购文件,针对某环保软件系统,采购文件明确要求软件必须采用微服务。我看了就笑了。一个地区级的环保平台,并发量不高,业务也不复杂,采购居然要求必须是微服务架构。这不就是为了微服务而微服务吗?

我的一位客户曾经求教我,他的甲方要求他们必须将原来的单体架构改为微服务,而该单体已经开发多年,运行也是稳定的,根本没有必要微服务,问我该怎么办?我说,既然不需要微服务,你又无法说服甲方,那就把整个单体运行在Spring Cloud之上,象征性地拆出一两个服务,不就可以交差了!——你以为那些领导真的懂微服务吗?可能在他们心目中,微服务就等于Spring Cloud,就等于Dubbo吧!

正如《人月神话》的作者Brooks所说,软件没有银弹!然而现实却是,只要一个概念火了,就一定会大行其道,以为它就是银弹。——哪有什么银弹!

我在编写应用现代化白皮书的时候,用了“开放能力”一词作为架构的基本单元。没有使用微服务,就是不希望在设计之初就绑定在具体的架构模式上。我在白皮书中写道:

开放能力作为一个自治单元,组成了应用架构最基本的架构元素。

能力化的好处在于它一方面遵循了软件设计原则,体现了“以应用为中心“的应用现代化设计理念,另一方面又因为它的抽象性,使得它的物理粒度并未确定,从而可以延迟技术决策,保证了技术架构的开放性,使其能够灵活地应对敏态业务的变化需求。

软件设计没有非此即彼的选项。难道除了单体,就只有微服务可选吗?我们也可以根据不同需要设计为宏服务(macro service),设计为迷你服务(mini service),甚至设计为纳米服务(nano service = function)。

现在,微服务被马斯克这么一怼,我又产生另外一个担心:微服务会不会成为过街老鼠,大家一拥而上,又开始去微服务化了?

这让我不得不想到曾经名噪一时的“中台”。最红火的时候,各种中台会议、中台书籍如雨后春笋,许多企业蜂拥而至,纷纷开始企业内部的中台化。

我有一家客户是某行业的大型集团公司,几年前,他们就雄赳赳气昂昂地说要上中台。我说:你们所有的IT系统都不是自己开发的,IT系统的供应商就有几十家,还有一两家牛逼哄哄的供应商,连系统产生的数据都不提供给你,你怎么搞中台啊?

image.png

随着阿里开始淡化中台这个词儿之后,又有不少企业跟风,开始去中台化了,如这位哥们所说:

image.png

可中台真的就是坑人的吗?

有一次,我在了解某企业内部的IT生态时,团队给我描绘的一幅蓝图,就是典型的烟囱(竖井)系统。这就是缺乏企业级战略规划的产物,IT研发团队与外包团队被分为每个项目组,项目组与烟囱系统一一对应。

该如何解决这个问题呢?我脑海中首先浮现出来的词语,就是中台——通过对整个企业进行战略规划,然后以中台建设思维,识别和定义可复用的业务能力,在其上,则以应用为中心,通过对业务能力进行编排或组合,快速打造小前台满足应用场景的需求。请问,这一设计思想有什么错?

显然,错的不是中台,错的不是微服务,错的是做出技术决策的人,错的是不懂技术却为了盲目跟风的决策层领导!

相关文章
|
机器学习/深度学习 自动驾驶 TensorFlow
深入理解卷积神经网络(CNN)在图像识别中的应用
【9月更文挑战第20天】本文旨在通过直观的解释和代码示例,向初学者介绍卷积神经网络(CNN)的基本概念及其在图像识别领域的应用。文章将首先解释什么是CNN以及它如何工作,然后通过一个简单的Python代码示例展示如何构建一个基本的CNN模型。最后,我们将讨论CNN在现实世界问题中的潜在应用,并探讨其面临的挑战和发展方向。
908 2
|
存储 Kubernetes 物联网
K3S完美部署
K3S完美部署
2371 3
Elasticsearch 查看磁盘占用 查看指定索引磁盘占用
【7月更文挑战第2天】Elasticsearch 查看磁盘占用 查看指定索引磁盘占用
|
关系型数据库 MySQL 数据挖掘
MySQL 8窗口函数详解:高效数据处理的必备技能
MySQL 8窗口函数详解:高效数据处理的必备技能
862 3
|
JavaScript 安全 数据安全/隐私保护
cookie的由来,组成,以及原理
由于http协议的无状态,服务器忘记了之前的所有请求,它无法确定这一次请求的客户端,就是之前登录成功的那个客户端。
cookie的由来,组成,以及原理
|
消息中间件 前端开发 小程序
DDD实战之五:战略设计之上下文映射和系统分层架构(下)
DDD实战之五:战略设计之上下文映射和系统分层架构(下)
1041 0
DDD实战之五:战略设计之上下文映射和系统分层架构(下)
|
消息中间件 缓存 前端开发
DDD 实战 (4):战略设计之系统上下文和限界上下文
DDD 实战 (4):战略设计之系统上下文和限界上下文
DDD 实战 (4):战略设计之系统上下文和限界上下文
|
存储 消息中间件 监控
大型系统应用边界设计原则与实践
大型系统应用边界设计原则与实践
1333 0
大型系统应用边界设计原则与实践
|
弹性计算 运维 安全
全面分析和理解PBC
全面分析和理解PBC
8217 0
全面分析和理解PBC

热门文章

最新文章