在企业架构领域,架构模式是解决常见问题的有效方案的重要工具。模式能够将构建模块置于具体情境中,为架构师提供以往已被证明有效的解决方案设计蓝图。本文探讨了TOGAF ADM背景下架构模式的概念,并提供了一个在业务应用开发背景下的架构模式示例。
什么是架构模式
“模式”被定义为:“在一个实际情境中曾有帮助的想法,很可能在其他情境中也有用”(来源:《分析模式——可重用的对象模型》,M. Fowler著)。
在TOGAF标准中,模式被视为将构建模块置于具体情境中的方式;例如,用于描述可复用的问题解决方案。构建模块是你所使用的内容:模式可以告诉你如何使用它们,何时使用、为何使用,以及在此过程中需要权衡哪些方面。
模式有望帮助架构师识别出以往已被证明能有效解决问题的架构和/或解决方案构建模块(ABB/SBB)的组合,并可能为未来提供有效解决方案的基础。
模式技术普遍被认为是由建筑学家克里斯托弗·亚历山大确立的一种有价值的架构设计方法,他在1979年出版的《永恒的建筑之道》一书中描述了这一方法。该书介绍了模式应用背后的理念,随后亚历山大又出版了另外两本书(《模式语言》和《俄勒冈实验》),进一步阐述了模式方法在架构中的特征与优势。
TOGAF ADM中的架构模式
架构开发方法(ADM)是开放组TOGAF标准的关键组成部分,为创建和管理企业架构提供了一个框架。在ADM中,架构模式是一种强大的工具,可帮助架构师识别已被验证的常见问题解决方案,并加速有效架构的开发。
从根本上说,架构模式只是对一种已被实践证明有效的可复用问题解决方案的描述。正如上述定义所示,模式是一种在某一情境中曾有帮助的想法,很可能在其他情境中也有用。模式可用于描述不同抽象层次的解决方案,从描述系统整体结构的高层架构模式,到描述单个组件如何实现的低层设计模式。
使用架构模式的关键优势之一是,它们可以帮助架构师识别出以往已被证明能有效解决问题的架构构建模块(ABB)或解决方案构建模块(SBB)的组合。这可以通过提供架构开发的起点,避免每个新项目都从零开始,从而节省时间和精力。
此外,架构模式有助于确保架构的一致性和连贯性。通过使用模式来描述常见问题的解决方案,架构师可以建立组织内通用的语言和概念体系。这有助于避免误解,并确保所有人朝着共同的架构愿景努力。
模式技术已被建筑学家克里斯托弗·亚历山大确立为一种有价值的架构设计方法,他在《永恒的建筑之道》一书中描述了这一方法。亚历山大的理念后来在另外两本书《模式语言》和《俄勒冈实验》中得到了进一步拓展。
在企业架构背景下,可以使用多种不同类型的架构模式。其中最常见的包括:
- 参考架构——它们描述系统或应用的整体结构,并为架构开发提供起点。
- 解决方案模式——它们描述如何通过组合ABB和SBB来解决特定问题。
- 流程模式——它们描述架构开发与实施的最佳实践和通用工作流程。
- 设计模式——它们描述单个组件应如何设计和实现,有助于确保架构整体的一致性和可维护性。
架构模式是希望开发高效且有效的企业架构的架构师的强大工具。通过识别已被验证的常见问题解决方案,架构师可以在节省时间和精力的同时,确保架构的一致性、连贯性,并与组织目标保持一致。
架构模式文档模板
1. 模式名称
模式的描述性名称,应能清晰传达所解决的问题。
2. 问题
对模式旨在解决的问题或挑战的描述。应清晰且具体,并为该模式提供上下文。
3. 上下文
对模式预期使用情境的描述。应包括组织信息、正在开发的系统或应用,以及任何相关的约束或限制。
4. 解决方案
对模式所提供的解决方案的描述。应清晰且具体,并说明如何使用该模式来解决第二部分中描述的问题。
5. 优势
对使用该模式优势的描述。应说明该模式如何有助于解决问题,并提供支持其有效性的证据。
6. 权衡
描述在使用该模式时必须做出的任何权衡或妥协。这应包括该模式的任何限制或缺点,以及必须管理的任何风险。
7. 实施
描述该模式如何实施。这应包括如何应用该模式的指导,以及任何相关的示例或用例。
8. 相关模式
列出可能与当前模式结合使用的相关模式。这应包括任何密切相关或可与当前模式结合使用的模式。
9. 参考资料
列出在开发该模式时使用的参考文献和资料。这应包括任何相关的出版物、文章或其他资源。
通过使用此模板,架构师可以创建清晰且有效的架构模式,这些模式可以轻松地在不同项目和情境中共享和重用。
业务情境下架构模式的一个示例
让我们考虑一个在业务应用开发背景下架构模式的示例。
假设一家公司需要开发一个新的基于网络的应用程序来管理客户关系。他们面临的一个关键挑战是如何确保该应用程序具有可扩展性,并能处理大量并发用户。
使用上述架构模式模板,我们可以创建一个模式来解决这个问题:
1. 模式名称: 可扩展的Web应用
2. 问题: 开发一个基于网络的客户关系管理应用程序,能够处理大量并发用户。
3. 上下文: 一家公司需要开发一个新的基于网络的应用程序来管理客户关系。该应用程序将被大量用户访问,必须具备可扩展性以应对使用高峰期。
4. 解决方案: 可扩展的Web应用模式提供了一种开发能够处理大量并发用户的基于网络应用程序的解决方案。该模式的关键要素包括:
- 负载均衡:将传入的请求分布在多个服务器上,以确保没有单个服务器过载。
- 缓存:使用内存缓存来存储频繁访问的数据,以减轻数据库的负载。
- 水平扩展:在基础设施中增加额外的服务器以应对增加的负载。
- 数据库分片:将数据库拆分为更小的分区,以在多个服务器之间分配负载。
5. 优势: 通过使用可扩展的Web应用模式,公司可以确保其应用程序能够处理大量并发用户,而不会出现性能问题或停机。这可以通过确保应用程序始终可用来提高客户满意度并增加收入。
6. 权衡: 可扩展的Web应用模式需要额外的基础设施和资源来实施,这可能会增加成本。此外,实现负载均衡和缓存可能会增加应用程序架构的复杂性。
7. 实施: 要实现可扩展的Web应用程序模式,公司应考虑使用NGINX之类的负载均衡器,采用Redis或Memcached等技术实现缓存,并利用AWS或Azure之类的云平台横向扩展应用程序。数据库分片可以使用MongoDB之类的数据库技术来实现。
8. 相关模式: 与可扩展Web应用程序模式结合使用可能有用的其他模式包括:
- 微服务架构:将应用程序分解为更小、更易管理的服务,这些服务可以独立扩展。
- API网关:为访问应用程序服务和管理流量提供单一入口。
9. 参考资料: 在开发可扩展Web应用程序模式时可能有用的参考资料包括:
- 高可扩展性(博客):
- 卡爾·亨德森所著《构建可扩展的网站》(书籍)
通过使用此架构模式,公司可以在开发用于管理客户关系的可扩展Web应用程序方面节省时间和精力。该模式为一个常见问题提供了经过验证的解决方案,且可轻松适应公司的特定需求和限制。
单点登录情境下的架构模式示例
以下是单点登录(SSO)情境下的一个架构模式示例:

1. 模式名称: 单点登录(SSO)
2. 问题:组织内的多个应用程序要求用户分别进行身份验证,导致用户体验不佳,并增加了管理用户账户的行政负担。
3. 上下文: 一个组织拥有多个需要用户分别进行身份验证的应用程序,这导致用户感到沮丧和困惑。该组织希望让用户只需一次认证即可访问所有应用程序,无需重复输入凭证,从而提供无缝的用户体验。
4. 解决方案: 单点登录模式提供了一种解决方案,使用户只需一次认证即可访问多个应用程序,而无需重复输入凭证。该模式的关键要素包括:
- 身份提供者(IdP):一个集中式服务,负责对用户进行身份验证,并提供可用于访问其他应用程序的令牌或断言。
- 服务提供者(SP):一个依赖IdP进行用户身份验证的应用程序或服务,并根据IdP提供的令牌或断言来提供访问权限。
- 标准协议:使用SAML、OAuth或OpenID Connect等行业标准协议,以实现IdP与SP之间的通信。
5. 优势: 通过使用单点登录模式,组织可以提供无缝的用户体验,并减少管理用户账户的行政负担。用户只需认证一次,即可访问所有应用程序,而无需记住多组凭证。这可以提高用户满意度并降低技术支持成本。
6. 权衡: 实施单点登录模式需要额外的基础设施和资源,这可能会增加成本。此外,与现有应用程序集成可能需要定制开发或配置,这会增加复杂性。
7. 实施: 要实现单点登录模式,组织应选择一个支持行业标准协议(如SAML、OAuth或OpenID Connect)的身份提供商。服务提供商应配置为依赖身份提供商进行身份验证和授权。现有应用程序可能需要与身份提供商集成,这可能需要自定义开发或配置。
8. 相关模式: 与单点登录模式结合使用可能有用的其他模式包括:
- 联合身份:将单点登录模式扩展以支持跨组织或域的身份验证。
- 基于属性的访问控制:利用身份提供商提供的用户属性来控制对应用程序内资源的访问。
9. 参考资料: 在开发单点登录模式时可能有用的参考资料包括:
通过使用此架构模式,组织可以通过实施单点登录解决方案来提升用户体验并降低管理开销,使用户无需重复输入凭据即可访问多个应用程序。该模式为一个常见问题提供了经过验证的解决方案,且可轻松适应组织的具体需求和约束。
企业架构模式与软件架构模式
企业架构模式与软件架构模式是相关但不同的概念。
软件架构模式专注于单个软件系统或应用程序的设计与实现。它们为系统软件组件(如模块、接口和交互)的设计与实现提供了一套指导原则和最佳实践。
另一方面,企业架构模式专注于组织内多个软件系统和应用程序的设计与协调。它们为设计和实现企业整体架构(包括业务流程、数据结构和技术基础设施)提供了一套指导原则和最佳实践。
企业架构模式通常解决系统集成、互操作性和可扩展性等问题,这些问题通常不在软件架构模式的覆盖范围内。它们还考虑软件系统部署的更广泛业务背景,旨在使IT系统与组织的目标和宗旨保持一致。
企业架构模式的例子包括面向服务的架构(SOA)、业务流程管理(BPM)和企业集成模式(EIP),而软件架构模式的例子包括模型-视图-控制器(MVC)、微服务和分层架构。

软件架构模式
软件架构模式是软件设计中常见问题的可复用解决方案。它们通过定义一组规则和指导原则,为软件系统的设计与实现提供结构化方法,以确保系统具备鲁棒性、可扩展性和可维护性。
软件架构模式提供了系统的高层视图,识别其关键组件及其交互方式。它们定义了这些组件之间的关系,并提供了一套规则,说明它们应如何通信和协同工作。
通过使用软件架构模式,开发人员可以通过复用经过验证的常见问题解决方案来节省时间和精力,而不是在每个新项目中从零开始。这有助于提高最终软件的质量,同时缩短开发时间和成本。
软件架构模式的一些例子包括模型-视图-控制器(MVC)、微服务、分层架构、面向服务的架构(SOA)和事件驱动架构(EDA)。
以下是一些流行的软件架构模式:
- 模型-视图-控制器(MVC)模式:该模式将应用程序分为三个相互关联的组件——模型、视图和控制器——以帮助管理复杂性并实现关注点分离。
- 微服务架构:该模式将应用程序分解为更小的、可独立部署的服务,这些服务可以分别进行开发、部署和扩展。
- 分层架构:该模式将应用程序划分为逻辑层,每一层负责应用程序功能的特定方面,以实现模块化和关注点分离。
- 面向服务的架构(SOA):该模式是一种构建分布式系统的架构方法,以服务作为基本构建模块。
- 事件驱动架构(EDA):该模式强调对系统内发生的事件进行生成、检测、消费和响应,从而实现更灵活和可扩展的架构。
- 领域驱动设计(DDD):该模式鼓励使用一种通用语言和模型来描述问题的领域,从而实现更易于维护和理解的代码库。
- 六边形架构:该模式以一个核心为中心构建应用程序,通过端口和适配器实现核心与外部系统之间的通信。
- 命令查询职责分离(CQRS):该模式将应用程序的读取和写入模型分离,从而实现更高效的查询和更好的可扩展性。
- 响应式架构:该模式是一组设计原则,旨在构建能够应对环境变化、具备弹性、可扩展性和响应性的系统。
- 整洁架构:该模式强调应用程序不同层之间的关注点分离,目标是生成易于阅读、测试和维护的代码。
摘要
架构模式是企业架构中一种宝贵的设计技术,为架构师提供了应对常见问题的有效解决方案。通过提供经过验证的、可成功实施的解决方案蓝图,架构模式可以帮助架构师节省时间和资源,同时提升解决方案的整体质量。在本文中,我们以业务应用开发场景为例,具体介绍了单点登录(SSO)架构模式的应用。通过采用单点登录模式,组织可以提供无缝的用户体验,降低用户账户管理的行政负担,同时提升用户满意度并减少客服支持成本。











