• 微服务架构的理想很迷人 现实很骨感
  • 发布于 2个月前
  • 205 热度
    0 评论
十年前,当我深深地沉浸在代码中,试图弄清楚服务发现等概念时,“微服务” 这个词开始在全球科技公司的走廊中回响。我是这个概念刚兴起时的拥趸,我在会议上讲述,指导客户向这个充满希望的架构转变。那时,Kubernetes 还只是在风中低语。但是,到了 2023 年,我的观点与最初想法大相径庭。

微服务架构推销的梦想很迷人 —— 理想中的独立团队,不受技术或部署限制,能够快速且独立地提供价值。但事实是现实世界有自己的规划。微服务并不是一种通用解决方案。它们很少能成为完美的解决方案。这个陈述可能与目前的叙述相左,但让我们深入讨论一下为什么。

首先,采用微服务需要在基础设施方面进行大量投资。这个影响通常被公司低估,不仅在财务上,在时间和人力资源上也是。为了维持微服务架构需要的微妙平衡,必须投入大量资源来开发和维护复杂的 DevOps 设置。

这让我想起了另一个经常被误解的概念 —— DevOps 文化。在理想的世界里,DevOps 不仅仅是一个流行词;它代表了一种文化转变,开发工程师和运维工程师可以无缝合作。然而,在我看到的许多企业中,他们做错了。他们创建了一个独立的 “DevOps” 小组或团队来管理 Kubernetes 集群、集中的 CI/CD 管道、基础设施和自动化。结果呢?开发人员发现自己处于一个限制性的环境中,远离微服务承诺的自治性。

在这种设置中,开发工程师和运维工程师之间的鸿沟依然存在,只是被一个时髦的名字所遮掩。从运维团队转变为 DevOps 团队的转变看起来更像是外在的,而不是实质性的。尽管我们看到了基础设施即代码(IaC)的引入,但我们仍然看到了孤立的模式,只不过换了个标签。

在真正的微服务精神中,DevOps 不应该被视为另一个团队,而应该是每个开发团队的角色。这种方法提供了必要的自治性,鼓励快速决策,从而使我们更接近微服务架构的原始理念。

然而,成本并不是唯一的问题。大型组织有中央集权的倾向。对标准化和控制的推动力往往超过了微服务的自治性和独立性。决策者对技术栈、部署管道和其他流程强制实行严格的规定,这造成了一个与微服务精神相反的环境。


结果,所声称的技术独立性和更快的部署并未实现。你可能会问,“为什么?” 为了回答这个问题,我们需要理解,问题源自一种不愿意分权决策的企业文化。而文化,正如所有经验丰富的高管都会告诉你,是不能通过新的软件架构来改变的。

现在,不要误解我。我并不是说微服务本身有什么缺陷。在正确的组织中,我看到它们创造了奇迹。例如,创业公司和小公司由于官僚主义惯性较小,可以真正利用微服务架构的优势。

理解实施微服务不仅仅是把大型单体应用拆解成更小、更易管理的服务,这点至关重要。这涉及到你的组织准备好了吗,你的基础设施有多灵活,以及你的员工是否愿意改变。

所以,我要对所有的决策者呼吁。在你急于追随最新的技术趋势之前,停下来。问问自己,“这对我们真的有意义吗?” 这个答案可能会为你节省很多时间和资源。那些以集中化和层级文化为特征的大公司,常常试图采用微服务方法,希望能获得它所声称的好处。然而,在很多情况下,这是一条充满荆棘的道路。为什么呢?答案在于一个被称为康威定律的原理。

这个定律由计算机程序员 Melvin Conway 提出,他认为软件系统的结构会反映出产生它的组织的社会结构。现在,如果你花一点时间想象一下典型的大型公司的组织结构,你可能会想象出一个由复杂的部门和团队组成的、由自上而下的等级制度管理的网络。因此,当这样的组织试图实施微服务 —— 一个依赖于分散的、小型的、跨职能团队的架构风格 —— 就像试图把方块塞入圆洞一样。大公司的集中化和紧密耦合的依赖关系与微服务的理念相悖。

因此,这些组织发现自己陷入了一个困境,试图从微服务中获取好处,但却在过程中耗费了大量的资源。请记住,问题不在于工具本身,而在于试图把工具强制应用于不适合的环境。总的来说,组织需要承认并尊重其内在的社会结构,然后才能考虑采用微服务。这需要的不仅是技术转变,也包括根深蒂固的文化和结构改变。

请记住,技术是为你的组织服务的工具,而不是反过来的。微服务,或者任何其他架构风格,都应该适应你的业务需求、文化和长期愿景,而不是强迫你去适应它。

经过近十年的微服务实战,我意识到,软件架构没有银弹。每个选择都有其权衡,而市场上优秀的新解决方案并不总是最适合你的。通常,最有效的解决方案可能是一个均衡的方法,从单体应用和微服务中吸取最好的部分。

总的来说,微服务在软件开发生态系统中有其地位,但它们并非总是被描绘的那样,是一个普世的灵丹妙药。我们需要理解,实施微服务的现实世界与我们被承诺的乌托邦远非一回事,对炒作的批判和质疑是被允许的。毕竟,最好的解决方案往往是通过仔细思考,而不是盲目遵从而找到的。
用户评论