[漫画]《软件方法》微服务的遮羞布

DDD领域驱动设计批评文集

做强化自测题获得"软件方法建模师"称号

《软件方法》各章合集


我把《软件方法》第1章"1.1.2.3 微服务的遮羞布"交给Nano Banana Pro,让它生成漫画。AI生成的8格漫画如下:

原文如下:

1.1.2.3 微服务的遮羞布

最近几年鼓吹的新词"微服务"造成一定的误导。有的人误以为"微服务"就是"需求设计一一对应"。

假设考虑到开发团队的结构,把系统分成多个"微服务",分由各个小团队应用各自的技术栈独立完成。例如图1-1中的男士,可能会被分割为"996微服务"、"交作业微服务"、"扛煤气罐微服务"。

且不说这样划分是否合理,即使这样划分了,"微服务"内部也要通过自己的各个部件(可能是残缺的)协作完成,例如"交作业微服务"要完成"交作业"用例,也需要眼睛、耳朵、手、脚、心脏、**等(可能是残缺的)协作完成,并非映射一个"交作业模块"然后就搞定。更何况,有的用例需要若干个"微服务"协作才能完成。

另外,"微服务"是妥协的不良结构。如果这样的划分风格所得到的软件结构真的是良好的结构,我们几十年前就可以这样做,难道之前的复杂系统没有分解吗?不需要分解吗?如果这真的是好的结构,放在什么时候都是大杀器,根本不用等到现在,拿"微服务"(这也是一个造词)之类的作为理由。即使是一个人完成的项目,也不妨引入一个假设"由各个小团队应用各自的技术栈独立完成"来改善软件的结构嘛。

"微服务"所要解决的问题,在某些系统中确实是存在的,但我在这里要提醒读者,提防把"微服务"(或类似手段)当成遮羞布。

一个人没有能力解决主要问题时,他可能会采取一些措施来掩盖自己能力不足的事实,其中之一就是引入次要问题。

这也是人之常情了。例如,我们在工作中碰到头痛的问题,有时会逃避着不去碰它,而去做一些整理文件,回复邮件等琐碎的事情来获得成就感。

我用盖大楼作类比:

两座大楼耸立在那里,要判断地震来了哪座大楼不容易塌,要考虑的是大楼的结构、所用的材料、所在位置的地质环境等,和这座楼是哪家公司建造的,要了多少钱,建造大楼的公司内部是怎样的组织结构,一共有几支工程队,当时怎么分工的,甚至大楼是猫建造的、狗建造的、外星人建造的,已经没有直接关系------因为大楼已经在那里了。

但要研究这些让大楼不容易塌的直接影响因素,涉及到艰深的工程力学、流体力学、岩土力学等知识。架构师李三没把这些知识学扎实,正在那里犯愁呢。

这时,伪创新专家张四出现了。张四说,时代变了,现在盖楼要讲"新建筑学",要考虑到人际关系,要搞好团结。

于是,李三想着反正"老的"工程力学那些我也搞不懂,还是搞"人"轻松一些。这样吧,有几个包工队跟自己混,就分几个包,大家开干就是。

转换思想后,李三每天累并快乐着,灯红酒绿,推杯换盏。

而且,运气好的时候,盖出来大楼确实也能住人。

如果李三说,公司又不是我的,想那么多干什么,这可以理解;

如果李三说,这么干盖楼快,反正老板要的就是在某某大日子到来之前有个样子货交差,这也可以理解;

如果李三说,这么干有利于建筑团队的安定团结(虽然坑顾客),这也可以理解;

就怕张四以李三为案例,搞出一个"新工程力学",说这样盖出来的大楼更抗震,甚至到清华大学建筑学院开课"划时代革命性的工程力学",取代原有的"工程力学"------这就是无耻了!

相关推荐
要开心吖ZSH2 小时前
DDD(领域驱动设计)篇四:退费 + 支付,三层 vs DDD 各撸一遍
领域模型·ddd·领域驱动设计·架构设计·设计思想
我不会起名字3223 小时前
服务注册了却调不通:注册中心与心跳的 3 个时间参数
微服务·nacos·注册中心·排查
知已难寻3 小时前
第 5 篇 · 云原生生态与实践:微服务、DevOps、可观测性与 Serverless
大数据·linux·服务器·微服务·云原生·云计算·devops
利威尔xu4 小时前
Go IM 源码实战(7):断线三天重连,水位算错就漏消息
redis·后端·微服务·面试·golang
pt10435 小时前
Cisco设备网络安全系列-16:微服务、Kubernetes与无服务器架构安全
网络·安全·微服务·架构
要开心吖ZSH6 小时前
DDD(领域驱动设计)篇三:实战对照——同一个订单业务,两种架构怎么写
java·架构·领域模型·ddd·领域驱动设计·设计思想
阿里云云原生20 小时前
LiteLLM 半年两度被投毒,大模型的“钥匙串”该放在哪里?
微服务·serverless
喵了几个咪1 天前
GoWind ShortPlay 拆解:不用模型的推荐闭环——埋点回流、三路召回与已看去重
开发语言·后端·微服务·golang·gowind
喵了几个咪1 天前
GoWind UBA 拆解:把 Doris UNIQUE KEY 翻译成 ClickHouse——读数正确性对齐实录
开发语言·后端·clickhouse·微服务·golang·gowind