微服务架构 面向服务型架构_在面向微服务的架构审查中要问的3个问题

微服务架构 面向服务型架构

如今,面向微服务的体系结构风靡一时。 为什么不? 很难忽略更快的部署速度和降低的成本,这是面向微服务的体系结构的基本承诺。

但是对于大多数冒险的公司来说,开发活动更多地是关于将现有的单片应用程序转换为面向微服务的体系结构,这可能会在许多层面上造成挫败和冲突。

尽管面向绿地微服务的体系结构实现可以遵循对当前微服务设计原则的严格解释,但是,除出于满足预算和时间限制的原因外,面向微服务的体系结构中可分解的遗留应用程序都带有灰色阴影。

在公司食品链中的某个地方,有一位业务主管正在研究面向微服务的体系结构中与这些遗留应用程序相关的分解成本,并将其与遗留代码已提供的价值进行比较。 一旦开发成本超过了预期的收益,业务主管就很可能拔掉插头并取消项目。

有时候是这样的。 很多。

因此,开发经理承受着巨大的压力,要求尽快将代码发布出去。 “足够好”成为转型的理想目标。

现在,这不一定是一件坏事。 与等待梦想成真相比,始终可以提供工作代码。 但是,“灰色阴影”很难管理,而问题在于如何以“足够好”来划定界限。

因此,冲突开始了。 一侧希望按原样运输产品,而另一侧则希望进行更多改进。

对您而言,挑战是不要让这些不同的思想流派在本质上是基于信仰的观点之间进行无休止的斗争。 如果这样做,将会导致根本没有代码交付的情况。 现在,冲突可能有益于从许多竞争者那里综合出最好的想法。 但是,当话语降级为永无止境的冲突时,这可能是致命的。

我将通过针对以下三个问题的讨论来处理此类情况,以避免发生这种冲突:

  • 设计的理由是什么?
  • 有什么风险?
  • 什么是风险缓解计划?

请允许我详细说明。

设计的理由是什么?

当您评估面向微服务的体系结构的设计时,面临的挑战是将过去的观点转移到基本原理分析上。 它的创建主要来自整体应用程序的分解。 只要您可以证明其优点和价值,任何设计都可能“足够好”。

例如,面向微服务的体系结构设计中的一种首选样式是采用事件驱动的方法进行服务间通信。 具体而言,这意味着您使用消息代理以异步方式在微服务之间传递消息。 但是,从长远来看,尽管异步通信更加灵活和可扩展,但消息系统的实现比在“面向”微服务的API之间使用同步HTTP调用的设计更为复杂。 因此,当需要考虑上市时间时,完全有理由将单片应用程序中的功能重构为以HTTP API表示的独立微服务。

同步微服务的实现通常比异步微服务复杂。

从长远来看,同步通信不一定是最佳选择,但是考虑到从单片应用程序中提取独立微服务所需的所有其他工作,对于第一个发行版来说,同步“足够好”。 因此,有正当的理由。

但是,这并不是说同步方法没有风险。 实际上,存在很多风险。 在审查面向微服务的体系结构设计时,仅靠论据并不是唯一的因素。 风险也必须明确表达。

有什么风险?

所有设计都有固有的风险。 在上述同步设计示例中,这种服务间通信的方法可能会导致服务之间类型耦合,由于同步HTTP通信的性质以及其他原因而导致延迟增加的风险。

重要的是要告知风险,以便可以根据预期设计的合理性对风险进行权衡。 如果风险不堪重负,则没有任何正当理由。 另一方面,鉴于当前的需求,某些风险可能是可以接受的。 诀窍是确保在审核过程中明确传达风险。 讨论中的已知风险始终比可能会带来麻烦的隐性风险更可取。 另外,如果您以前知道风险,那么它允许您计划如何在面向微服务的体系结构成熟时更好地在将来的版本中前进。 这就是减轻风险的地方。

什么是风险缓解计划?

明智的应用程序设计人员的标志是能够识别他们的设计风险,然后具有明确愿景的能力,一旦确定,他们就可以减轻这些风险。 没有适当的缓解技术的风险识别是思维不完整的标志。

如果面向微服务的体系结构设计有大量风险和针对这些风险的边缘计划,那么设计团队需要认真考虑其可行性。 此外,如果缓解计划不切实际-超出项目的专业知识和预算 -设计的可行性也必须受到质疑。 这都是平衡的问题。

考虑到其固有的设计风险和旨在解决这些风险的缓解计划,权衡合理的面向微服务的体系结构设计是合理的。

放在一起

冲突是创作过程中必不可少的部分。 极富创造力的人往往对自己的想法具有坚韧。 因此,当您将它们放在一个房间中并要求他们为面向微服务的体系结构设计一个单一的设计时,压力必然会增加。 就是这样。 但是要振作起来! 冲突是好的。

幸运的是,通过一种合理的方法来审查面向微服务的体系结构设计,并回答了我上面描述的三个问题,您可以促进客观的讨论,以及时生成满足您需求的软件。 没有设计会是完美的,尤其是那些是整体应用程序分解的设计。 但是,交付面向微服务的体系结构具有显着的好处,该体系结构足以在短期内有效地运行 ,而又具有足够的灵活性以在长期内持续改进。

翻译自: https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/3-questions-to-ask-in-a-microservices-oriented-architecture-review

微服务架构 面向服务型架构

你可能感兴趣的:(微服务架构 面向服务型架构_在面向微服务的架构审查中要问的3个问题)