[转帖]微服务并不是银弹

服务,不是,银弹 · 浏览次数 : 0

小编点评

**公司是否应该转向微服务?** 微服务架构的各种开销和缺陷可能会阻碍组织是否应该转向微服务。 **场景 1:小团队无法使用微服务加快速度** 小团队只有少量成员的小团队无法使用微服务加快速度。 **场景 2:组织结构和文化无论最初的应用是否是模块化的,而微服务化后的架构都将会导致模块化** 微服务化后的架构会导致模块化,所有软件架构拥护者都会同意,这是一个非常好的结果。 **场景 3:试图证明商业理念 Poc 的初创公司对于成功的产品来说,初创公司 —— 或任何组织 —— 就此而言,有时会做几个 PoC 来测试对产品、市场需求、业务场景或技术需求** 在充分投入到这个想法的研发之前,需要验证一个商业理念。 **场景 4:非工程类组织如果你在一个不以工程为核心的终端用户组织中,那么如果你采用微服务则其实是不利的** 在一天结束时,所有商业组织都在那里赚钱的。如果你不专注于为客户创造价值,并且深陷架构的细节和开销中,那这绝对不适合你。

正文

https://www.oschina.net/translate/microservices-not-a-silver-bullet?print

 

让我们看一个公司/客户与前端框架技术团队之间的典型对话。

这是你从公司/客户那里听到的,技术团队因此而疯狂。当整个世界都从微服务中获益时,为什么不应该采用微服务,技术团队很难说服决策者。

让我们看看微服务的各种开销和缺陷。除了处理核心应用程序之外,还需要解决所有的这些问题。

微服务的开销

  • 业务间的通信是一大挑战

  • 服务发现和注册

  • 负载均衡

  • 去中心化数据管理

  • 分布式日志

  • 监控

  • 安全

  • 测试

  • 性能/指标

  • 分布式事务

  • 容器——Docker/Kubernetes

  • API网管

  • 熔断

  • CI/CD和DevOps

  • 其他...

微服务根本不适合每个人。 我们中的一些人在权衡了复杂性与利益之后,决定继续使用单一架构。 不能因为每个人都跳桥,结果你也往下跳。

微服务只是个选项。如果不做微服务,您仍然可以实现您的目标。

这些问题需要回答。

  • 为什么你想转向微服务?

  • 你想得到什么好处?

  • 你的组织准备好结构和文化变革了吗?

  • 你的公司是否已有工程技术经验?

  • 那打算迁移多少?什么时候停止?

  • 这样做的好处大于成本吗? 

让我们看一下应该选择微服务的各种场景

场景1:小团队

只有少量成员的小团队无法使用微服务加快速度。 组织需要一定的临界质量来承受微服务的细微差别和开销,然而,就单体应用而言,一个由极少数员工组成的小团队就可管理,维护和运营一个稳定,体积适中的应用程序。

场景2:组织结构和文化

无论最初的应用是否是模块化的,而微服务化后的架构都将会导致模块化。几乎所有的软件架构拥护者都会同意,这是一个非常好的结果。由微服务们所创建的服务将是自包含的和独立的。

康威定律(Conway's law)规定,“任何设计系统的组织(这里只是更广泛地定义信息系统)将不可避免地产生一种设计,其结构是组织通信结构的副本。”从该定律可以理解,传统架构只是其孤立和分层组织的副本。随着组织的发展,决策者不断在他们的团队和控制下增加更多的人员作为一种力量的表现,所有的沟通都通过他们。

相比之下,微服务的实践者建议,为了成功,团队应该小(可能少于 10 人)和独立。团队应该与同一团队中的开发人员、测试人员、数据库和运维人员进行交叉功能。他们应该负责应用程序的所有方面,包括可用性、可伸缩性、性能等非功能性方面。

如果组织结构不像这样,他们甚至不应该考虑转向微服务。这应该是基于微服务的体系结构的第一个先决条件。

场景3: 试图证明商业理念 Poc 的初创公司

对于成功的产品来说,初创公司 —— 或任何组织 —— 就此而言,有时会做几个 PoC 来测试对产品、市场需求、业务场景或技术需求。在充分投入到这个想法的研发之前,需要验证一个商业理念。无论何时完成,组织都需要以极快的速度快速行动。在这种情形下,完整的微服务架构可能不是一个好选择。建议将整个应用程序用作为 PoC,然后慢慢将其转换为微服务。

场景4: 非工程类组织

如果你在一个不以工程为核心的终端用户组织中,那么如果你采用微服务则其实是不利的。在一天结束时,所有商业组织都在那里赚钱的。如果你不专注于为客户创造价值,并且深陷架构的细节和开销中,那这绝对不适合你。冒险之前要三思。

改变的原因

到目前为止,你必须明白和确定你选择微服务架构的真正原因。让我们来聊聊你会考虑选择什么的一些场景。

  • 如果整个应用程序或所有服务具有需要被布署为独立单元的性质,那么设计不良的微服务应用程序可能会使情况恶化。

  • 以前不成功的单体应用程序:如果设计一个单体应用程序对于团队来说是一个挑战,那么微服务应用程序肯定会失败。

  • 你有一个遗留的应用程序,预计最终会弃之不用。移植遗留下来的单体应用需要大量的时间和精力,这可能并不值得。

  • 如果一天只是多次扩展和布署UI,则可以将UI部分单独提取出来。然后将这一部分扩展并布署到单独的容器中,使用某种API访问后端应用程序。再说一遍,不需要将所有的东西都放到微服务中

  • 一个功能或服务似乎总是在加载和需要扩展。

如果你只需要扩展一个或很少的几个服务,则不是使用所有的组件来扩展整个单体应用,那么迁移到微服务可能就是一个真实可行的案例。但是,有办法避免它。一种方法是从单体应用中提取这些服务,并将它们分别托管在不同的容器中。这不仅有助于扩展它们,而且可以帮你不会将整体迁移到微服务中。

重申一遍,这里并不是在阐述单体应用或SOA或微服务。是在阐述合适的架构来满足业务需求。如果不需要去处理微服务的开销就可以增长并获得所有的收益,那为什么还要去考虑它?你可以根据需要慢慢添加更多的服务。在你真正需要或想要它之前,没有人会强迫你。

结语

我们已经探讨了微服务架构的各种细微差别和开销。它绝不是这样一种简单的模式,如果它不生效,它不可以很容易地被采用和丢弃。在将组织推向微服务道路之前,需要考虑所有的优点和缺点。人们需要关注“为什么是微服务”,而不是“为什么不是微服务”。 我们还探讨了各种方案。这是为了避免在绝对必要之前涉足微服务的各种复杂性。

同样,你可能不同意我的一些或所有意见,但我很高兴我们今天可以探讨这个问题。

引用:

与[转帖]微服务并不是银弹相似的内容:

[转帖]微服务并不是银弹

https://www.oschina.net/translate/microservices-not-a-silver-bullet?print 让我们看一个公司/客户与前端框架技术团队之间的典型对话。 这是你从公司/客户那里听到的,技术团队因此而疯狂。当整个世界都从微服务中获益时,为什么不应该采

[转帖]拜托!面试请不要再问我Spring Cloud底层原理

https://www.cnblogs.com/jajian/p/9973555.html 概述# 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此

[转帖]庐山真面目之十三微服务架构中如何在Docker上使用Redis缓存

https://www.cnblogs.com/PatrickLiu/p/14518160.html 一、介绍 1、开始说明 在微服务器架构中,有一个组件是不能少的,那就是缓存组件。其实来说,缓存组件,这个叫法不是完全正确,因为除了缓存功能,它还能完成其他很多功能。我就不隐瞒了,今天我们要探讨的就是

[转帖]nacos开启强鉴权

注意 Nacos是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安全风险。 Nacos提供简单的鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。 如果运行在不可信的网络环境或者有强鉴权诉求,请参考官方简单实现做替换增强。 鉴权 服务端如何开启鉴权 非

[转帖]官网:Nacos的授权验证

https://nacos.io/zh-cn/docs/v2/guide/user/auth.html 注意 Nacos是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安全风险。 Nacos提供简单的鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。

[转帖]微服务进入深水区后该何去何从

https://maimai.cn/article/detail?fid=1779240778&efid=6PAMlDpkjTrLurOEPgEghQ 2022 年,关于微服务发生了几件有趣的事情。其一,正式掌管 Twitter 不久的 Elon Musk 对 Twitter 的开发团队 “批判”

[转帖]庐山真面目之十五微服务架构的动态分离的设计实现

https://www.cnblogs.com/PatrickLiu/p/16688731.html 一、开场白 我是一名程序员,是基于 NET 框架的跨平台开发的程序员。现在的业务系统,不论大小都开始实现了微服务,不管合不合适,最起码说起来挺牛气的。我做一位程序员,当然也不能落后了。微服务是为了满

[转帖]Skywalking介绍

https://www.jianshu.com/p/ffa7ddcda4ab 微服务架构已经是一个很通用的系统架构,常见的技术栈如下图所示,这张架构图基本涵括了当前微服务体系下的各种技术栈,可能不同的技术栈有不同的开源实现。 Screen Shot 2022-01-23 at 12.48.19 PM

[转帖]Skywalking介绍

https://www.jianshu.com/p/ffa7ddcda4ab 微服务架构已经是一个很通用的系统架构,常见的技术栈如下图所示,这张架构图基本涵括了当前微服务体系下的各种技术栈,可能不同的技术栈有不同的开源实现。 Screen Shot 2022-01-23 at 12.48.19 PM

[转帖]从性能问题定位,扯到性能模型,再到 TCP - 都微服务云原生了,还学 TCP 干嘛系列 Part 1

https://blog.mygraphql.com/zh/posts/low-tec/network/tcp-flow-control-part1/ 引 本来想直接写理论、和实践分析的,但为了不 “赶客出門” 和不 TL;DR,还是以故事形式展开吧。语言要生动活泼。 故事的开始 话说,一次性能测试