解决方案架构师修炼之道(原书第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 解决方案架构的好处

上一节详细介绍了解决方案架构的重要性,本节将详细介绍解决方案架构在组织各个方面的好处。图1-2展示了在业务中使用解决方案架构师角色时赋予组织的潜在好处。

图1-2 解决方案架构的好处属性

从图1-2可以看出,好的解决方案架构具有以下属性:

技术价值与需求:解决方案架构决定了投资回报率、特定技术选择可以获得的解决方案以及市场趋势。解决方案架构师评估组织或项目应该采用哪种技术,以实现长期可持续性、可维护性和团队舒适度。

业务目标:解决方案架构设计的主要任务是满足利益相关者的需求,并适应他们的需求变更。解决方案架构通过分析市场趋势和实施最佳实践,将业务目标转化为技术愿景。解决方案架构需要足够灵活,以满足新的、具有挑战性的、苛刻的和快速变化的业务需求。

目标日期:解决方案架构师与所有的利益相关者(包括业务团队、客户和开发团队)持续合作。解决方案架构师定义了流程标准,并为解决方案的开发提供指导。他们确保整体解决方案与业务目标和发布时间表保持一致,以最大限度地降低目标日期延期的可能。

提高投资回报率:解决方案架构决定了投资回报率,并且有助于衡量项目成败。解决方案架构迫使企业思考如何通过应用自动化来降低成本并消除过程中的浪费,以提高整体投资回报率。

市场机遇:解决方案架构涉及分析和持续评估市场最新趋势的过程。它还有助于支持和推广新产品。

预算和资源配置:为了获得更好的预算,我们一般建议在估算方面进行适当的投资。定义明确的解决方案架构有助于了解完成项目所需的资源数量。这有助于制定更好的预算预测和资源规划。

项目时间表:定义准确的项目时间表对于解决方案的实施非常关键。解决方案架构师在设计阶段就确定了所需的资源和工作量,这将有助于定义时间表。

现在,你已经对解决方案架构及其好处有了一定的了解。接下来让我们深入了解解决方案架构的日常方面。

1.4.1 满足业务需求和交付质量要求

在产品开发的生命周期中,最具挑战性的阶段是确定需求的本质,特别是当所有要素竞相作为高优先级处理并且正在迅速变化时。当不同的利益相关者对同一需求有不同的看法时,这种挑战就变得更加严峻。例如,业务人员从用户的角度分析页面设计,而开发人员则从实现的可行性和加载延迟的角度来分析。这就可能造成业务人员和开发人员之间的需求冲突和误解。在这种情况下,解决方案架构有助于消除分歧,并定义一个所有成员都能理解的标准。

功能性需求是用于满足用户需求并解决给定业务问题的主要需求的产品特性。当用户与软件应用程序交互时,他们直接与功能性需求交互。例如,在电子商务应用程序中,功能性需求的示例是用户查看其订单历史记录、搜索商品并将其添加到购物车以及使用首选付款方式进行付款。虽然功能性需求集合的主要责任人是产品经理,但解决方案架构师要确保其设计和实现方式能使其可以根据用户需求进行扩展并应对未来的变化。

解决方案架构定义了标准文档,它可以向非技术的利益相关者解释技术方面的内容,并定期进行更新。由于解决方案架构的设计横跨组织和不同的团队,它可以帮助发现隐藏的需求。解决方案架构师能确保开发团队了解需求,并保持进度周期。

一个好的解决方案架构不仅定义了解决方案设计,还以定性和定量产出的形式定义了成功标准,以确保交付质量。定性产出可以从用户的反馈中收集,比如用户的情绪分析;而定量产出可以包括技术端的延迟、性能、加载时间,以及业务端的销售数字。获得持续的反馈,并根据反馈进行调整,这是高质量交付的关键,应该在解决方案设计和开发的所有阶段予以遵循。

1.4.2 选择最佳技术平台

在快速发展和竞争激烈的市场中,我们所面临的最大挑战是一直保持使用最好的技术。如今,当你在全球拥有众多可选资源时,就必须非常谨慎地选择某种技术。解决方案架构设计过程可以有效解决这个问题。

技术栈的选型对于团队高效地实现解决方案起着重要作用。在解决方案架构中,我们应该采取不同的策略来选用各种平台、技术和工具。解决方案架构师应该对所有的需求进行仔细的验证,然后通过以原型的形式创建产品的工作模型,用多个参数对结果进行评估和研究,以找到最适合产品开发的方案。好的解决方案架构通过调查所有可能的架构策略,基于混合用例、技术、工具和代码复用,来解决不同工具和技术的深度问题,而这一切都来自多年的经验。最好的平台可以简化这个实施过程,然而,正确的技术选型至关重要。我们可以根据业务需求评估,以及该应用程序的敏捷性、速度和安全性来构建原型,从而选择最佳技术平台。

1.4.3 处理解决方案的约束和问题

任何解决方案都会受到各种约束的制约,并且可能因为复杂性或不可预见的风险而遇到问题。解决方案架构需要平衡多种制约因素,如资源、技术、成本、质量、上市时间、频繁变化的需求等。

每个项目都有其特定的目标、需求、预算和时间表。解决方案架构评估所有可能的关键路径,并分享最佳实践,从而在给定的时间和预算范围内实现项目目标。这是一种系统化的方法,所有的任务都与其之前的任务相互依存,为了成功实现项目,所有的任务都需要按顺序执行。一项任务的延迟可能会影响整个项目的时间表,并有可能导致组织失去发布产品的市场窗口。

如果在项目开发过程中出现问题,项目被延期的概率就会很高。有时,遇到的问题是技术或解决方案环境的局限性造成的。对于一个经过深思熟虑的解决方案架构来说,最常见的问题一般与非功能性需求有关:资源和预算可以缓解产品开发生命周期中遇到的问题。

解决方案架构师通过深入研究项目的每个组件来推动项目。他们想到了一个开箱即用的想法,以避免项目出现不可预见的问题,如灾难恢复中涉及的问题,并准备一个备用计划,以防主计划出现问题。他们通过选择最佳实践和平衡约束来评估执行项目的最佳可能方式。

1.4.4 协助资源和成本管理

在解决方案的实施过程中,总是存在着风险和不确定性。要了解开发人员将花费多少时间来修复一个故障是非常烦琐的。好的解决方案架构通过在优先级、不同的通信服务和每个组件的细节方面为开发人员提供所需的指导,从而控制成本和预算并减少不确定性。

解决方案架构还创建了用于使系统保持更新的文档,以及部署图、软件补丁、版本,并通过施行运行手册来解决经常出现的问题和业务连续性流程。它还通过考虑可扩展性、可伸缩性以及其他对开发环境有重要影响的外部因素,来解决间接影响解决方案构建成本的问题。

1.4.5 管理解决方案交付和项目生命周期

在解决方案架构的初始阶段需要进行大量的规划。解决方案架构从战略角度出发,在逐步推进解决方案实施的过程中,提供更多的技术实现投入。

解决方案架构确保了端到端的解决方案交付,并影响到整个项目的生命周期。它为项目生命周期的不同阶段定义了一系列流程和标准,并确保它在整个组织中得到应用,以便在实施推进过程中处理其他依赖关系。

解决方案架构考虑的是站在项目的整体视角不断同步其他依赖项,如安全性、合规性、基础设施、项目管理和支持,以便根据需要将它们纳入生命周期的不同阶段。

1.4.6 解决非功能性需求

在通常情况下,解决方案架构师必须处理应用程序中的非功能性需求(NFR)。为了项目的成功,解决它们是非常必要的,因为它们对整个项目和解决方案具有更广泛的影响。这些NFR可以决定用户群的成败,并处理解决方案中非常关键的方面,如安全性、可用性、延迟问题、维护、日志、隐藏机密信息、性能考量、可靠性、可维护性、可伸缩性和可用性。如果不及时考虑这些问题,就会影响项目的交付。

图1-3显示了一些最常见的NFR。

如图1-3所示,NFR包括解决方案架构的以下属性(根据项目的不同,可以有更多的NFR):

图1-3 解决方案架构的非功能性需求

灾难恢复:确保在任何意外事件发生时,解决方案能够正常启动、运行。

安全性与合规性:为解决方案设置安全网,使其免受外部攻击,如病毒、恶意软件等。同时,通过满足合规性要求来确保解决方案符合当地和行业法规。

高可用性:确保解决方案始终处于运行状态。

可伸缩性:确保解决方案能够在需求增加的情况下处理额外的负载。

应用程序性能:确保应用程序按照用户的期望加载,并且没有太多的延迟。

网络和请求响应延迟:在应用程序上执行的任何活动都应在适当的时间内完成,并且不应超时。

第3章将更深入地介绍以上这些属性。解决方案架构定义了产品开发的初始框架和解决方案的基础构件。在建立解决方案的同时,架构、质量和客户满意度始终是重点。解决方案架构需要通过概念验证来持续构建,并不断地进行探索和测试,直到达到预期的质量。