为什么你会觉得微服务架构很别扭

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:
很多系统迁移到微服务架构之后,并没有明显感觉到微服务架构带来的优势,反而觉得带来了更高的复杂度,王启军在《持续演进的Cloud Native》书中总结了七种微服务架构没能发挥出固有优势的原因,看看自己“中枪”了没!

1、用传统方式构建微服务

微服务架构和传统的架构方式思路完全不一样。例如传统方式实现高可用,更相信流程,更相信KPI对人的影响,因此流程需要让更多的人去测试,制定更严格的发布流程。
而微服务架构强调的是自动化发布、灰度发布、Design For Failure、自动化测试、故障隔离、自愈。很多失败的案例以传统的方式去构建微服务架构,一切都没有转变,只是把服务拆开,根本无法享受微服务架构带来的便利,反而因此遇到了更多麻烦。最明显的是对开发人员的影响,他们质疑微服务架构是否适合自己的业务场景,而一个充满质疑的团队是不可能具备强大战斗力的。
dd80b873a295012c0d622027b0cad15532685bc8

2、组织结构不变

如果要充分发挥微服务架构的优势,组织结构必须发生转变,构建和微服务配套的小团队,并且让他们拥有绝对的自主权。实际上,相当一部分实施微服务架构的团队都没有做到这一点,因为组织结构总是涉及利益。比较典型的问题是,小团队不需要团队以外的任何人来批准是否上线,架构如何演进,使用什么数据库。如果小团队没有权利,任何变动都要等待高层进行决策,就会形成决策瓶颈点,导致效率低下,这违背了微服务架构的初衷,团队成员也会因此失去主动性。
d6c1e399df1ed8f2715fd01d4c82e0dc19585730

3、习惯于领导安排工作

传统的研发模式严重依赖流程,原因是没有人愿意承担责任,所有人都把责任推到流程上。微服务架构和敏捷开发流程是天作之合,传统研发模式需要领导批准,然后由团队负责人直接分解任务、定工时、安排任务负责人,而按照敏捷开发流程,开发计划应该是团队决定的,任务自主认领。精英化团队绝不仅仅是团队人数更少,人员能力更强这么简单,这只是表面上的,更重要的是责任感和主观能动性以及信任!
某公司CEO 曾经说过这样一件事情,员工把请假流程提给“我”,让“我”审批,但是“我”根本没有审批的必要,因为你随便说一个理由“我”都不可能拒绝,就算拒绝了,下回会来一个更难以拒绝的理由。后来公司所有的请假都不需要审批了,只要在群里发一条消息,让相关同事知道就可以了。
5d609ae5e90b17645246e625bf2e10894b212441

4、纠结如何拆分服务

不理解微服务架构的人,通常从字面理解,他们认为微服务架构的重中之重就是服务拆分。
到底拆分多细?与其浪费更多的时间思考这个问题,不如先拆出几个服务运行一下,感受一下。架构是一个持续的过程,有时候很难从技术角度完全解释清楚。
另一个错误是一次性拆分,不能改变。由于技术人员对业务领域知识的理解不断加深,业务逻辑有可能运行一段时间也会转变,这时候改变是不可避免的。重新合并、划分,是一个正常的演变过程。架构是动态的,不是静态的。
e82ed1529db3cedfdc908451e16510c35e6c04dc

5、以大规模拆分服务开始

微服务架构需要一个适应过程,持续拆分效果更佳。如果从大规模拆分服务开始,需要具备三个条件,否则可能会遇到相当多的麻烦。
  • 团队有微服务架构经验。
  • 已具备微服务架构的先决条件,包括自动化的研发环境、全面的健康检查、必要的公共服务及框架,以及敏捷基础设施。
  • 业务目标非常明确,已经可以预期未来的规模,业务几乎无变化。
be2187a48499ae06ed81ca4a31e04c7501991568

6、高估架构的移植性

架构是一门艺术,不是随随便便复制一下就可以的,Google、Amazon、Facebook 的架构问世已经很长时间了,研发人员跳槽这么频繁,但是没有哪个公司能模仿好。MySQL 开源了这么多年,放到不同人的手里,结果完全不一样。实际上实施微服务架构在一个业务场景中的优势在另一个场景中很可能会变成一种劣势。如果你仔细研究就会发现,大多数公司实施的微服务架构就跟各个公司的管理制度一样各不相同。很多公司为了显示自己的架构有多厉害而实施微服务架构,最终只会害了团队,因为只把精力放在微服务架构上,可能就减少了对业务实现、用户体验的关注。
3dbaeb5819a1a00b7a2a521d130aae8bb8eefc1a

7、从来没有做过微服务架构的人领导你完成迁移

如果转型的团队由没有经验的人来领导,那么结果就是只关注表面,拆了多少服务、服务粒度、服务注册发现、负载均衡、调用链分析,而隐藏的各种性能问题、扩展性问题、可用性问题都没有得到足够的关注。如果只是从几个服务拆分开始积累经验还好,一旦大规模拆分,就会让整个团队都质疑微服务架构的意义。架构是需要实践的,不要以为看几篇文章就得到了架构的真谛,细节会“杀死”团队。
1cd2580b26a22d8de2a6ad7aeae379b356e18226

本文选自《持续演进的Cloud Native:云原生架构下微服务最佳实践》,作者王启军 ,电子工业出版社10月出版。
作者从全局视角出发,全面阐释Cloud Native 的关键技术,以及其衍生出来的工具、团队文化等核心要素,对于正在部署微服务架构或开展云原生业务的企业和组织而言,终于有了面向落地的务实参考和全面指导。
5a72d21f43f7d95d3f7cfc6e86f3c9cdb714fc88
相关文章
|
10天前
|
API 数据库 开发者
构建高效可靠的微服务架构:后端开发的新范式
【4月更文挑战第8天】 随着现代软件开发的复杂性日益增加,传统的单体应用架构面临着可扩展性、维护性和敏捷性的挑战。为了解决这些问题,微服务架构应运而生,并迅速成为后端开发领域的一股清流。本文将深入探讨微服务架构的设计原则、实施策略及其带来的优势与挑战,为后端开发者提供一种全新视角,以实现更加灵活、高效和稳定的系统构建。
18 0
|
8天前
|
Kubernetes 安全 Java
构建高效微服务架构:从理论到实践
【4月更文挑战第9天】 在当今快速迭代与竞争激烈的软件市场中,微服务架构以其灵活性、可扩展性及容错性,成为众多企业转型的首选。本文将深入探讨如何从零开始构建一个高效的微服务系统,覆盖从概念理解、设计原则、技术选型到部署维护的各个阶段。通过实际案例分析与最佳实践分享,旨在为后端工程师提供一套全面的微服务构建指南,帮助读者在面对复杂系统设计时能够做出明智的决策,并提升系统的可靠性与维护效率。
|
1天前
|
负载均衡 Java 开发者
细解微服务架构实践:如何使用Spring Cloud进行Java微服务治理
【4月更文挑战第17天】Spring Cloud是Java微服务治理的首选框架,整合了Eureka(服务发现)、Ribbon(客户端负载均衡)、Hystrix(熔断器)、Zuul(API网关)和Config Server(配置中心)。通过Eureka实现服务注册与发现,Ribbon提供负载均衡,Hystrix实现熔断保护,Zuul作为API网关,Config Server集中管理配置。理解并运用Spring Cloud进行微服务治理是现代Java开发者的关键技能。
|
3天前
|
监控 JavaScript 安全
构建微服务架构下的API网关
【4月更文挑战第15天】在微服务架构中,API网关扮演着至关重要的角色。它作为系统的唯一入口,不仅负责请求的路由、负载均衡和认证授权,还涉及到监控、日志记录和服务熔断等关键功能。本文将探讨如何构建一个高效且可靠的API网关,涵盖其设计原则、核心组件以及实现策略,旨在为后端开发人员提供一套实用的指导方案。
14 4
|
4天前
|
监控 负载均衡 API
构建高性能微服务架构:后端开发的最佳实践
【4月更文挑战第14天】 在当今快速发展的软件开发领域,微服务架构已成为构建可扩展、灵活且容错的系统的首选方法。本文深入探讨了后端开发人员在设计和维护高性能微服务时需要遵循的一系列最佳实践。我们将从服务划分原则、容器化部署、API网关使用、负载均衡、服务监控与故障恢复等方面展开讨论,并结合实际案例分析如何优化微服务性能及可靠性。通过本文的阅读,读者将获得实施高效微服务架构的实用知识与策略。
|
5天前
|
运维 监控 自动驾驶
构建可扩展的应用程序:Apollo与微服务架构的完美结合
构建可扩展的应用程序:Apollo与微服务架构的完美结合
27 10
|
12天前
|
运维 负载均衡 网络协议
探索微服务架构下的服务发现机制
【4月更文挑战第6天】 随着现代软件工程的发展,微服务架构因其灵活性、可扩展性而日益受到重视。在此架构模式下,服务发现成为了确保系统高可用性和弹性的关键组件。本文将深入探讨微服务环境中服务发现的核心概念、实现方式以及面临的挑战,旨在为开发者提供一套明晰的服务发现指南和实践建议。
|
16天前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。
|
17天前
|
消息中间件 安全 API
构建高效微服务架构:策略与实践
【4月更文挑战第1天】在数字化转型的浪潮中,微服务架构已成为企业追求敏捷、可扩展和灵活部署的重要技术手段。本文将深入探讨如何通过合理的设计原则和先进的技术栈,构建一个高效的微服务系统。我们将剖析微服务设计的核心要点,包括服务的划分、通信机制、数据一致性以及安全性问题,并结合案例分析,展示如何在现实世界中应用这些策略以提升系统的可靠性和性能。
|
17天前
|
设计模式 API 持续交付
构建高效微服务架构:从理论到实践
在当今快速迭代和部署的软件开发环境中,微服务架构已成为一种流行的设计模式,它允许开发团队以模块化的方式构建、维护和扩展应用程序。本文将深入探讨微服务的核心概念,包括其定义、优势、挑战以及如何在实际项目中实施。我们将通过一个实际案例来展示如何将传统的单体应用拆分成一系列独立、松耦合的服务,并通过容器化、服务发现、API网关和持续集成/持续部署(CI/CD)等技术手段来管理这些服务。