webservice优缺点,webservice接口的优缺点

首页 > 经验 > 作者:YD1662022-11-14 20:11:51

webservice优缺点,webservice接口的优缺点(1)

许多软件开发人员不信任架构实践,他们将这些实践与严格和专横的过程以及重要的前期规划和设计联系在一起。

因此,他们相信,如果他们遵循这些实践,可能需要很长时间才能交付一些甚至可能不是客户想要的东西。

他们更愿意专注于理解客户的需求,并通过小而快速的敏捷迭代过程来交付产品。

他们当中有一些人相信,只要遵循了这些过程,架构自然会“出现”,而不需要有意识地进行计划或架构设计。因为存在这些信念,他们可能不认为软件架构是重要的,甚至可能不关心它。

这种架构方法通常可以交付满足客户所需的产品,这是一个好的开始。

但是,如果不显式考虑产品的可持续性,它就有可能衰退,导致产品在自然退役前无法维护。

通过关注关键的质量属性,如性能、可伸缩性、安全性和弹性,有意识的软件架构方法有助于延长产品的生命周期,使其在更长的时期内可持续。

webservice优缺点,webservice接口的优缺点(2)

预先架构和紧急架构对比

如果我们正在做的事情是我们非常了解的,并且已经做过很多次了,那么预先设计方法就很有效。例如,建造摩天大楼、挖运河、生产产品或建造桥梁。我们可以应用“最佳实践”,并依赖过去已经在这些事情上验证过的有效方法。

如果我们正在处理一些东西是全新的,并且我们不太了解,或者变化太快以至于还没有“最佳实践”,那么预先设计就不起作用了。在这种情况下,作为科学革命基础的可控性实验可以帮助我们更深入地理解问题和可能的解决方案。最终的解决方案“出现”了,只是它沿着有意识的实验的路径向我们招手。

这两种方法都是有价值的,但适用的场景非常不同,一种可用于处理大部分已知的事情,而另一种可用于在变化的世界中探索新的机会和可能性。

第二种方法的问题在于,可控性实验可能无法在合理的时间内产生可持续的解决方案,并且可能需要进行可接受的返工。软件架构实践可以通过更早地提出更好的问题来指导实验,以减少交付可持续产品的时间和成本,并仍然可以保留敏捷方法的优势。

架构是如何出现的

正如我们在前一篇文章中所讨论的,架构的本质由一组定义和约束产品技术面的决策组成。无论团队采用哪种方法,无论他们是有意识地还是心照不宣地做出决定,这些决定都是存在的。这些决策专注于产品如何处理质量属性需求(QAR)。

QAR 也可以是显式或隐式的,尽管显式的更容易处理并可以确保产品契合它们。例如,用户通常希望在使用产品时能够得到及时响应,而不管有多少人也在使用该产品。显式地声明“响应性”需求以及产品可以支持多少并发用户而不会变成“无法应式”的,将有助于开发团队对他们的技术方法做出更好的决策,比如“系统的速度必须够快”或“系统必须是可伸缩的”这样的声明并不能帮助团队做出更好的技术决策。

评估质量属性需求和设计一个架构来实现这些需求涉及到一些前期规划,这些也是软件系统取得成功的关键驱动因素,原因如下:

你的软件系统是可持续的吗?

广义地说,实现“可持续性”是软件产品架构工作的重点。如果软件产品能够满足当前需求(包括 QAR),而不损害满足未来需求的能力,则可以认为该软件产品是可持续的。正如我们在前一节中所述,质量属性需求驱动了架构,满足关键 QAR 对于创建可持续的架构设计来说是至关重要的。不幸的是,随着功能增强的实现和新设计决策的制定,软件系统会随着时间的推移而“磨损”,这可能会延展甚至破坏最初的架构设计。常见的“磨损”原因包括:

如果对最初的架构没有很好的理解,即使增加了新特性(我们可以称之为“架构熵定律”),使用紧急架构创建的软件系统最终也会失去架构完整性。因此,它们可能不再是可持续的。

评估软件架构的适用性

如何知道你的软件系统什么时候磨损了,就像知道你的汽车轮胎什么时候磨损了并需要更换一样?就像医生可能使用许多不同种类的工具来评估个体的健康状况(心电图、MRI、CT、血液测试、体格检查)一样,不同的工具可以帮助团队评估软件架构的适用性。旧的系统可能难以理解,因为正如我们前面提到的,它们的设计决策和假设通常没有文档记录,而即使存在文档,也很可能是过时的。理解和评估系统的架构设计通常需要“软件考古”工具和技能。总的来说,有很多工具可以用来评估软件架构的适用性,包括:

结论

在“前期大设计”和敏捷实践之间长达 20 年的争议中,软件开发人员努力在这两种方法之间找到一个有意义的平衡点,并从有意识的架构活动转向自组织团队的架构设计。因此,他们常常认为软件架构并不是那么重要。更多地意识到架构当中存在的隐式决策,并迫使这些决策变成显式的,这有助于开发团队利用他们从 Sprint 和迭代中获得的经验数据做出更好、更明智的决策。现代架构实践,如持续架构和演进架构,提供了可以帮助做出显式架构决策的工具,让开发人员能够交付更可持续的软件产品。

欲了解更多信息,请参考 Murat Erder、Pierre Pureur 和 Eoin Woods 合著的“Continuous Architecture in Practice”,以及 Murat Erder 和 Pierre Pureur 合著的“Continuous Architecture: Sustainable Architecture in an Agile and Cloud-Centric World”。

作者简介:

Pierre Pureur 是一位经验丰富的软件架构师,拥有广泛的创新和应用开发背景,丰富的金融服务行业经验,广泛的咨询经验和全面的技术基础设施知识。他曾担任一家大型金融服务公司的首席企业架构师,领导大型架构团队,管理大型并发应用程序开发项目,指导创新活动,以及制定战略和业务计划。他是“Continuous Architecture in Practice: Scalable Software Architecture in the Age of Agility and DevOps”(2021 年出版)和“Continuous Architecture: Sustainable Architecture in an Agile and Cloud-Centric World”(2015 年出版)的合著者,并发表了许多文章,还在多个软件架构会议上做演讲。

Kurt Bittner 拥有超过 30 年在短反馈驱动周期内开发软件的经验。他帮助许多组织采用敏捷软件交付实践,包括大型银行、保险、制造和零售组织,以及大型政府机构。他曾为包括 Oracle、HP、IBM 和微软在内的大型软件交付组织工作,曾是 Forrester Research 的技术行业分析师。他的工作重心是帮助企业建立强大的、自组织的、高性能的团队,为客户提供他们喜爱的解决方案。他写了四本关于软件开发的书,包括“The Nexus Framework for Scaling Scrum”。他现居科罗拉多州博尔德市,担任 Scrum.org 的企业解决方案副总裁。

原文链接

https://www.infoq.com/articles/care-about-architecture/?

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.