微服务到底是技术问题还是管理问题?

人生苦短,不如养狗

作者:闲宇

公众号:Brucebat的伪技术鱼塘

一、技术 or 管理?

当谈到微服务时,我们到底是在谈论一个技术问题还是一个管理问题?

如果时间回到我刚接触微服务这样一个概念时,那么面对这个问题我一定会毫不犹豫的回答:这是一个技术问题。毕竟在刚毕业的时候,我的关注点更多的聚焦在技术实现上,对于事物的认知更多的是按照自底向上的方式来建立的。这就导致了提到某个概念或者理论时,脑海中浮现的更多是各种框架、中间件或者工具,而不是一个相对明确的定义描述。

但是随着在软件工程领域摸爬滚打的时间增长以及认知方式的改变,我愈发的觉得这样一个问题无法简单地将其归类为技术问题或管理问题。不过早些时候只是模糊地有这样一种感觉,真正意义上出现这样一个认知转变是在听了毕玄的一次分享之后。在这次分享当中他分享了一个让我当时非常震惊的事情:淘宝最初搞服务化(那个时候是服务化,真正意义上的微服务还要隔个几年)根本原因还是因为工程进度赶不上业务扩展的需求。由于有些代码会涉及多个业务多个团队,每每有业务调整需要涉及到这些代码时,排期就会成为一个非常大的难题,因为各个团队都要改动这个代码,谁先改、谁后改都需要协调排期,有些排期可能都要排到一年之后。但是业务是不会等人的,一年前业务可能是这样,谁也说不准一年后的业务是不是还是这样。所以分散治理成为迫在眉睫的事情。

当然,毕玄也提到了最初迫使他们进行架构变动的原因是业务扩展速度和软件迭代速度之间的矛盾不断激化,但是具体的理论依据其实当时并没有太多人想清楚,直到后来他们学习了谷歌关于微服务架构相关的分享和论文才发现:微服务架构最大的优势就在于便利了工程管理。每个业务团队围绕自己的业务开展开发工作,对于自己的服务有着独立的开发、维护和管理权限。

看到这里,可以发现在毕玄的分享当中更多的是在谈微服务架构在管理方面的优越性。那么微服务架构难道就是一个管理问题吗?当然不是,正如我上面说的,对于微服务架构我们不能简单地将其归为技术问题或管理问题。

二、再谈微服务架构

在Martin Fowler[1]和James Lewis[2]的Microservices : a definition of this new architectural term[3]文章中阐明了关于微服务的九种特性:

  • 通过服务来实现独立自治的组件(Componentization via Services)
  • 围绕业务能力构建(Organized around Business Capabilities)
  • 产品化思维(Products not Projects)
  • 轻量级通讯机制(Smart Endpoints and Dumb Pipes)
  • 分散治理(Decentralized Governance)
  • 数据去中心化(Decentralized Data Management)
  • 基础设施自动化(Infrastructure Automation)
  • 容错性设计(Design for Failure)
  • 演进式设计(Evolutionary Design)

可以看到在这九种特性中关于团队管理相关的内容只有两条(围绕业务能力构建分散治理 ),如果硬要把产品化思维 算上也只有三条,其余的内容都是对技术方案的要求或者规范。但是我们并不能因此就认为管理的比重偏少,其实正是由于这三条关于管理的的要求或者规范才衍生出其余关于技术的要求或者规范。举个例子,正是因为需要分散治理,才会出现通过服务来实现自治的组件轻量级通讯机制 以及数据去中心化的技术要求。因为如果没有这些技术实现将无法完成团队对于服务独立、自治的需求。

所以说,微服务架构在管理方面和技术方面的要求或者规范两者是相辅相成、不可分离的,我们并不能单一地去看待这些问题。这其实也在一定程度上提醒了我们,即使并不身处管理岗,对于工程领域的问题也不能只是简单的自底向地上去考虑,很多时候也要学会自顶向下去思考。

参考资料:

1\] Martin Fowler: *[martinfowler.com/](https://link.juejin.cn?target=https%3A%2F%2Fmartinfowler.com%2F "https://martinfowler.com/")* \[2\] James Lewis: *[twitter.com/boicy](https://link.juejin.cn?target=https%3A%2F%2Ftwitter.com%2Fboicy "https://twitter.com/boicy")* \[3\] Microservices : a definition of this new architectural term: *[martinfowler.com/articles/mi...](https://link.juejin.cn?target=https%3A%2F%2Fmartinfowler.com%2Farticles%2Fmicroservices.html "https://martinfowler.com/articles/microservices.html")*

相关推荐
卓码软件测评2 小时前
第三方软件测试机构【性能测试工具用LoadRunner还是JMeter?】
java·功能测试·测试工具·jmeter·性能优化
钢门狂鸭5 小时前
关于rust的crates.io
开发语言·后端·rust
Lionel_SSL6 小时前
《深入理解Java虚拟机》第三章读书笔记:垃圾回收机制与内存管理
java·开发语言·jvm
记得开心一点嘛6 小时前
手搓Springboot
java·spring boot·spring
老华带你飞6 小时前
租房平台|租房管理平台小程序系统|基于java的租房系统 设计与实现(源码+数据库+文档)
java·数据库·小程序·vue·论文·毕设·租房系统管理平台
独行soc6 小时前
2025年渗透测试面试题总结-66(题目+回答)
java·网络·python·安全·web安全·adb·渗透测试
脑子慢且灵7 小时前
[JavaWeb]模拟一个简易的Tomcat服务(Servlet注解)
java·后端·servlet·tomcat·intellij-idea·web
华仔啊8 小时前
SpringBoot 中 6 种数据脱敏方案,第 5 种太强了,支持深度递归!
java·后端
APItesterCris8 小时前
构建分布式京东商品数据采集系统:基于 API 的微服务实现方案
分布式·微服务·架构
异常驯兽师8 小时前
Spring 中处理 HTTP 请求参数注解全解析
java·spring·http