ThoughtWorks现代企业架构框架白皮书

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 现代企业 架构白皮书 数字化转型底层方法论
2. 目录 1. 引言:再提“业务平台化” - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4 1.1“中台”概念的提出、流行到深水区实践, 折射出本轮数字化转型中以“业务平台化”为代表的企业现代化趋势 - - - - - - - - - - - - - - - - - - - - - 5 1.2 再提业务平台化,是因为深水区实践中, 新的问题将业务平台化内涵向前演进 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 8 1.3 企业架构设计方法,是有效的工作方法, 经典的企业架构框架已不足够应对业务平台化中的新问题 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 11 1.4 ThoughtWorks 在经典企业架构框架基础上, 面向以业务平台化为代表的企业现代化转型中的新问题,发布现代企业架构框架 - - - - - - - - - - - - 13 2. 现代企业架构框架(Modern Enterprise Architecture Framework - MEAF) - - - - - - - - - - - - - - - - - - - - - - - - 14 2.1 企业架构 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 15 2.2 企业架构框架 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 15 2.3 现代企业架构框架 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 16 2.4 现代企业架构框架设计原则 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 17 2.5 现代企业架构框架元模型总览 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 18 3. 现代企业架构框架 — 业务架构 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 20 3.1 业务架构元模型综述 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 20 © ThoughtWorks, Inc. All Rights Reserved. 2
3. 3.2 业务架构元模型应用 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 22 3.3 业务架构元模型补充说明 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 39 4. 现代企业架构框架 — 应用架构 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 42 4.1 应用架构元模型综述 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 43 4.2 应用架构元模型应用 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 43 5. 现代企业架构框架 — 数据架构 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 52 5.1 数据架构元模型综述 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 53 5.2 数据架构元模型应用 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 53 6. 现代企业架构框架 — 技术架构 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 58 6.1 技术架构元模型综述 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 59 6.2 技术架构元模型应用 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 59 7. 总结 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 68 8. 参考文献 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 69 © ThoughtWorks, Inc. All Rights Reserved. 3
4. 1 引言: 再提“业务 平台化” 2020 年是“黑天鹅”集中爆发的一年,也是数字 本轮以数字化驱动业务创新与重塑,越来越清晰的 以加速的态势进入到各行业、各企业的战略主航道。 领域。尽管不同的行业、组织和企业,对上述领域 化新一波浪潮涌起的一年。数字化转型的声浪正在 以数字化的方式对于业务进行创新与重塑,正在成 为企业新的发力点和主战场。 多项研究调查显示,60% 以上的受访高管们 ( 参考 聚焦于:数字体验、业务平台化、智能化与云三大 的表述和内涵界定可能会存有差异,或仍有其他特 定领域的特征显现,但在我们的观察中,这三大领 域,已在跨行业范围内形成了较为广泛的共识。 文献 1、2),在疫情之后,都充分意识到数字化的 本白皮书将首先聚焦于“现代企业 — 业务平台化” 速企业的数字化步伐。而疫情期间,快速拥抱数字 的行业和企业当中,反复观察和接触到、并致力于帮 必要性和对于企业带来的机遇,并表示正在着手加 化的组织,所展现的绩效水平在其所在行业的横向 对比中,也均显著优于竞争对手(参考文献 2)。 的趋势。我们再提“业务平台化”,源于我们在不同 助解决的一系列新问题,这些问题背后所体现的趋势 和解决的思路与方法,将赋予现代企业新的内涵。 © ThoughtWorks, Inc. All Rights Reserved. 4
5. 1.1 “中台”概念的提出、流行到深水区实践, 折射出本轮数字化转型中以“业务平台化”为代 表的企业现代化趋势 1)以互联网巨头中台化为原点,延伸到以 零售、金融、电信为代表的传统行业数字 化建设,中台实践正在进入到深水区 从 2015 年开始,以阿里巴巴为代表的各互联网巨 头,陆续开启中台化进程(如图 1)。随后,“中台” 理念和相关实践开始快速向各行业渗透和发展。 也具备较好的适配基础。另一方面,围绕电商业务 模式,一系列厂商将其中标准化程度较高的部分快 速“中心化”,如“商品中心”,“订单中心”,“支 付中心”等,以“中台”的形态进行实施,也在一 定程度上促进了中台在零售行业的推广。而零售行 业的中台模型,因其本质是对于交易合同及履约的 业务抽象,具备较广的适用性,也常被其他行业借 鉴和扩展。 零售行业 得益于阿里在零售行业的渗透和影响,以及电商在 过去十年的高速发展,零售行业最先试水“中台”。 一方面,阿里本身将中台理念与实践结合云服务向 各行业输出,同时零售行业因业务模式的相似性, 金融行业 对于金融行业,打造中台能力,无论在银行、证券 或是保险等细分行业,均已是高度共识的战略举措 公司 时间 中台相关事件 阿里巴巴 2015 年 12 月 宣布全面启动“中台战略,构建符合大数据时代的“大中台、小前台”组织机制和业务机制 腾讯 2018 年 9 月 组织架构调整,“扎根消费互联网,拥抱产业互联网”,在技术上开源节流,自研上云,全 面建设中台 美团 2018 年 11 月 尝试打通各个业务之间的数据,实现用户端的账户统一,实现用户数据中台 京东 2018 年 12 月 发布组织调整,采用“中台”的组织概念,中台部门已 TOB 为主,包括 3C 电子及消费品零 售事业群、时尚居家平台事业群、生活服务事业群、技术中台和数据中台、商城用户体验设计部、 商城市场部等六个核心部门 字节跳动 2019 年 3 月 搭建“直播大中台”,“直播大中台”将抖音、西瓜视频和火山小视频三个短视频产品抽出、 合并,支撑字节跳动旗下的所有直播业务 资料来源:腾讯科技、公司公告,中银国际证券 ( 图 1.1-1 互联网企业的中台化大事件 )(参考文献 3) © ThoughtWorks, Inc. All Rights Reserved. 5
6. 之一。(参考文献 4、5)当行业越来越重视客户一 致性体验,开始打造开放银行,深度运营客户,构 建生态的同时,对于长期掣肘金融行业发展的历史 参与了各行业的数字化建设中、尤其是以上三大行 业中领跑企业的中台建设过程。 遗留问题,企业也深刻意识到对于此类问题解决的 在我们的经验中,不同的行业,中台有着不同的最 务创新、客户和业务数据孤岛现象严重、组织架构 列举一些各自领域关注的方向: 迫切性。如庞大的遗留系统难以响应前端快速的业 壁垒高筑等。而中台建设被认为是行业普遍认同的 求解之道, 根据恒生调研,半数金融机构正在考虑 佳适配领域,这里从前面提到的三大行业中,我们 • • 对 IT 新技术与工程实践的关注和引入。 过去 5 年, • 统的容器化及服务化改造。在此基础上,加之“新 基建”顶层设计的牵引和推动,行业整体的 IT 基础 设施进一步深化,中台建设作为突破点和抓手之一, 在营销、服务、网运等多层面展开,并不断取得进展。 2)ThoughtWorks 在以上行业中台建设 的深入实践认为,“中台”不是目的,而 是手段,“平台化”向业务的再演进,是 本轮数字化建设中的重要趋势 回顾 ThoughtWorks 对于中台的实践,我们持续向 行业输出一系列思考和洞见的同时,也广泛且深入 商业银行与金融机构:关注在特定业务(如信贷、 资管)场景的能力抽取与模式复用,实现对于 金融产品的快速创新的加速,和金融电商化的 围绕业务响应力提升和研发效能改进的目标,电信 体系的敏捷转型,DevOps 体系搭建、大型核心系 全球统一运营下的核心业务能力针对中国市场 场景和业务发展 伴随通信技术的快速换代所带来的新的市场特征, 行业 IT 基础设施经历了新一轮的翻新和升级:研发 跨国零售企业:关注如何通过中台建设,实现 的复用与差异化适配,以适应中国的特有业务 电信行业 以 IT 基础设施作为重要支柱的电信行业,始终保持 建设,实现集中管控前提下营销能力在多品 牌复用 建设业务中台,90% 金融机构认为未来两至三年会 建设业务中台。(参考文献 4、5) 零售多品牌集团型企业:关注如何通过中台 渠道能力运营的加强,为生态建设奠定基础 • 通信企业:关注如何实现跨业务线之间的公共 能力的识别,沉淀,形成统一管控及支撑,实 现产品平台化,更灵活的适配不同场景的需求 与快速响应。 这些领域中,中台的差异化适配和建设,印证了中 台实践已进入深水区。 而与此同时,中台实施“失败”的案例也不绝于耳, 行业对“中台”观点,出现清晰的分化。这里,我们 不展开对于中台实施失败案例的讨论与分析,而将关 注点放在更加底层的商业逻辑和方法论沉淀上来。 © ThoughtWorks, Inc. All Rights Reserved. 6
7. 在我们看来,中台建设的成功,或者“失败”,甚至“去中台化”声音背后,本质上是一致的商业逻辑: 中台以“复用”之名起源,因此,一些案例中,很容易走回从前软件套 中 台 建 设“ 不 是” 广 义 软 件 套件实施: 件实施的思路,以“套件化”的模式,加上一定程度的开放和定制,实 现“复制”。“复制”、“复用”一字之差,却意味着从规划到落地截 然不同的方法和实现。由此带来的问题是,曾经套件化实施过程中围绕“削 足适履”出现过的问题、走过的弯路,在中台规划与建设中,如果仍以“中 台产品套件”实施方式,会不可避免的再次出现。 中台建设“是” 对于企业业务 模式端到端的 深度分析、建模 与复用: 中台究竟在复用什么?我们给出的答案是:中台是针对于“商业模式”和“业 务模式”的抽象与复用。背后体现的是企业希望通过对于自身商业模式的 不断思考与认知,再通过自身业务模式的抽象与沉淀,实现跨地域、跨用户、 跨场景、跨领域的扩展与复用,支撑企业业务的快速拓展与创新,也体现 和契合了平台向业务的再演进过程。 借用我们一位咨询师的话:“看上去的能力复用是乐高组装,但真实的能力复用其实是器官移植,需要的是一 场外科手术。” 因此,我们认同这样的观点:“中台”是手段、过程,不是目的本身。回归本源,从问题与价值出发,“平台化” 向业务的再演进,是这一轮数字化建设浪潮中需要关注的重要趋势,也是企业现代化进程中的关键步骤。 © ThoughtWorks, Inc. All Rights Reserved. 7
8. 1.2 再提业务平台化,是因为深水区实践中, 新的问题将业务平台化内涵向前演进 “平台化”是从信息化到数字化时代,每一轮 IT 建 在的用户或者客户体验的割裂、数据孤岛、IT 翻新 设都会提及的主题之一。而当平台沿着历史发展的 周期长等固有问题。 和建设的难度也成指数型增加,涌现出了一系列新 同时,当业务线不断尝试新的业务模式,或对于已 趋势继续向业务的“逼近”过程中,对于平台抽象 问题。 对于这些问题的思考和解决方案的探索,也将赋予 业务平台化这个趋势以新的内涵和意义,同时也是 我们设计和发布新的企业架构框架的起心动念。这 些问题的“新”意,更多的体现在“how”上,而 不再仅仅是“what”,所以我们以“如何”的句式 来逐一总结和简述: 1)如何抽离多业务线共享的解决方案和能 力,集中管控和演进,以避免重复投资? 新业务如何基于企业已有的解决方案和 能力快速组装上线,以支撑业务快速迭代 创新? 有模式进行更快的试验、调整与扩展。对于 IT 支撑 的响应力也提出了更高的要求。固有的系统搭建或 者产品部署模式,越来越不足以提供及时的响应, 且在“快速试错”、“小步快跑”的创新场景应对下, 成本高昂。 因此,如何抽离多业务线共享的解决方案和能力, 集中管控和演进,以避免重复投资?新业务如何基 于企业能力快速组装上线,以支撑业务快速迭代创 新?是需要解决问题。进一步拆解,我们认为需要 回答: • 多条业务线、或者多个业务单元并行发展,IT 建设 针对不同业务的差异性,如何在“模式”和“能 力”基础上进行扩展? • 会随着业务边界、组织边界,不可避免的进一步分 资甚至多重投资的浪费 ;另一方面也在加剧本就存 抽象并沉淀了业务能力之后,如何在新的业务 场景中,识别、复用已有能力,应用、数据、 技术及组织应该如何予以支撑? 化,也加剧了 IT 部门进行统一管控的困难。 一方面,在很多场景中,这样的分化带来了双重投 力”模型,以对业务进行合理的抽象,进而识 别相似度,抽象与提炼可复用的业务模式;而 今天,业务发展和 IT 建设的绑定比以往任何时间都 更加紧密,而当大型企业的业务涉猎已足够广泛, 针对不同的业务深度,如何设计“模式”与“能 • 以上的工作过程,是否有较好的工作实践和参 考模型? © ThoughtWorks, Inc. All Rights Reserved. 8
9. 2)如何合理地划分 IT 系统边界,以得到 随“需”而变的响应力 除了能力复用外,另一个提升 IT 支撑响应力的关键 是,提升 IT 系统各组成部分的自治性,使得变更能 够相对独立的,在更小的边界范围内,以小步快跑 的方式发生,同时还需要保持一定的一致性,使整 体架构做到“形散神聚”。 因为无论是创新也好,集中管控也好,虽然变化速 率不同,但变化始终存在,既然变化不可避免,我 们应将精力投入到应对变化上。而一个清晰的应用 边界划分,可以对于业务能力通过对于知识边界的 解耦,实现知识的黑盒复用,对于变化的响应非常 有帮助。 在我们的经验中,应用边界划分不合理会对应对变 化产生明显的负面作用。一般来说,边界的粒度过 粗,容易产生功能、运行层面的变更冲突,而边界 的粒度过细,则带来了额外的变更成本和性能开销, 这里对各种负面作用暂不作展开,但它们的共同点 是都会拖慢 IT 支撑的响应力或稳定性。 因此,“如何划分 IT 系统的应用边界,以合理的布 局更好地应对变化”是需要解决的问题。进一步拆 解,我们认为需要回答: • 如何划分应用构建块的逻辑边界,使其尽可能 • 如何组合应用构建块成为合适粒度的独立可 • 如何描述、留存以上决策的结果和依据,当变 化发生时,通过溯源做出优质的新应对? 3) 如何适当拆分过于集中的分析类数据处 理职责,以缓解规模化数据分析处理瓶颈? 长久以来,业界对数据架构的通用做法是:对于运 行类(Operational)和分析类(Analytical)场景, 应该使用不同的设计方法和技术支撑。 运行类场景以业务事务为主线,关注点在于业务事 务运作证据的完整性和一致性,以及确保各类数据 在各业务单元间高效、准确地传递,实现跨业务单 元的事务推进以及对于业务溯源的支撑。 分析类场景则需要对内、外部数据进行收集和加工, 用来度量业务运行表现、尝试分析产生偏差的原因, 甚至结合机器学习等技术给出对于未来发展趋势预 测和判断,尝试构建数据驱动运营的企业组织。 数 据 想 要 形 成 分 析 类 价 值, 背 后 需 要 经 过 摄 取 (Ingest)- 加 工(Process)- 能 力 包 装(Serve) 三大工序,其又可以进一步分为数据仓库、数据湖、 数据与 AI 平台、数据中台等构建模式,它们都有着 各自不同的适用场景和技术栈,针对这些模式的差 异我们暂不作展开。 职责单一、接口规范明确,容易变更和组装? 由于分析类场景所要求的方法和技术与运行类场景 部 署 单 元, 尽 可 能 减 少 功 能、 运 行 层 面 的 变 将分析类数据处理工作和其背后的复杂性打包成为 更冲突? 有着显著的不同,许多企业组建了专职的数据团队, 一个黑盒,提供端到端的统一的数据类企业级服务 与支撑。 © ThoughtWorks, Inc. All Rights Reserved. 9
10. 这个模式对于业务场景简单的企业环境工作得不 另一方面,在平台型技术架构的设计中,作为多业 显疲态。一方面,随着 IT 建设加速,数据源和分析 架构设计所需覆盖的规模、应对的复杂度今非昔比。 错,但对于多业务线、业务平台化的企业环境已初 类场景的数量激增,对数据类服务的响应力提出了 更高要求。另一方面,想要提供高质量的数据类服 务,除了分析类数据的专业技能,还要求对于业务 场景、现有应用软件的深入理解。如果所有工作仍 然只由专职的集中式团队一肩挑,团队带宽的限制 必然会拖慢响应力。 务线、多应用、多数据场景落地的技术基座,技术 加之“富”技术条件的加持,技术架构的设计困难 度正呈现指数级增长。而一直以来,本质上是强依 赖架构师的经验和能力的技术架构设计方法和过 程,在这样的语境下,一系列挑战和问题再次凸显: • 负,使其可以将精力投入到高价值的分析类场景中。 研发成本 • 受益于云原生架构的兴起与发展,新技术的涌现和 架构设计采用的技术和工具过于超前,超出 团 队 成 员 技 术 水 平, 造 成 落 地 难 度 高, 新 成 员上手速度慢,进而对整体进度和实施效果 造成影响 4)如何在富技术时代进行平台型技术架构 选型及设计? 析意识,过早的进入架构设计,导致系统复杂 度变高甚至过度设计,为开发落地带来额外的 因此,我们认为需要探索的是如何适当拆分过于集 中的分析类数据处理职责,为集中式的数据团队减 对于架构需求把握不足或者没有架构需求的分 • 不断成熟,及技术工具的极大丰富,技术架构设计 的灵活度和效率都得到了显著提升。 架构设计过程时间长,完成后团队就不再愿意 对设计方案继续调整和迭代,当技术发展变化 很快时,技术架构方案容易进入“完成即落伍” 的困局。 因此,我们认为架构师们比以往,更需要这样一个体系: 系统性的分析 架构需求 结构化的设计 架构方案 沉淀可复用的 架构经验 © ThoughtWorks, Inc. All Rights Reserved. 10
11. 1.3 企业架构设计方法,是有效的工作方法, 经典的企业架构框架已不足够应对业务平台化 中的新问题 1)以企业架构框架方法进行业务平台设 计,是有效的工作方法,且各主流方法各 有侧重 业内越来越普遍的采用企业架构框架,作为业务平 台化整体规划指导和方法,这是有效的。因为各类 TOGAF:强调企业架构全生命周期治理 DoDAF/FEAF-II:面向政府机构的投资组合管理, 注重 ViewPoint BIAN: 面向银行业,有银行业开箱即用参考模型 企业架构框架的元模型,大体都可以归结为四类视 需要说明的是,以上的侧重总结,仅代表我们在项 尽管不同框架在具体的层级划分、及各层结构下的 上都是完备的,在各自的领域和适用场景中也得到 图,即业务架构、应用架构、数据架构和技术架构, 内容涵盖可能会略有不同。这样的结构较好的匹配 了业务平台设计的问题域。 同时各类企业架构框架的工作逻辑相似,均是从愿 景与业务目标出发自顶向下的贯穿设计,并保持从 业务到技术的一致性,这样的工作逻辑与业务平台 从设计到落地的逻辑一致。 在此基础上,不同的企业架构框架,由于产生的背 景和发展过程的不同,形成各自的侧重点或行业属 性,这也从另外一个方面加强了其适用性。例如: Zachman:侧重从利益相关者的六个视角来描述 企业 目操作中的理解,实际上,每一种框架在框架设计 了广泛的应用。 2)经典的框架更注重概念的完整性,工程 实操性仍显不足,且对业务平台化的新问 题均没有特定的设计和考虑 下面这张表格,体系化的从概念、建模、流程的角度, 对若干经典企业架构框架进行对比,从中我们可以 清晰的解读出,在 Concept(概念)层面的各项评 估中,各框架普遍的评定都在 H(高)和 M(中), 而从 Moddling(建模)开始,到 Process(流程), 评定开始从 M(中)转向 L(低),其中和落地的 相关性越高的评估项,普遍的评定都位于 L(低)。 © ThoughtWorks, Inc. All Rights Reserved. 11
12. ( 图 1.3-2 企业架构框架对比 )(参考文献 6) 这张表格出自 2015 年的一篇学术文章(参考文献 6),在这之后的 5 年时间里,各框架也均不同程 • 度地对实操的内容进行了补充和增强。但从我们的 应用架构层:在宏观规划层面,如何有效的划 分和组织能力,如何划分 IT 系统的物理边界, 以合理的布局更好地应对变化,在局部设计层 实际的跟进研究和项目经验来看,各经典框架在项 面,如何在最大化复用效果的同时,保障对差 目工程实操性中仍显不足。这可能也与企业级架构 异化需求的响应力? 框架的定位相关,其大多数的定位都偏向于战略规 • 数据架构层:如何适当拆分过于集中的分析类 模层面都没有进行细粒度展开。 • 技术架构层:如何在富技术时代进行平台型技 划和组织级管理与治理,对于架构在具体设计和建 同时,在第二小节中所提及的,在业务平台化的背 景和趋势下我们所面临的新问题,也可映射到企业 架构框架元模型的四个层次中: • 业务架构层:如何抽离多业务线共享的能力, 以避免重复投资?新业务如何基于企业能力快 数据处理职责,缓解规模化瓶颈 术架构设计 这些在当前时代背景下广泛存在的新课题,从各经 典企业架构框架中也无法直接找到针对性的设计参 考和考量依据,需要我们进一步思考、实践与提炼。 速组装上线,以支撑业务快速迭代创新? © ThoughtWorks, Inc. All Rights Reserved. 12
13. 1.4 ThoughtWorks 在经典企业架构框架基础 上,面向以业务平台化为代表的企业现代化转 型中的新问题,发布现代企业架构框架 本白皮书提出的现代企业架构框架就是在这样的背 与此同时,这套框架力求实操,对于每一层模型的 过程中的背景及挑战,从实践中探索和总结出的一 过程作为内容串联主线。因此,每一个部分的详细 景下,针对以业务平台化为代表的企业现代化转型 套轻量级、敏捷、可落地的企业架构框架方法。 整体框架方法设计保持对经典企业架构框架优秀设 计部分的传承,从框架元模型整体结构上,仍遵循 讲解,我们都以问题作为牵引,以解决问题的实操 介绍中,我们按照这样的顺序进行讲解,先给出该 层元模型概览,之后回顾问题,以问题的解决过程 作为牵引,讲解元模型的应用。 经典企业架构框架的最佳实践,延续基于业务架构、 应用架构、数据架构及技术架构的架构视图分类。 而针对业务平台化的特征及新问题,对各层元模型 内容,进行了扩展和再定义。 © ThoughtWorks, Inc. All Rights Reserved. 13
14. 2 现代企业架构框架 ( Modern Enterprise Architecture Framework - MEAF ) 企业架构(Enterprise Architecture)始于 20 世纪 了阶段性成功。但同样也是因为缺乏对于企业级架 作为一门关键的 IT 学科领域,经过多年的发展也催 展和业务持续拓展阶段,产品重复建设、技术与架 60 年代,截至目前已有接近六十年的发展历程, 生了各类广泛应用于各行业和应用场景的框架与方 法论工具,例如 Zachman、TOGAF、DoDAF 等, 这些企业架构框架也一直作为重要的指导方法和工 具,被应用于各类企业和组织的顶层 IT 规划与设计。 但随着近些年互联网的高速发展,“互联网速度” 和“产品为王”的理念直入人心,也导致企业将更 多注意力和资源聚焦于产品(系统)架构层面,关 注于如何通过合理的系统架构设计帮助产品快速抢 占市场和用户,获得成功。 这样的产品驱动型策略,切实帮助了很多企业快速 通过核心产品的构建和发布,迅速占领市场,获得 构的整体规划与设计,当企业逐渐深入到可持续发 构大规模异构等问题逐渐显现,给企业带来了越来 越大的负担,拖慢了企业持续发展和持续创新的速 度。 因此,企业架构重新被大家关注和重视,以互联网 巨头为代表开始了一系列的企业级架构重新规划和 治理的工作,其中“中台战略”就是典型的代表。 这样的趋势也正在从互联网行业蔓延到其他行业, 掀起了一波企业级架构规划和治理的新浪潮。 至此,企业架构和企业架构框架又重新回归大家的 视野,成为企业架构治理和企业平台化转型,乃至 企业数字化转型的重要理论依据和指导工具。 © ThoughtWorks, Inc. All Rights Reserved. 14
15. 2.1 企业架构 在展开描述企业架构和企业架构框架之前,首先追 根 溯 源, 了 解 一 下 架 构 的 含 义, 在 ISO/IEC/IEEE- 42010:2011 标准中对于架构的定义是: 架构是系统在其所处环境中的基本概念或属 性,体现为它的元素、关系,以及系统设计 和演进的原则。 架 构 这 个 概 念 源 于 建 筑 等 其 他 行 业, 随 着 计 算 识别其中的关键概念及其关系,再通过数字化的手 段在数字化世界里重新构建、模拟和还原。 而企业架构同样作为一种架构体系,也依然符合对 于架构的概念定义,只是将关注点从系统级别提升 到了企业级别,即企业架构关注的是在企业级别的 各种视角(viewpoint)及其视图(view),其中的 基本元素及其关系。 机 行 业 的 兴 起, 这 样 的 概 念 也 被 引 入 到 了 信 息 通过对于企业架构的规划和设计,可以帮助企业构 领 域 大 体 上 主 要 分 为 两 个 粒 度, 即: 系 统 架 构 化的手段帮助其实现期望的战略目标和业务结果, 技 术 行 业, 用 于 IT 系 统 的 设 计。 在 信 息 技 术 (System Architecture) 与 企 业 架 构(Enterprise Architecture)。 信息技术领域的架构设计本质是一个认知、抽象与 构建的过程,即通过对于物理世界的认知与抽象, 建整体的数字化策略,规划数字化项目,通过数字 形成企业的数字化顶层规划与设计,指导企业的 数字化转型过程。而这个企业架构规划的过程, 也 被 称 为 企 业 架 构 规 划 (enterprise architecture planning, EAP)。 2.2 企业架构框架 很多人将企业架构(Enterprise Architecture) 与企业架构框架( Enterprise Architecture Framework)的概念混淆,就像很多人容易将敏捷 (Agile)与轻量级软件开发方法(如Scrum)混淆 一样,其实这是两个完全不同的概念。 © ThoughtWorks, Inc. All Rights Reserved. 15
16. 企业架构是一门领域学科,而企业架构框架(例如 在众多的企业架构框架方法之中,最被大家熟知通 论,企业架构与企业架构框架的关系,就类似于敏 业企业架构框架的标准方法。而近些年大量新涌现 XP)的关系一样。 或是对于 TOGAF 进行扩展,或是对于 TOGAF 进行 常见的 TOGAF)才是一种具体可实施的框架和方法 捷(Agile)与轻量级软件开发方法(例如 Scrum、 用型企业架构框架当属 TOGAF,其已经成为通用行 的轻量级企业架构方法,也大多从 TOGAF 发展而来, 细化和补充。 ( 图 2.2-1 企业架构框架列表 ) ( 参考文献 10) 2.3 现代企业架构框架 虽然如上所述,像 TOGAF 这样的经典企业架构框架从诞生到今已经历了 20 多年的发展,在发展和演进过程 中也与时俱进地加入了对于像 SOA 等新的架构模式的支持。但在具体应用框架方法实践与解决现在化企业所 © ThoughtWorks, Inc. All Rights Reserved. 16
17. 面临的问题时,例如如何在云与分布式时代,基于 因此,不破不立,能否在充分吸收经典企业架构框 完全匹配。 业数字化发展的需求和新技术新趋势,勇于跳出 平台思维进行企业架构设计的过程中仍显繁重且不 终究其原因,这类经典企业架构框架所诞生的时代 仍处于信息化时代的早期,设计之初主要面对和解 决的是企业信息化的问题,虽然也在持续保持演进 和发展,但大多以补丁(例如通过元模型扩展的方 式)的方式予以支持,并不能做到与最新的企业发 展理念和技术趋势无缝融合与原生支持,尤其是在 以平台型为主要特征的现代企业架构的规划与设计 过程中,最典型的就是国内目前比较广泛采用的中 架的优秀思想和最佳实践的前提下,融合最新的企 TOGAF 的限制,从问题出发,回归第一性,重新思 考和构建一个新的轻量级企业架构框架,切实可以 解决企业在向现代企业架构演进过程中面临的问题 和挑战,就成为我们重点关注和研究的领域。通过 几年的研究实践,也逐渐形成了一套轻量化、敏捷 可落地的企业架构框架方法,我们把它定义为:现 代企业架构框架(Modern Enterprise Architecture Framework)。 台架构规划过程中,略显乏力。 2.4 现代企业架构框架设计原则 当我们在总结和提炼现代企业架构框架(MEAF)时, 为了达到此目标,无论是企业级的应用架构还是企 之初就一直遵循以下框架设计原则: 为目标,而企业级的业务架构要能直接对应和反应 为了保证框架设计的有效和易于实施,从框架设计 • 战 略 与 业 务 价 值 驱 动( 业 务 驱 动 over 技 术 驱动) 战略与业务价值驱动,是框架设计的第一个重要原 业级的技术架构,都需要以支撑企业级的业务架构 企业的战略方向以及业务价值体现。 一切从业务出发,以价值驱动,是架构设计的重要 原则与基础。 则,无论是框架本身的设计还是应用框架进行企 • 一个架构决策都能回溯到企业的战略方向和业务 为保证架构的轻量,从框架设计之初,团队一直反 业级的架构规划,都需要始终遵循此规则,使每 价值上。 轻量敏捷化(持续改进 over 一次做对) 复审视框架每一个概念和工具的价值和成本,在满 © ThoughtWorks, Inc. All Rights Reserved. 17
18. 足现代企业架构设计的前提下,力求用最少的概念 和元素解决实际问题。 同时如何让企业架构与敏捷的思想融合,也是我们 在框架设计之初就一直探讨和研究的课题。我们希 望同时结合 ThoughtWorks 在敏捷与企业架构及平 议,都源于实际项目的实践和提炼,因为可落地易 落地也一直是我们构建和设计这个框架的重要原则 之一,任何好的概念、思想和工具,如果没有经过 实践的检验,也不会被加入到框架的核心模型和要 素中来。 台架构各个领域的优势和理解,使现代企业架构框 反映到框架设计上,从框架的核心元模型出发,每 大家对于企业架构“繁重、复杂、成本高、不落地” 景、建模语言标准、识别方法与工具建议、输入基 架原生就融入敏捷的思想、原则和最佳实践,扭转 的固有认识。 为达到此目标,我们将数据驱动、持续迭代、小步 快跑、协同共创、工作坊等思想、方法和工具也融 入到了现代企业架构框架之中,帮助在框架实施过 程中实现企业级架构规划与建设的敏捷化。 • 可落地(从实践出发 over 从理论推导) 本框架在设计过程中的所有元模型定义和方法建 一个元模型要素都会包含完整的概念定义、应用场 线要求、输出基线定义,以确保框架的可落地和应 用此框架设计与建模的一致性,同时降低框架掌握 的门槛,做到易懂、易学、易用。 同时,对于框架从元模型出发到设计与建模方法, 支持基于企业的自身特点和不同的战略目标以及业 务要求,支持对于框架做出适当的裁剪、扩展和定 制,使框架切实成为企业级架构规划的有力支撑而 非固化限制。 2.5 现代企业架构框架元模型总览 在展开介绍架构之前,我们需要先了解在企业架构 达,就可以通过结构化的方式对于架构进行描述和 视角(viewpoint)和视图(View): 构本身的理解和抽象,是企业级架构框架的核心, 领域非常重要的三个概念:元模型(Metamodel), 元模型(Metamodel):元模型是对于架构核心 概念要素的精确定义和描述,元模型构成了架构设 计的“基本语言要素”,通过元模型及其关系的表 展现,框架元模型体现了框架设计者对于企业级架 是对于架构描述的“统一语言”。 视角(Viewpoint):企业架构设计因为是在对于 企业本身的进行架构设计,因其抽象程度较高,同 © ThoughtWorks, Inc. All Rights Reserved. 18
19. 业务架构 业务群 应用架构 应用组 业务 业务身份 场景 解决方案 扩展实现 任务 能力组件 业务服务 应用服务 扩展点 扩展实现 应用组件 扩展点 领域对象 不变量 基础能力 步骤 领域对象 规则 领域事件 子域 技术架构 问题 模式 原则 规范 架构决策 约束 数据组件 数据对象 技术服务 决策 上下文 愿景 数据服务 应用 阶段 活动 应用层 数据架构 技术平台 技术组件 组织 资源 (图 2.5-2 MEAF Metamodel) 时涉及各类不同的干系人和组织,而不同的干系人 元模型要素及其关系的描述和可视化。 架构的关注点和视角也存在比较大的差异。因此, 在现代企业架构框架(MEAF)的设计上,我们最 体现我们在审视和进行企业架构设计时,处于什么 (Viewpoint)和视图(View)的划分,当前版本 和组织基于自身所处岗位角色和职责的不同,对于 通过不同的视角(Viewpoint)的抽象,就可以充分 大化的延续和集成了经典企业架构框架对于视角 样的观察位置和角度,兼顾不同干系人的架构设计 主要从业务架构、应用架构、数据架构和技术架构 切面,以及在这个切面下的元模型要素以及他们之 构视图下,针对平台型企业架构设计这个大的前提 诉求。不同的视角(Viewpoint)会关注架构的不同 间的关系,这就构成了不同的架构视图(View)。 视图(View):一个视图描述了从一个或一组相关 的视角(Viewpoint)出发,通过组合这类视角所关 注的元模型(Metamodel)要素及其关系,通过设 计与建模之后,形成的切面视图。一个视图(View) 体现了在一类视角(Viewpoint)下对其关注的架构 出发四类架构视图出发,将关注点聚焦于在不同架 和背景,如何设计和应用元模型(Metamodel)重 新对于企业架构建模,满足企业对于现代企业架构 设计的需求的同时,保证企业架构设计的可落地。 下 面 就 将 根 据 不 同 的 视 图(View) 以 元 模 型 (Metamodel)为主线,展开详细介绍现代企业架 构框架(MEAF)的架构设计要素和应用场景。 © ThoughtWorks, Inc. All Rights Reserved. 19
20. 3 现代企业架构框架 — 业务架构 3.1 业务架构元模型综述 业务架构 (Business Architecture) 定义了企业各类 业务架构是企业架构的核心内容,直接决定了企业 企业战略为出发点,以支撑实现企业战略为目标, 和架构设计的主要依据。 业务的运作模式及业务之间的关系结构。它以承接 通过对于业务能力的识别与构建,并将业务能力以 业务服务的方式透出,实现对于业务流程的支撑, 并最终通过组织给予保障。 战略的实现能力,是其他架构领域工作的前提条件 业务架构整体上包括“业务”、“流程”、“组织”、 “服务”、“领域”和“模式”六大部分,如下图 3.1-1 所示: © ThoughtWorks, Inc. All Rights Reserved. 20
21. Pattern(模式) 业务 组合管理 业务群 业务 业务身份 业务 场景 扩展实现 流程 能力 流程 阶段 活动 通用流程 步骤 可变点 任务 规则 解决方案 能力组件 基础能力 扩展点 组织 领域 组织单元 子域 岗位 角色 领域对象 领域事件 服务 业务服务 ( 图 3.1-1 企业级业务架构元模型 ) 其中“模式”部分是我们为“平台型”企业架构设计的核心解决方案,包括: Part1 Part2 Part3 Part4 流程建模 领域建模 业务身份建模 能力建模 • • • • 基础能力建模 扩展点与扩展实现建模 能力组件建模 解决方案建模 © ThoughtWorks, Inc. All Rights Reserved. 21
22. 3.2 业务架构元模型应用 3.2.1 现代业务架构典型问题 在帮助企业构建业务架构的过程中,我们发现大部 分企业正面临共同的问题:如何抽离多业务线共享 的能力,集中管控和演进,以避免重复投资?新业 务如何基于企业能力快速组装上线,以支撑业务快 速迭代创新? 问题的背景和起因在于,当大型企业的业务发展到 达一定规模,多条业务线并存、或多个业务单元并 行发展,IT 建设会随着业务边界、组织边界,不可 避免的进一步分化,也加剧了 IT 部门进行统一管控 的困难。 一方面,在很多场景中,这样的分化带来了双重投 资甚至多重投资的浪费,另一方面也在加剧本就存 在的用户或者客户体验的割裂、数据孤岛、IT 翻新 周期长等固有问题。 同时,当业务线不断尝试新的业务模式,或对于已 有模式进行更快的试验、调整与扩展。对于 IT 支撑 的响应力也提出了更高的要求。固有的系统搭建或 者产品部署模式,越来越不足以提供及时的响应, 且在“快速试错”、“小步快跑”的创新场景应对下, 成本高昂。 为了解决上述问题,我们对问题进行了进一步拆解: · Q1:什么是可共享复用的能力? · Q2:如何识别和构建能力? · Q3:如何使用能力,实现新业务快速上线? 在对问题进行上述拆解后,我们将基于业务架构元 模型逐一解决。 3.2.2 什么是可共享复用的能力? 在现代企业架构中,面向能力的规划超越面向功能 与服务的规划成为企业级业务架构规划的关注要 点,如何基于能力的识别与规划,最大化的沉淀企 业级可复用的能力,并通过扩展、编排和组合等形 式应用到更多的场景,是平台型企业架构需要解决 的关键问题。 企业为了应对业务的快速迭代、多场景和不确定性, 需要在平台上构建可复用的“能力”以及为能力提 供必要的扩展与可变机制,以此为不同前台提供灵 活多变的业务服务,满足不同前台差异化个性化的 的需求。 而“能力”根据粒度的不同,可再度细分为“基础 能力”、“能力组件”和“解决方案”三个层级。 不同业务的差异性,则可通过能力的“扩展点”设 计和不同“业务身份”在扩展点上的“扩展实现” 进行区分。 © ThoughtWorks, Inc. All Rights Reserved. 22
23. 总体实现机制如下: 能力 业务身份 身份要素: 客户、产品、渠道等 解决方案 定制化 被..编排 被复用 能力组件 配置下发 被..编排 基础能力 扩展点 XX业务应用 配置 业务身份对应的扩展实现 ( 图 3.2-2 企业能力共享复用的实现机制 ) 业务身份: “业务身份”的概念最早由阿里巴巴提出, 一组关联的基础能力,从而提供完整的服务。比如: 每一次业务服务请求的业务身份要素,以便提供差 系列紧密关联的业务活动,设计的能力模板,可基 业务平台在对各业务同时提供服务时,需要能区分 异化个性化的服务;因此需要对企业各业务的身份 和特征进行建模和区分,其产出即为“业务身份”。 业务身份是业务在平台中的代名词,是在业务运营 中唯一区分某个具体业务的 ID。平台基于业务身份 匹配该特定业务的流程和业务规则,并基于业务身 份实现服务路由、需求溯源、业务监控和业务隔离。 基础能力:是对领域对象的原子操作,完成一个领 域对象上单一且完整的职责。比如:创建售后单、 修改商品库存量等,是能力组合和复用的最小单元。 能力组件:能力组件是对基础能力的进一步封装, 目的是方便业务的使用。按封装粒度不同分为两类: 第一类能力组件是根据业务服务的需要编排封装的 订单创建能力组件。第二类能力组件是平台针对一 于该模板快速定制某个具体业务的特定流程和能 力,从而达到复用全部关联能力的目的。比如:“组 合支付”、“快速建站”等能力组件。能力组件加 快了业务接入平台的速度,让业务侧专注业务本身, 不再需要耗费精力在理解平台大量的基础能力上。 扩展点与扩展实现:“扩展点”是对基础能力的可 变性设计,在技术侧体现为基础能力实现中的某一 个步骤的接口定义,而接口的一个实现即为一个“扩 展实现”。比如:订单渲染基础能力中有一个步骤 是订单总价试算,而正常时期的总价试算规则与秒 杀时期的总价试算规则是不同的,因此需要对订单 渲染基础能力设计“订单总价试算规则”的扩展点, 并分别定义在正常时期和秒杀时期的扩展实现。 © ThoughtWorks, Inc. All Rights Reserved. 23
24. 解决方案:是平台针对一类共性业务的端到端过程 在业务梳理阶段:对企业业务、流程、组织、业务 业务的特定能力和流程,从而达到业务模式级别复 式设计的基础和输入。 设计的能力模板;可基于该模板快速定制某个具体 用的目的。比如:虚拟物品交易解决方案。 识别构建能力的过程分为“业务梳理”和“模式设计” 两个阶段。 业务群 业务 场景 而在模式设计阶段:则会通过流程建模、领域建模、 业务身份建模和能力建模 4 个步骤完成企业能力的 3.2.3 如何识别和构建能力? 业务 组合管理 服务和业务规则进行细致完整地梳理,作为后续模 流程 识别构建。 具体过程如下: 组织 阶段 组织单元 任务 角色 活动 步骤 岗位 服务 业务服务 规则 业务梳理 模式设计 1 2 3 4 流程建模 领域建模 业务身份建模 能力建模 通用流程设计 可变点设计 子域划分 领域对象识别 领域事件识别 业务身份要素 定义 业务身份识别 解析规则定义 解决方案设计 能力组件设计 基础能力设计 扩展点设计 ( 图 3.2-3 识别和构建能力的过程 ) © ThoughtWorks, Inc. All Rights Reserved. 24
25. 模式设计阶段中: • • 下面将详细说明各步骤的实施方法: 流程建模:负责识别共性业务,并抽取通用流程, 3.2.3.1 流程建模 设计可变点,作为可复用性分析的基础。 为了提取可复用的能力,首先需要识别共性业务, 然后将同一类共性的业务抽象提炼出通用流程,并 领域建模:负责基于流程建模结果,识别领域 基于通用流程进行可变性分析。 事件和领域对象,并划分子域的边界;领域对 象构成了提供可复用能力的基本单元,对领域 • 对象的操作即是基础能力。 具体方法是按业务架构中流程部分的元模型(阶 业务身份建模:负责定义业务身份识别的要素 下以及自下而上的方式逐层提炼收敛通用模型和 段、活动、任务、步骤、业务规则),结合自上而 可变点。 和业务身份解析规则,用于给可复用的能力区 分不同的业务身份要素。 • 总体实现机制如下: 能力建模:负责最终完成平台三类可复用能力 的设计,即“基础能力”设计、“能力组件” 设计和“解决方案”设计。 同一共性分类下的业务A A流程 阶段 活动 任务 业务 组合管理 步骤 业务群 业务 提取共性业务 规则 自底向上逐 层抽象提炼 同一共性分类下的业务B B流程 阶段 活动 任务 步骤 规则 通用流程 阶段 活动 任务 步骤 规则 可变点 ( 图 3.2-4 流程建模的总体实现机制 ) © ThoughtWorks, Inc. All Rights Reserved. 25
26. 提炼通用流程后的可变性分析,旨在找出“什么在变”、“为什么变”和“怎么变”,因此可变性模型主要由: “可变点”、“可变点实现”以及“可变点、可变点实现之间的关系”三部分组成。 可变性 可变点(VP) 可变性模型 VP 可变点 可变点实现(V) 什么在变、为什么变、 怎么变 V 可变点实现1 关系 V 可变点实现2 ( 图 3.2-5 可变性模型的组成部分 ) 综上所述,流程建模的主要步骤如下: • 分析业务组合,提取共性业务。 • 分析所有共性业务的各流程步骤及其输出对象, 抽象提炼通用步骤和业务实体;识别各业务的 差异部分,提炼设计可变点,确定可变点实现 和关系。 • 分析所有共性业务的各流程任务,抽象提炼通 用任务;识别各业务在任务上的差异部分。 • 分析所有共性业务的各流程活动,抽象提炼通 • 分析所有共性业务的各流程阶段,抽象提炼通 用活动;识别各业务在活动上的差异部分。 用阶段;识别各业务在阶段上的差异部分。 3.2.3.2 领域建模 领域是指组织的业务范围以及在其中所进行的活 动,也就是平台能力需要支撑的业务范围。因此, 为了构建出平台能力,需要对业务领域进行深入的 理解和设计。 在业务架构部分,将进行领域战略层级的建模,主 要包括:“子域”、“领域对象”、“领域事件” 部分的设计。 领域 子域 领域对象 领域事件 ( 图 3.2-6 领域战略层级建模的组成部分 ) © ThoughtWorks, Inc. All Rights Reserved. 26
27. 领域战略层级建模的过程如下: 领域 子域 领域对象 • - (Event Storming)”,主要步骤如下: • 邀请业务专家(或领域专家)和技术专家共同 • 明确和选择需要分析的业务场景。 领域事件 逻辑和系统实现就不能成立。我们可以通过领域事 • 根据场景和业务复述的复杂度,决定以时间线 • 以先发散再收敛的方式,按照时间线的先后顺 • 使用“规则”抽象分支条件或复杂的规则细节, • 比如:“用户地址已更新”、“订单已发货” 等领 域事件。 领域事件对系统常见的影响有: - - 触发了某种流程或事情 状态发生了某种变化 通过抽象降低分支复杂度,规则以“XXX 规则” 完成一遍事件梳理之后,通过问问题的方式, 逆向检查(Reverse Check)事件流的逻辑合理 - 该事件真的需要在系统实现的时候考虑 - 该事件如果存在,那它的前提条件是什么? - 对内 产生了某种数据 序和并行关系,补充和完善领域事件。 性,例如: 对业务有意义的信息都会通过某种形式保存下来。 - 的哪个方向开始梳理事件(正向或逆向)。 的名词形式进行命名。 件对过去发生的事情进行溯源,因为过去所发生的 • 确 定 起 始 事 件 和 结 束 事 件, 事 件 以“XXX 已 的中文表达方法)。 在业务上真实发生的事件,这些事件对系统会产生 重要的影响,如果没有这些事件的发生,整个业务 参与事件风暴工作坊,其它参与角色按需补充。 YYY”的形式进行命名(对于英文版过去完成时 ( 图 3.2-7 领域战略层级建模的过程 ) 领域事件(Domain Event):是领域专家关心的, 发送了某些消息 目前比较常用的领域事件识别方法是“事件风暴 • 3.2.3.2.1 领域事件识别 对外 • 吗? 该事件如果要产生,那它的前一个事件必须 是? 重复以上步骤,迭代式的完成全部领域事件的 识别。 © ThoughtWorks, Inc. All Rights Reserved. 27
28. 领域事件识别的示例如下: 商品 已创建 库存 已增加 库存 已锁定 订单 已创建 订单 已支付 库存 已扣减 订单 已撤销 库存 已恢复 订单 已投诉 投诉 已接受 仓储 已配货 仓储 已发货 投诉 已处理 ( 图 3.2-8 领域事件识别的示例 ) 3.2.3.2.2 领域对象识别 领域对象(Domain Object):是对业务的高度抽象, 作为业务和系统实现的核心联系,领域对象封装和 承载了业务逻辑,是系统设计的基础。 领域建模中重要的部分之一就是对“领域对象”及 领域对象之间关系的识别和设计。而领域对象识别 将基于前面领域事件识别的结果开展。 领域对象,通常包含(但不限于): • 领域事件中出现了的名词; • 如果没有信息系统,在现实中会看得见摸得着 • 虽然在当前业务中看不见摸不着,但是可以在 的事物(例如订单); 未来抽象出来的业务概念。 在领域驱动设计(Domain-Driven Design)(参考 文献 7)中一般存在三类领域对象: 聚合根:是领域对象的根节点,具有全局标识,对 象其它的实体只能通过聚合根来导航;如订单可以 分为订单头和订单行,订单头是聚合根,它包含了 订单基本信息;订单行是实体,它包含订单的明细 信息,聚合跟所代表的聚合实现了对于业务一致性 的保障,是业务一致性的边界。 实体:是领域对象的主干,具有唯一标识和生命周 期,可以通过标识判断相等性,并且是可变的,如 常见的用户实体、订单实体; 值对象:实体的附加业务概念,用来描述实体所包 含的业务信息,无唯一标识,可枚举且不可变,如 收货地址、合同种类等等。 © ThoughtWorks, Inc. All Rights Reserved. 28
29. 业务架构只负责初步和整体识别领域对象,而对领 域对象的分类(聚合根、实体、值对象)和战术层 级的详细设计将在应用架构设计部分完成。 领域对象识别的主要步骤如下: • 对每一个领域事件,快速识别或抽象出与该领 加入 待办 检查领域名词和领域事件在概念和粒度(例如 完成 处理 数量,单数还是集合)上的一致性,通过重命 名的方式统一语言,消除二义性。 • 如果在讨论过程中,有任何因为问题澄清和知 识增长带来的对于之前各种产出物的共识性调 整,请不要犹豫,立刻予以调整和优化。 • 提交 投诉 域事件最相关(或隐含的)的业务概念,并将 其以名词形式予以贴出。 • 提交 订单 分配 货物 发送 货物 重复以上步骤,迭代式的完成全部领域对象的 编辑 库存 库存 (SKU) 货物 订单 已撤销 订单 已投诉 投诉 已接受 投诉 已处理 仓储 已配货 仓储 已发货 3.2.3.2.3 子域划分 领域对象识别的示例如下: 商品 (SPU) 投诉单 订单 已支付 ( 图 3.2-9 领域对象识别的示例 ) 识别。 添加 商品 订单 订单 已创建 子域(Subdomain):是对问题域的澄清和划分, 同时也是对于资源投入优先级的重要参考。比如: 商品 已创建 “订单子域”、“物流子域”等,子域的划分仍属 于业务架构关注范畴。 库存 已恢复 库存 已扣减 库存 已增加 库存 已锁定 子域的类型分为: domain core domain supporting subdomain sub domain generic subdomain ( 图 3.2-10 子域的类型 ) © ThoughtWorks, Inc. All Rights Reserved. 29
30. 核心域(Core Domain):是当前产品的核心差 子域划分的主要步骤如下: 核心域不存在那么整个业务就不能运作。对于核心 • 异化竞争力,是整个业务的盈利来源和基石,如果 根据“每一个问题子域负责解决一个有独立业 务价值的业务问题”的视角出发,可以通过疑 域,需要投入最优势的资源(包括能力高的人), 问句的方式来澄清和分析子域需要解决的业务 和做严谨良好的设计。 问题,例如“如何进行库存管理?(英文描述 类似 How to…?)”。 支撑域(Supporting Subdomain):解决的是支 撑核心域运作的问题,其重要程度不如核心域,但 具备强烈的个性化需求,难以在业内找到现成的解 利用虚线,将解决同一个业务问题的限界上下 • 文以切割图像的方式划在一起,并以“XXX 子域” 决方案,需要专门的团队定制开发。 的形式对每个子域进行命名。 通用域(Generic Subdomain):该类问题在业 内非常常见,所以很可能有现成的解决方案,通过 根据三种类型的子域定义,共同结合业务实际 • (或者参考设计思维中的电梯演讲),确定每 购买或简单修改的方式就可以使用。 个子域的子域类型。 子域划分的示例如下: 支付子域 (通用) 运营子域 (核心) 支付上下文 支付宝 售后上下文 采购上下文 退货商品 采购单 物流子域 (支撑) 商品基 础信息 销售商品 投诉单 物流服务 上下文 库管上下文 客服上下文 客服子域 (支撑) 货运商品 商品上下文 订单 销售子域 (核心) 发货单 补货单 退货单 销售上下文 物流上下文 库管子域 (核心) 配货单 库存商品 出库单 顺丰 物流服务子域 (通用) 入库单 ( 图 3.2-11 子域划分的示例 ) © ThoughtWorks, Inc. All Rights Reserved. 30
31. 3.2.3.3 业务身份建模 业务身份 ID “业务身份要素定义”、“业务身份识别解析规则” 领域对象名称 业务身份由“业务身份 ID”、“业务身份名称”、 业务身份名称 属性 1 四个部分组成。 “条件规则 例如 < 1000” 业务身份 身份要素: 客户、产品、渠道等 领域对象名称 业务身份ID 业务身份识别解析规则 ( 图 3.2-12 业务身份的组成部分 ) 条件规则 2 … 属性 3 属性 4 条件规则 2 … … … “条件规则 1 … (例如 < 100 天)” “条件规则 2 (例如 = ‘银 卡会员’)” 属性 2 … 业务身份要素定义 “条件规则 1 (例如 = ‘金 卡会员’)” 属性 1 条件规则 1 业务身份名称 属性 2 领域对象 A … … … 领域对象 B … 属性 3 属性 4 … … … … … … ( 图 3.2-13 业务身份解析机制 ) 业务身份建模的主要步骤如下: • 分析业务组合,提取业务身份要素维度。 • 确定各业务身份要素维度对应的领域对象(包 分。企业应根据自身业务特征对身份要素进行识别 • 确定领域对象各属性的取值条件规则,定义业 产品和渠道等。 • 指定业务身份名称。 其中,业务身份要素定义是最基础、也是最难的部 定义,常见的身份要素维度包括但不限于:客户、 业务身份要素除了对要素维度进行抽取识别,还需 要定义每个要素维度所包含的领域对象(包括领域 对象的属性);这些领域对象及其属性用来定义业 务身份的识别解析规则。实现机制如下: • 括领域对象的属性)。 务身份识别解析规则。 指定业务身份 ID。 3.2.3.4 能力建模 能力建模分为“基础能力和扩展点设计”、“能力 组件设计”和“解决方案设计”三个部分,过程顺 序如下: © ThoughtWorks, Inc. All Rights Reserved. 31
32. 不同的业务通过使用同一个基础能力来达成共享复 用的目的,而不同业务在业务规则上的差异性,则 能力建模 通过定义该基础能力在扩展点上的不同扩展实现来 区分。 解决方案设计 需要注意的是,通常这套机制需要技术上的开发框 架支持。 能力组件设计 基础能力与扩展点设计的主要步骤如下: • 基础能力设计 • 根据步骤对领域对象的操作,设计对应的基础 • 完成对一个领域对象单一且完整的操作职责 • 基础能力操作的领域对象最大不能超出单个聚 • 基础能力的输入与输出建议对象化,以规范 • 根据流程建模步骤中识别出的与该基础能力有 ( 图 3.2-14 能力建模的过程顺序 ) 基础能力:是对领域对象的原子操作,完成一个领 域上单一且完整的职责。比如:创建售后单、修改 商品库存量等。 扩展点与扩展实现:“扩展点”是对基础能力的可 变性设计,在技术侧体现为基础能力实现中的某一 个步骤的接口定义,而接口的一个实现为一个“扩 展实现”。比如:订单渲染基础能力中有一个步骤 是订单总价试算,而正常时期的总价试算规则与秒 杀时期的总价试算规则是不同的,因此需要对订单 渲染基础能力设计“订单总价试算规则”的扩展点, 并分别定义在正常时期和秒杀时期的扩展实现。 骤”,确定其对应的领域对象(注意,该领域 对象应来自于前面的领域建模步骤)。 扩展点设计 3.2.3.4.1 基础能力与扩展点设计 对流程建模步骤中输出的各“任务”下的所有“步 能力;基础能力的设计应遵循如下原则: 合,最小不能破坏业务的一致性要求 使用 关的可变点,以及各业务身份在该可变点上不 同的业务规则,提炼设计出基础能力的扩展点 • 确定扩展点的默认实现(即默认情况下基础能 力执行的业务规则) © ThoughtWorks, Inc. All Rights Reserved. 32
33. 3.2.3.4.2 能力组件设计 比如:订单创建能力组件。 能力组件:是对基础能力的进一步封装,目的是方 第二类能力组件是平台针对一系列紧密关联的业务 便业务的使用。能力组件加快了业务接入平台的速 活动,设计的能力模板,可基于该模板快速定制某 度,让业务侧专注业务本身,不再需要耗费精力在 个具体业务的特定流程和能力,从而达到复用全部 理解平台大量的基础能力上。 关联能力的目的。比如:“购物车”、“结算”、“快 速建站”等能力组件。 能力组件按封装粒度不同分为两类: 实现机制及示例如下: 第一类能力组件是根据业务服务的需要编排封装的 一组关联的基础能力,从而提供完整的业务服务。 购物车 购物车Web 能力组件 (第二类) 添加 购物车 能力组件 (第一类) 地址 管理 Promise 商品 添加 价格 试算 商品项价 格试算 计算 购物车 商品创建 商品修改 总价试算 我的订单Web 订单提交 库存 占用 订单 创建 发票 创建 订单 修改 订单 分发 订单创建 库存 校验 商品 项加 入购 物车 订单运营 结算页Web 添加购物车 商品状 态校验 基础能力 结算 库存 校验 库存 添加 订单 排程 流通 加工 物流 服务 订单修改 订单状态 校验 订单 创建 订单 修改 订单 创建 库存 校验 库存 扣减 订单履行 商户状 态校验 订单 修改 发票 创建 地址 修改 物流 状态 查询 �� 订单 拆单 ( 图 3.2-15 能力组件的实现机制及示例 ) © ThoughtWorks, Inc. All Rights Reserved. 33
34. 基础能力与能力组件的设计都基于流程建模和领域建模的结果,各设计产出要素的对应关系如下: 流程建模 能力建模 通用流程 能力组件(第二类) 阶段 被..编排 活动 任务 能力组件(第一类) 步骤 规则 被..编排 基础能力 可变点 扩展点 能力建模 领域建模 领域对象 领域事件 (图 3.2-16 基础能力、能力组件设计与流程和领域建模的关系) 能力组件设计的主要步骤如下: • 对流程建模中输出的每个任务,设计其所需的 业务服务,可采用服务蓝图的方法进行业务服 务设计。 3.2.3.4.3 解决方案设计 解决方案:是平台针对一类共性业务的端到端过程 设计的能力模板;可基于该模板快速定制某个具体 业务的特定能力,从而达到业务模式复用的目的。 • 对每个业务服务,封装编排满足其需求的一组 • 对流程建模中输出的阶段和业务活动进行逐项 从以上定义可以看出,解决方案的核心是对共性 识别对应的一系列紧密关联的业务活动;将这 封装。 基础能力成为第一类能力组件。 分析,从价值交付和阶段性价值交付的角度, 些业务活动包含涉及的所有能力组件和基础能 比如:虚拟物品交易解决方案。 业务进行识别提取和对业务全部能力进行模板化 力封装定义为第二类能力组件。 © ThoughtWorks, Inc. All Rights Reserved. 34
35. 业务 组合管理 业务群 业务 提取 共性 业务 共性业务 业务A 业务B 业务C � 能力 能力建模 流程 通用流程 流程 和领 域建 模 阶段 活动 能力 建模 解决方案 模板化 封装 任务 步骤 规则 业务N 能力组件(第二类) 被..编排 可变点 能力组件(第一类) 被..编排 领域建模 能力建模 基础能力 领域对象 扩展点 领域事件 (图 3.2-17 解决方案设计的过程) 解决方案设计的主要步骤如下: • 识别和提取共性业务。 • 对共性业务进行流程建模和领域建模,具体方 • 进行基础能力和扩展点设计。 • • 法参见前面所述。 进行能力组件设计。 基于通用流程,将共性业务中包含的所有基础 能力、扩展点和能力组件封装定义为解决方案。 3.2.4 如何复用能力,实现新业务快速上 线? 3.2.4.1 多层级复用 在平台化架构中,能力的复用可分为三个层级: 复用 层级 复用对象 特征 业务 价值 能力 共享 基础能力 领域模型 支持同一个业务场景的 多个能力消费者,主要 解决数据一致性问题。 如常见的全渠道策略 下,多个渠道客户端使 用同一个服务端能力 低 能力 复用 业务流程 能力组件 基础能力 领域模型 提供单点的能力,支持 不同业务场景的多个能 力消费者。由于只提供 业务场景中的某一小 段,对业务流程的抽象 要求适中,需要一定的 扩展机制 中 业务 模式 复用 解决方案 业务流程 能力组件 基础能力 领域模型 提供多个连续或关联的 能力,支持不同业务场 景的多个能力消费者。 对业务流程的抽象要求 高,由于需要支持不同 业务模式对同一个业务 流程的差异化需求,必 须有灵活的扩展机制 高 © ThoughtWorks, Inc. All Rights Reserved. 35
36. 其中“业务能力复用”和“业务模式复用”层级都 能力又能进一步组装成更大粒度的可复用能力组 于前面论述的可复用能力构建方法,我们就能实现 的复用能够延伸到业务的全流程,即对于同一类共 对可复用能力的识别和设计提出了要求。因此,基 件,从而实现局部业务流程的复用;如果业务流程 这两层的复用效果。 性业务其全流程都能基于一个解决方案模板定制, 而这个解决方案模板是其下所有能力组件和基础能 多层级复用为什么能实现呢?首先在于底层领域模 力的封装,那么新的业务只需定制该解决方案模板 型的设计,有了建模后的领域对象提供共享的基础 即可实现业务模式的复用,快速上线新业务。其关 能力,再加上扩展机制,就能实现基础能力在不同 系如下: 业务上的复用;而经过通用流程的建模,这些基础 业务模式复用 领域模型复用 业务流程复用 支撑 支撑 能力复用 支撑 (图 3.2-18 多层级复用的关系) © ThoughtWorks, Inc. All Rights Reserved. 36
37. 3.2.4.2 复用基础能力和能力组件 在识别和构建了平台的基础能力和能力组件之后,不同业务就能针对特定的业务需求复用它们并快速定制。方 法是对基础能力下的扩展点进行扩展实现的配置和开发,示例如下: “创建新订单”能力组件 校验用户信息 校验商户信息 校验商品信息 创建订单 业务A的“创建新订单” 校验用户信息 校验商品信息 创建订单 扩展点1 扩展点2 �� 配置和开发扩展实现: 1.[扩展点1]拆单规则 2.[扩展点2]总价试算规则 �� 创建订单 (图 3.2-19 复用基础能力和能力组件的示例) 复用基础能力和能力组件的主要步骤如下: • 配置新业务对应的业务身份在各基础能力扩展 点上的扩展实现,如果无需定制可直接采用默 认扩展实现。 • • • 开发基础能力的扩展实现。 根据业务流程,编排基础能力和能力组件,实 现业务需求。 对于现有能力不能满足业务需求的情况,需要 平台侧新增开发任务,修改或者新增基础能力 和能力组件;然后应用侧按上述过程完成定制 使用。 3.2.4.3 复用解决方案 对于新业务,如果已构建了其所属共性业务的解决 方案,则可通过复用该解决方案进行业务的快速定 制。方法是:基于解决方案的通用流程定制新业务 流程,并对基础能力下的扩展点进行扩展实现的配 置和开发。 © ThoughtWorks, Inc. All Rights Reserved. 37
38. 新业务全流程 能力组件 基础能力1 新业务A 基础能力2 基础能力 基础能力 XX扩展点的 扩展实现 XX扩展点的 扩展实现 XX扩展点的 扩展实现 XX扩展点的 扩展实现 XX扩展点的 扩展实现 XX扩展点的 扩展实现 XX扩展点的 扩展实现 XX扩展点的 扩展实现 XX扩展点的 扩展实现 XX扩展点的 扩展实现 XX扩展点的 扩展实现 复用&个性化配置 XX扩展点的 扩展实现 定制开发 通用流程 能力组件 解决方案 能力组件 基础能力1 基础能力2 XX扩展点 XX扩展点 XX扩展点 XX扩展点 XX扩展点 XX扩展点 XX扩展点 XX扩展点 XX扩展点 XX扩展点 XX扩展点 XX扩展点 基础能力 能力组件 基础能力 (图 3.2-20 复用解决方案快速定制新业务) 开发基础能力的扩展实现。 复用解决方案的主要步骤如下: • • 基于选定的解决方案,配置新业务的业务全 • 根据业务全流程,编排基础能力和能力组件, • 配置新业务对应的业务身份在各基础能力扩展 • 对于现有能力不能满足业务需求的情况,需要 流程。 点上的扩展实现,如果无需定制可直接采用默 认扩展实现。 实现业务需求。 平台侧新增开发任务,修改或者新增基础能力、 能力组件和解决方案;然后应用侧按上述过程 完成定制使用。 © ThoughtWorks, Inc. All Rights Reserved. 38
39. 3.3 业务架构元模型补充说明 在 3.2 章节中,我们对业务架构元模型的“Pattern(模式)”部分进行了详细说明,下面对业务架构元模型的 其余部分进行补充说明;这些部分都可参照传统业务架构的方法进行设计,此处不再赘述。 Pattern(模式) 业务 组合管理 业务群 业务 业务身份 业务 场景 流程 阶段 扩展实现 活动 通用流程 步骤 可变点 任务 规则 能力 流程 解决方案 能力组件 基础能力 扩展点 组织 领域 组织单元 岗位 角色 服务 业务服务 子域 领域对象 领域事件 (图 3.1-1 业务架构元模型) © ThoughtWorks, Inc. All Rights Reserved. 39
40. 业务 组合管理 业务群 3.3.1 业务维度 此维度主要对企业的业务组合管理进行建模,分析 企业各主营业务和辅助业务的关系结构及运作模 业务 则将输入转换成为有价值的输出,从而实现用户价 值。要素如下: 场景 流程 式。要素如下: 活动 Pattern(模式) 业务 组合管理 业务群 业务 活动 其下又进一步细分为快消品业务群和消费电子业务 任务 步骤 业务:是业务群下具有业务价值的业务单元。比如: 规则 实体商品业务、生活服务业务等;内部支撑类的业 务比如人力资源管理等。 组织 组织单元 场景:是面向用户提供价值的端到端业务场景。 岗位 通 常 从 4W1H(What、Who、Where、When、 角色 How)的维度识别和定义业务场景要素,然后从业 务场景要素的排列组合中筛选出有实际意义的业务 服务 场景。 业务服务 任务 可变点 扩展实现 规则 场景 流程 业务群:是企业基于业务战略拆解,确定开展的特 阶段 定经营活动。比如:开展 ToC 的电商平台经营活动, 通用流程 业务身份 步骤 业务 群等。 流程 阶段 组织 阶段:即业务流程阶段,包含一组用户的及与用户 能力 流程 组织单元 交互的业务活动,用以实现阶段性价值交付的目的。 解决方案 岗位 比如:售前、售中和售后等。 通用流程 能力组件 角色 活动:即业务活动,是某个业务角色办理的业务事 基础能力 可变点 服务 项,包含一个或一组任务,有明确的业务成果和业 扩展点 业务服务 务输出。比如:商品发布、活动发布等。 任务:是完成活动的工作程序,是流程的基本组成 领域 单元。比如:查询商品详情、更新商品库存、创建 订单等。 子域 领域对象 步骤:是完成任务的具体步骤,是流程的最原子操 领域事件 作。比如:校验用户状态、校验商户状态、订单总 价试算等。 3.3.2 流程维度 业务规则:是定义或约束业务某些方面的陈述,旨 企业如何通过一系列业务活动,按照相关的业务规 务过程与决策过程。比如:if 订单 . 提货方式 = “邮寄” 此维度主要对企业的业务流程进行分层建模,分析 在维护业务结构或控制或影响业务行为,它描述业 且 订单 . 支付状态 = “已支付” then “创建物流单”。 © ThoughtWorks, Inc. All Rights Reserved. 40
41. 3.3.3 组织维度 流程 阶段 活动 此维度主要对企业的组织体系进行分析。公司组织 任务 体系指为了保障战略和业务规划落地,以及有效实 施业务流程体系,公司采取的组织架构和管控模式。 步骤 要素如下: 规则 组织 组织单元 岗位 角色 服务 组织单元:是公司组织体系的组成单元。 业务服务 岗位:是随组织结构设定的,要求个体完成的一项 扩展实现 能力 流程 角色:是业务流程中活动参与者的原型,参与者在 解决方案 通用流程 流程中的位置通过担任合适的角色确定。组织为完 能力组件 成某一目标,往往会把此目标分解,以便能交给不 同能力和责任的角色合作完成。 基础能力 可变点 扩展点 3.3.4 服务维度 此维度主要对企业对内和对外提供的业务服务进行 领域 建模分析。要素如下: 子域 业务服务:是企业和企业的每个业务单元为其客户 领域对象 提供的内部和外部服务。服务是能力对外呈现价值 领域事件 的方式,是具备明确的业务特征,独立完整、由一 个或多个关联紧密的功能组合的集合。比如:开户、 提交订单等。 或多项责任以及为此赋予个体的权力的总和。 © ThoughtWorks, Inc. All Rights Reserved. 41
42. 4 现代企业架构框架 — 应用架构 应用架构的核心关注点是业务需求是由哪些应用承 内部的架构设计。例如常见的应用分层设计,领域 以及是如何交互的,它们访问或变更了什么数据。 域对象的详细建模与设计,都是在应用架构这个粒 载的,它们与用户是如何交互的,它们之间的关系 应用架构的设计主要以应用(Application)的设计 驱动设计中提到的六边形架构、洋葱模型,包括领 度需要关注的问题。 为核心,向外围可以延伸到平台型企业架构对于应 而其中的领域对象设计在业务架构以及后续的数据 代表的分布式应用架构,以及此类架构模式下的常 域驱动设计的思想和方法,从业务架构到应用架构 用分层,分组的设计。例如大家关注的以微服务为 见问题,例如微服务如何划分如何组织,都是应用 架构在这个粒度需要关注的问题。 同样,以应用为基准,向内部延伸又会涉及到应用 架构中都会提及,本框架充分融合了企业架构与领 以及后续展开的数据架构,都秉承以领域对象设计 作为架构的核心要素,跨越架构边界,使领域对象 作为一条主线,串联起各个架构视图,也有利于保 证各类架构的连贯和一致性。 © ThoughtWorks, Inc. All Rights Reserved. 42
43. 4.1 应用架构元模型综述 应用架构的内容元模型包括“端口”、“结构”、“状态”三个部分,如下图所示: • • • 结构部分用来对 IT 系统的职责、边界建模,其中包括,应用组件、应用、应用组、应用层 端口部分用来对应用的出入口建模,其中包括应用服务和扩展点 状态部分用来对应用状态的变更建模,其中包括领域对象和不变量 业务流程 使用 端口 应用服务 应用层 实现 扩展点 技术服务 应用组件 结构 包含多个� 包含多个� 状态 应用组 包含多个� 不变量 识别多个�需要同时变更 应用 领域对象 变更 使用 实现 数据对象 访问 ( 图 4.1-1 企业级应用架构元模型 ) 4.2 应用架构元模型应用 4.2.1 平台化趋势对应用架构提出的新挑战 平台化趋势意味着企业 IT 系统的形态逐渐从扁平结 构转向分层结构,即一部分应用提供可复用的能力, 组成底部的平台,而其他应用建立在平台之上。除 了能力复用外,另一个提升 IT 支撑响应力的关键是, 提升 IT 系统各组成部分的自治性,使得变更能够相 对独立的、以小步快跑的方式发生。因为无论是创 新也好,集中管控也好,虽然变化速率不同,但变 化始终存在,既然变化不可避免,我们应将精力投 入到应对变化上。 © ThoughtWorks, Inc. All Rights Reserved. 43
44. 在我们的经验中,应用边界划分不合理会对应对变 化产生明显的负面作用: 功能 维度 运行 维度 粒度过大 粒度过细 • 多个团队在同一个物理边 界内,变更计划和所需资 源容易冲突,协作复杂 • 变更实现难度高,质量保 障困难或耗时 • 若一个变更常常 散布在多个物理 边界内,集成、 测试、部署负担 重、耗时,且常 常伴随着高成本 的跨团队沟通协 调 • 受限于物理边界,无法将 故障隔离在局部区域,因 故障级联影响业务支撑 • 受限于物理边界,无法按 需调整应用的容量,造成 资源浪费 • 基础设施升级、 变更工作量大, 或对团队自动化 运维能力要求高 • 平添大量网络通 信的开销,反而 降低整体性能 这些负面作用会拖慢 IT 支撑的响应力或稳定性,因 此,“如何划分 IT 系统的边界,以合理的布局更好 地应对变化”是需要解决的挑战。在平台化趋势之 前就已经开始流行的微服务架构风格的催化下,这 个挑战就已凸显,而平台化强调可复用的服务,必 限界上下文(Boundary Context):是业务上下文 的边界,在该边界内,当我们去交流某个业务概念 时,不会产生理解和认知上的歧义(二义性),限 界上下文是统一语言的重要保证。 统一语言(Ubiquitous Language):是 Eric Evans 在《域驱动设计 - 处理软件核心中的复杂性》中使 用的术语,用于构建由团队,开发人员,领域专家 和其他参与者共享的语言,也称为无处不在的语言、 通用语言、泛在语言。统一语言是在限界上下文中 建模的,在其中标识表达了业务领域的术语和概念, 并且不应该有歧义。 带着对于业务上下文边界的理解,使用业务、技术 都能理解的统一语言,以两大阶段实现边界划分: 1. 从功能需求层面出发,按“单一职责”原则划 分逻辑边界 2. 加入非功能需求,按架构质量属性调整逻辑边 界并划分物理边界 然会对原有系统进行打散和重组,进一步加剧了这 这个设计过程可通过元模型提供的应用层、应用组、 4.2.2 如何划分 IT 系统的边界,以合理的 4.2.2.1 应用组建模 从上文的分析可以看出,边界划分其实从应用架构 主要作用是: 个挑战。 布局更好地应对变化 视角出发,对功能、运行层面变化的应对设计,是 应用架构设计的重要部分。我们在进行应用架构设 应用、应用组件进行不同层次的边界划分建模。 应用组是一种大比例结构的逻辑边界划分结构,其 • 应用组作为一种粗粒度的划分,帮助我们快速 • 在微服务化的大背景下,物理边界逐步碎片化, 计的过程中,融合了领域驱动设计中的限界上下文 与统一语言的概念,延续业务架构部分中对于领域 对象的识别和子域划分,结合组织与技术的要素, 从多个方面充分考量对于应用的建模。 找到进一步划分的切入点 我们在与利益干系人对话时,需要一个能够代 表一组相关物理边界的结构,以避免不必要的 细节干扰 © ThoughtWorks, Inc. All Rights Reserved. 44
45. 在结构上,应用组包含了多个应用(物理边界)。 而维修保养和配件销售又是售后服务中的两 应用组常常对应到数字化产品级别,例如 CRM 系 个不同业务场景。 统(客户关系管理系统,其下可能包括客户档案管 理应用、客户忠诚度管理应用);在业界流行的按 我们可依此快速建立一个两级的应用组, 某个中心。 步工作。 这个结构并不精确,但足够我们进行下一 中心划分的中台 / 平台架构里,应用组常常对应到 应用组的建模依据主要来自于业务架构的业务、组 织两部分成果的输入。在从 0 到 1 的应用架构设计 场景里,这个步骤不求精确,主要是帮助我们建立 划分的起点。例如: 汽车行业的经销商,会同时开展新车销售和 售后服务两个不同的业务,在经销商内部一 般也由不同的组织负责。 4.2.2.2 应用组件建模 应用组件是一种细粒度的应用逻辑边界划分结构, 是对功能、数据的封装。 向上,一个或多个应用组件可组成一个应用(物理 边界),向下,就是代码实现层面的结构设计了。 因此,应用组件是架构层面运用“单一职责”原则 的最小单元。 按职责类型分解,应用组件可分为四种常见的参考类型: 类型 功能 数据 例子 变化原因 流转类 支撑某个流程或流程中 的一段活动 流程的状态流转信息和 决策证据 结账组件,其支撑的流 程是结账流程,管理的 数据是订单 流程编排变化 规格类 支撑某个业务规则,给 出专业意见 一般不管理数据的生命 周期,只负责加工给出 结果 • 验证:如发票是否逾 期 • 筛选:三月内消费过 的客户 • 计算:计价、导航路 线建议 业务规则的计算逻辑变 化 视图类 支撑某个业务活动所需 的整合信息 一般不管理数据的生命 周期,只负责加工给出 结果 • 商品信息的整合展示 • 统计报表 视图组装逻辑变化 配置类 为前三类提供配置输入 基础的资源信息 商品目录设置内容管理 系统中的配置功能规则 的开关 前三类对配置要求的变 化 © ThoughtWorks, Inc. All Rights Reserved. 45
46. 一般来说,我们建议从流转类的应用组件开始识别, 一是隐式业务边界的识别。在对业务流程分析时, 模依据主要来自于业务架构的业务流程、业务对象、 的工作环境不同,其关注点可能不同,这往往会成 再延伸至规格类、视图类,最后再识别配置类。建 业务规则。其过程可总结为三个子步骤: 地点、角色变化时,我们面对的业务干系人和他们 为不同的变化原因。通过识别这类隐式的业务边界, 这可以帮助我们细分数据对象和应用组件,例如: 子步骤一:功能和数据识别 线上订餐流程中,客户提交订单并完成付款 逐层分解业务流程,从活动、任务、步骤中可以得 后,订单会被派单至厨房备餐。即使在业务 到相对细粒度的业务需求,即 IT 系统需要提供的功 架构的产出中没有识别出客户订单和厨房备 能;将业务对象转化为不同类型的数据对象。 餐单据可能是不同的业务对象,也可以从地 点和角色的变化将订餐结账、备餐识别为不 子步骤二:功能与数据关联,识别应用组件 同的应用组件 按不同组件类型将功能与数据对象关联对应,得出 应用组件。在流转类组件建模时,有两个关注点需 要特别注意: 采购申请 <<应用服务>> 实现 实现 采购单组件 <<应用组件>> 采购单行组件 <<应用组件>> 采购单 <<实体>> 采购单行 <<实体>> 变更 保障�必须同时变更 变更 单、行金额一致 <<不变量>> 二是数据对象变更一致性约束的识别。在流转类应 用组件的建模过程中,应该尽可能识别业务规则中 对于数据对象变更的一致性约束,以元模型中的“不 不变量要保护的 两个数据对象,分 别由两个组件各 自管理,这可能说 明应用组件的粒 度过细,在后续划 分物理边界时,容 易出现事务边界 被破坏的情况 采购申请 <<应用服务>> 实现 采购单 <<应用组件>> 变更 采购单 <<实体>> 保障�必须同时变更 采购单行 <<实体>> 单、行金额一致 <<不变量>> 采购单.金额 = sum(采购单行.金额) ( 图 4.2-2 服务、组件、数据、不变量的关联 ) © ThoughtWorks, Inc. All Rights Reserved. 46
47. 变量”建模。不变量代表了哪些数据对象需要被同 时改变,我们可以依此复查,是否将应用组件拆分 得太细,破坏了事务边界。 子步骤三:识别、调整各应用组件之间的依赖关系 识别各组件间的依赖关系,在这里尽可能避免两种 依赖: 一是尽可能避免依赖容易变化的组件。尽管可以 定义契约,但容易变化的组件容易打破先前定义 的契约。 二是尽可能避免出现双向依赖。双向依赖往往对可 适配性产生负面影响,可通过引入第三个组件或扩 展点(详见“应用服务与扩展点”)解耦。 结账 <<应用组件>> 生成支付请求 双向依赖 支付 <<应用组件>> 4.2.2.3 应用建模 有了应用组件作为“原料”,应用架构的物理边界 设计就有了输入,下一步的目标是识别是否存在架 构质量属性冲突,作为应用建模的重要参考,调整 逻辑边界,并确定物理边界。质量属性冲突包括: • 该边界内是否存在变更频率冲突 我们倾向于将高频变更的应用组件与其他应用组件 阻隔开。物理边界意味着部署的独立性,不容易产 生发布计划、部署所需资源上的冲突。如果一个功 能扩展带来的变更,集中在某个应用、甚至应用组 件内,其协作成本相对更低。 • 该边界内是否有特别的移植性要求 该要求指应用迁移到不同组织、业务运作方式的能 力,或者换一个角度来说是应用承接新业务模式的 能力,这恰巧是平台所需要的关键能力。在实现某 一个业务模式时,必然存在该业务模式的特定需求 和可以支持多个业务模式的公共需求。我们倾向于 将特定需求和公共需求的实现隔离到不同的应用组 变更订单结余 件、甚至应用里。以便新业务模式入住时,方便实 现功能扩展以及实现部署要求。 结账 <<应用组件>> 变更订单结余 结账适配器 <<应用组件>> 生成支付请求 单向依赖 实现 支付 <<应用组件>> 提供 支付成功 <<扩展点>> ( 图 4.2-3 通过扩展点将双向依赖转换为单向依赖 ) • 该边界内是否有特别的弹性要求 该要求指应用是否容易通过调整容量来应对流量变 化。在这里应用的粒度决定了容量调整的难度和成 本。因为应用的粒度太大,而流量变化只影响其中 某个应用组件,则扩容带来了不必要的成本浪费。 另一种情况是某个应用组件不能调整容量或者非常 © ThoughtWorks, Inc. All Rights Reserved. 47
48. 困难,这主要是因为其依赖于某个无法扩展的技术 • 组件)对报文进行加密,扩容意味着需要采买硬件 有时边界划分会受到法律、法规或行业规定的影响。 其他组件更容易应对弹性要求。 要求,中奖人抽取的实现需要通过公证处认证。我 组件。例如,某应用组件依赖硬件加密设备(技术 加密设备。因此,需要将这类应用组件隔离开,使 • 该边界内是否有特别的性能要求 该要求与弹性要求类似,将不同性能要求(请求处 该边界内是否有特别的合规要求 例如某业务是需要公证的抽奖活动,按照当地行业 们倾向于由已通过认证的外部应用服务来提供该职 责,或是将该职责独立划分为一个应用,减少认证 需要花费的时间。 理的快慢程度)的应用组件分开,特别是对于特定 基于以上冲突的进行逻辑边界调整,将由特别要求 维成本考虑并适合大面积使用,我们倾向于将其设 用组件原则上保留在一个物理边界,以元模型中的 问题,可能适合某个技术栈,但出于整体建设、运 计为一个独立的应用,与其他应用组件隔离开,使 得异构。典型的例子是,部分高性能场景适合用 C 语言实现。 • 该边界内是否有特别的可用性要求 该要求与弹性要求类似,将不同可用性要求的应用 组件分开,降低保障可用性要求的建设、运维成本。 例如,如果某个应用组件支撑的功能尚处在业务探 索阶段,那么可以适当降低其可用性要求,这要求 将其与承担核心功能的应用组件隔开。或是当故障 发生时,能否将故障隔离在局部范围,减少应用失 效造成的业务损失。 • 该边界内是否有特别的信息安全要求 例如,某应用组件需要保管信用卡持卡人信息,为 降低该信息被非授权访问的风险,我们倾向于将该 应用组件与其他应用组件拆开,将其独立部署在一 个加固的运行环境中。 的应用组件独立划分到各自的物理边界,剩余的应 “应用”表述该划分结果。 4.2.2.4 应用层建模 除了应用组之外,常见的一种大比例结构是分层, 因此我们也将应用层作为一种元素加入进来。我们 认为分层代表了企业对变化速率的认知,并为不同 的变化速率匹配架构设计目标和管理方法。并不是 所有的 IT 系统都需要“最高配”的架构属性,实现 成本也是重要的约束条件。一个处在业务探索期的 信息体统,其生命周期一般只有 6-12 个月,且变 化剧烈。为其达成过高的架构属性显然是不具备投 资合理性的。 另一方面,平台化架构中作为支撑层的 IT 系统在架 构属性上需要更多重视和投入。我们常常看到企业 仅仅在全景图纸上做了分层,但缺少架构设计、治 理中的实际举措,功能上的变更往往会击穿多层, 支撑层团队疲于奔命。例如 : © ThoughtWorks, Inc. All Rights Reserved. 48
49. 单四个行为,可将它们建模为应用服务―― 企业有多条业务线,各自有不同商品结构, 订餐结账 原各设置一个前台团队负责其应用的交付和 运营。 为降低成本,决定将各业务线的商品展示、 搜索等需求集中起来,设立商品中心作为平 台支撑层的应用 / 应用组。 这个初衷是好的,但如果商品中心仅仅是“复 刻”各业务线的商品结构,而未作相应设计 的话,面对多条业务线的多线需求,往往不 堪重负,成为瓶颈。 因此商品中心必须设计一个商品结构的元模型,可 通过运营人员组装的方式,为不同业务线的商品结 构建模。这样才能将前台各业务线的商品展示、搜 索需求变化就地消化。 因此,如果对分层做出设计,那么在职责划分上就 要做出应对,否则分层容易成为空中楼阁。 4.2.2.5 应用服务与扩展点建模 元模型中的应用服务最主要的作用是显式地向对外 定义一个契约。这在做应用组件升级 / 替换、定义 IT 服务级别等架构治理场景中会有帮助。应用服务 可用来对一组相关的应用组件功能集合建模,例如: 在线上订餐流程中,用户需要 IT 系统支持提 应用服务的来源可以是“自动化”的业务服务,如 果在业务架构采用了“能力建模”(见 3.2.3.4 能 力建模)也可以直接将其构建块转换过来: • • “能力组件”转换为“应用服务” “基础能力”转换为“功能” 另一方面,如果说应用服务显式定义了应用组件的 入口,那么扩展点则显式定义了应用组件的出口。 扩展点有两个作用: 一是反转对不稳定应用组件的依赖,降低其变化对 自身的冲击,这在“应用组件建模”一节中有提到。 二是增强可移植性质量属性,即不同的业务场景下 对于同一个应用组件的逻辑存在差异化需求,对业 务架构的“变化点”,根据当前应用状态上下文中 的业务身份,针对性选择适合的逻辑实现。例如: 某公司有零售门店,销售零售商品,同时在 店内还有餐厅,我们可以将客户结账识别为 一个可共享服务。结账后,商品订单需要派 单至仓库提货,而餐厅订单需要派单至厨房 备餐,这需要使用“放行履约”这个扩展点, 并找到两种业务模式的扩展实现关系。 交订单、发起付款、订单状态查看、取消订 © ThoughtWorks, Inc. All Rights Reserved. 49
50. 商品结账 <<业务流程>> 餐厅结账 <<业务流程>> 商品结账 <<应用服务>> 餐厅结账 <<应用服务>> 使用 使用 派单至仓库 <<应用服务>> 使用 实现/提供 商品订单 <<应用组件>> 商品订单履约插件 <<应用组件>> 实现/提供 餐厅订单 <<应用组件>> 使用 使用 结账 <<应用服务>> 实现/提供 派单至厨房 <<应用服务>> 商品订单履约插件 <<应用组件>> 订单管理 <<应用组件>> 实现 使用 实现 当付款后订单放行的扩展点 启动履约 <<扩展点>> ( 图 4.2-4 典型的扩展点建模结果 ) 总结来说,应用服务和扩展点是对边界概念的加强, 帮助我们理解跨边界的交互。 4.2.2.6 边界划分结果和依据的可视化 我们建议将边界划分的结果及过程依据保存下来并 可以开放给授权人员访问。这是因为我们常常见到 这样的问题:“新的功能应该放在哪个应用实现?” 这个问题背后的原因可能是应用的边界划分不清 晰,职责模糊,或者是边界划分的结果及依据丢失 了。常见的现象是我们看到一张张应用架构全景图, 由若干个方框组成,代表一个应用或应用组件。由 于缺少上下文,仅凭方框内的名字很难判断应用的 职责范围,所以不好回答“新的功能应该放在哪个 应用实现”这样的问题。 解决这个问题的难点是如何简练、清晰地描述应用 的边界和职责。在全景图的基础上,为每个应用 / 应用组件增加职责描述是一个不错的起点,但仅用 文字描述可能存在歧义。我们建议通过建立应用架 构与业务架构、数据架构的构建块映射来解决这个 问题。 © ThoughtWorks, Inc. All Rights Reserved. 50
51. 客户 <<Actor>> 使用 预约试驾 <<业务服务>> 实现 试驾申请 <<业务流程>> 试驾申请单 <<业务对象>> 参照/操作 使用 申请试驾 <<应用服务>> 实现 实现/提供 试驾安排 <<应用组件>> 试驾申请单 <<数据对象>> 操作 使用 申请店内车辆 <<应用服务>> 实现 店内车辆安排 <<应用组件>> 操作 试驾申请单 <<数据对象>> ( 图 4.2-5 典型的业务架构 - 应用架构 - 数据架构的构建块映射关系 ) 通过构建块映射关系(业务流程使用应用服务,应 用服务由应用组件提供,应用组件操作数据对象), 应用 / 应用组件在业务活动中的职责有了明确的表 达,再配合文字来描述引导阅读和理解,效果更佳。 我们推荐为每个应用组 / 应用 / 应用组件建立自己 的主页,将其与其他元素的映射关系作为内容显示 地展示出来。 最后,应用架构阶段更像是在为 IT 系统应该建设成 什么样子提出要求,所以应用架构设计应该是和技 术实现方案解耦的(虽然技术的升级可能使得应用 架构的设计风格产生变化),从而将技术变化隔离 在可控范围内。 组件名称 试驾安排 职责定位 相关业务活动 所有者 自动化试驾申请流程,支 持线上、线下渠道试驾申 请的统一管理 • 试驾申请流程 • 零售线索跟进 流程 • 零售产品组-1 实现的应用服务 依赖的应用服务 其它链接 • 申请试驾 管理的数据对象 • 试驾申请单 • 规划试驾路线 • 申请店内车辆 • 零售线索跟进 • 项目需求管理 • 项目代码仓库 • 项目部署流水线 提供的扩展点 • 试驾项目参与 门槛验证 ( 图 4.2-6 典型的应用 / 应用组件画布 ) © ThoughtWorks, Inc. All Rights Reserved. 51
52. 5 现代企业架构框架 — 数据架构 数据架构描述的是企业经营过程中所需数据的结 台是一种企业架构设计的整体结果,包含了不同视 需求。 据视角。良好的数据架构规划和设计,为数据中台 构及其管理方法,其目标是将业务需要转换为数据 值得一提的是,数据架构不等于数据中台,数据中 角(业务、应用,数据、技术),而数据架构是数 以及所代表的数据驱动运营、数据驱动业务都奠定 了好的基础。 © ThoughtWorks, Inc. All Rights Reserved. 52
53. 5.1 数据架构元模型综述 数据架构的内容元模型包括“结构”、“端口”两个部分,如下图所示: • • 结构部分用来对数据模型、数据处理建模,其中包括数据对象、数据组件 端口部分用来对数据模型的边界建模,其中包括数据服务 数据服务 使用了� 应用组件 实现了� 操作了� 加工了� 数据对象 使用了� 数据组件 使用了� 技术服务 ( 图 5.1-1 企业级数据架构元模型 ) 5.2 数据架构元模型应用 5.2.1 平台化趋势对数据架构提出的新挑战 长久以来,业界对数据架构的通用做法是:对于运 行类(Operational)场景和分析类(Analytical)场景, 应该使用不同的设计方法和技术支撑。 运行类场景以业务事务为主线,关注点是业务事务 运作证据的完整性和一致性,以及确保各类数据在 各业务单元间高效、准确地传递,实现跨业务单元 的事务推进,其设计方法和技术已经沉淀了很多年。 © ThoughtWorks, Inc. All Rights Reserved. 53
54. 运行类场景的数据架构设计,目前的关注点在于分 这个模式对于业务场景简单的企业环境工作得不 数据所有权定义以及数据自描述能力,为企业级的 显疲态。一方面,随着 IT 建设加速,数据源和分析 布式架构下,如何建立企业级一致的数据标准体系、 数据治理以及对于分析类场景的支持奠定基础。 分析类场景则需要对内、外部数据进行收集和加工, 用来评估业务运行表现(度量、分析、预测),或 者结合机器学习技术给出对于未来发展趋势预测和 判断,尝试构建数据驱动运营的企业组织。其设计 方法和技术可分为数据仓库、数据湖两个方向,它 们有各自不同的适用场景和技术栈,但共同点是与 运行类场景有显著的不同。 为此,许多企业组建了专职的集中式数据团队,将 分析类数据处理工作和其背后的复杂性打包成为一 个黑盒,提供端到端的统一的数据类企业级服务与 支撑。当我们从高处鸟瞰,往往可以看到为一个中 心化的数据架构。 错,但对于多业务线、业务平台化的企业环境已初 类场景的数量激增,对数据服务的响应力提出了更 高要求。另一方面,想要提供高质量的数据服务, 除了分析类数据的专业技能,还要求对于业务场景、 现有应用软件的深入理解。如果所有工作仍然只由 专职的集中式团队一肩挑,团队带宽的限制必然会 拖慢响应力。 因此,我们认为需要探索的是如何适当拆分过于集 中的分析类数据处理职责,为专职数据团队减负, 使其可以将精力投入到高价值的分析类场景中。 5.2.2 如何适当拆分过于集中的分析类数据 处理职责,缓解规模化瓶颈 要回答这个问题,需要先打开原先的数据服务黑盒。 不管是该服务的实现方案基于数据仓库还是基于数 数据应用场景 数据源 抽取 中心化的数据平台 服务 ( 图 5.2-2 从全景鸟瞰中心化的数据架构 ) © ThoughtWorks, Inc. All Rights Reserved. 54
55. 据湖,数据想要形成分析类价值,背后需要经过摄 在建模过程中,往往还会定义数据源,制定数据标 三大工序,数据架构元模型可以帮助我们对此建模。 中心化的数据架构中,这项工作一般由专职的数据 取(Ingest)- 加工(Process)- 能力包装(Serve) 准、定义符合分析需要的数据对象的目标模型。在 团队承担,人们认为这是理所当然的,因为只有他 们才具备分析类场景的专业技能。这个看法其实不 5.2.2.1 数据对象和数据组件建模 够全面,因为要完成这些工作,除了专业技能外, 数据对象是数据架构的核心模型,是从数据视角对 还需要对业务场景的理解,随着业务场景不断增多, 现实世界特征的模拟和抽象。运行类场景的数据对 专职的数据团队对于某个具体的业务场景的理解往 象一般由支撑该场景的应用组件管理,其设计原则 往弱于负责支持该业务场景的应用开发团队。 往往不适合用于分析。目前主流的处理方式是使用 数据流水线将运行类数据从应用组件背后的数据库 并且,由于应用开发团队在职责上不承担分析类场 据湖内。 对于由应用内部的数据结构改动可能造成的数据抽 抽取出来,再进行加工转换,保存到数据仓库 / 数 景,其对于数据抽取的支持优先级往往不高,由此, 取失效不敏感。于是,我们观察到团队之间的合作 数据组件最主要的作用是为数据加工工序建模,一 摩擦和一个不易扩展的数据架构。 般对应数据流水线,其将数据对象作为加工的输入 和输出。 应用组件 操作了� 线索 <<运行数据对象>> 以�作 为输入 抽取 <<数据组件>> 转化 <<数据组件>> 存取 <<数据组件>> 以� 为输出 线索事件 <<分析数据对象>> 使用了� 事件存取 <<技术服务>> 使用了� 每日线索报告 <<分析数据对象>> 以�为输出 聚合 <<数据组件>> 以�作为输入 数据集存取 <<技术服务>> ( 图 5.2-3 一种抽取、加工线索分析数据的建模示例 ) © ThoughtWorks, Inc. All Rights Reserved. 55
56. 5.2.2.2 数据服务建模 团队与专职的数据团队协作,定义数据原料的格式、 质量标准、抽取方案。 一个反直觉的模式是将分析类场景的职责(或者是 其中一部分职责)交还给应用开发团队。在应用架 通过数据服务,在架构层面,我们显式地定义了职 构元模型中,我们会将应用服务视作对外显式定义 责的边界,作为减少合作摩擦并解放专职数据团队 的一个支撑运行类场景的服务契约,那么是否可以 的部分精力的抓手。 将该理念移植到数据架构呢?即对外显式定义的一 个支撑分析类场景的服务契约:数据服务。 另一方面,随着大数据基础设施的服务化,应用开 发团队负责相对简单的度量分析也是可想象的空 例如,可以由应用开发团队承接提供分析类数据原 间。如同应用分层一样,分析类数据场景或许也可 料的职责,提供数据摄取服务(Ingest)。由应用 以分为两层:贴源层和衍生层。 应用组件 操作了� 线索 <<运行数据对象>> 以�作 为输入 抽取 <<数据组件>> 转化 <<数据组件>> 存取 <<数据组件>> 实现了 以� 为输出 线索事件 <<分析数据对象>> 使用了� 线索事件抽取 <<数据服务>> 事件存取 <<技术服务>> 使用了� 每日线索报告 <<分析数据对象>> 以�为输出 聚合 <<数据组件>> 以�作为输入 数据集存取 <<技术服务>> ( 图 5.2-4 通过数据服务界定职责边界 ) © ThoughtWorks, Inc. All Rights Reserved. 56
57. 贴源层 这个举措目前的瓶颈是专业知识和工具。因为即使 贴源代表紧靠数据源,某个业务场景自身的业务运 区分数据集的建模方式,分析类数据集往往为了存 营分析需求,其需要的绝大部分数据原料就在支撑 这个业务场景的应用中,需求和实现相对稳定。例 如,销售线索响应的前置时间趋势,其依赖的主要 数据原料是销售线索的跟进事件,它们就在销售线 索管理系统这个数据源里。 是贴源层,我们仍然建议按照运行类、分析类场景 储时间相关的不可变事实,有更大的数据量,还是 需要使用大数据技术栈来存储和加工的。只是前者 到后者的加工过程现在由同一个团队负责,减少跨 团队协作成本。 所幸的是,在专业知识层面,贴源层的建模相对简 衍生层 单,标准也容易对齐。而工具层面,对大数据基础 在贴源层之上的是衍生层,这里的分析类场景需要 整合多个数据源的数据原料,往往需要经过多次中 间处理,实现难度较高,并且需求和实现相对容易 变化。例如,整合多个数据源的客户行为数据,为 客户打上标签。 那么,将贴源层的度量分析工作交由负责该数据 源的应用开发团队,可进一步使得专职大数据团 队可以集中精力承担衍生层的工作,从而缓解规 模化瓶颈。 衍生层 设施提出了更高的自助服务要求,如果企业选择了 云作为解决方案,主流云厂商都提供了托管的大数 据产品。 目前对于企业级数据架构尤其是分析类场景的去 中心化趋势已经初见端倪,在技术社区逐渐兴起 的 Data Mesh( 数据网格,参考文献 8) 也逐渐被 社区采纳和实践,我们在企业级数据架构框架元 模型上的设计也为企业响应这样的趋势提供了基 础和弹性。 分析报表 <<数据服务>> 分析预测 <<数据服务>> 数据加工 数据加工 贴源层 分析报表 <<数据服务>> 数据订阅 <<数据服务>> 分析报表 <<数据服务>> 数据订阅 <<数据服务>> 分析报表 <<数据服务>> 数据订阅 <<数据服务>> 数据加工 数据加工 数据加工 数据源 数据源 数据源 ( 图 5.2-5 贴源层与衍生层示例 ) © ThoughtWorks, Inc. All Rights Reserved. 57
58. 6 现代企业架构框架 — 技术架构 技术架构是对某一技术问题(需求)解决方案的结 企业架构中的技术架构聚焦在对业务、应用、数据 互关系构成。广义上的技术架构是一系列涵盖多类 述。我们希望结合当前企业数字化建设的主流趋势 构化描述,由构成解决方案的组件结构及之间的交 技术问题设计方案的统称,例如部署方案、存储方 案、缓存方案、日志方案等等。 问题 Problem 愿景 Vision 架构模式模型 上下文 模式 Context Pattern 原则 Principle 等上层架构设计意图的开发实施方案的结构化描 和新技术成熟普及的大环境,阐述我们对技术架构 设计的观察及思考。 技术架构元模型 决策 Decision 规范 Specification 技术平台 架构策略模型 Platform 约束 Restriction 架构方案模型 技术服务 Service 组织 Organization 技术组件 Component 资源 Resource ( 图 6.1-1 企业级技术架构元模型 ) © ThoughtWorks, Inc. All Rights Reserved. 58
59. 6.1 技术架构元模型综述 技术架构元模型是对技术架构组成要素的抽象建 模,用来定义用于结构化描述架构设计的模型元素, 技术架构元模型的定义需要满足当今企业数字化建 设的实际需要。 为了适应当今企业对技术架构的描述需求,我们在 经典企业架构框架方法的基础上对技术架构元模型 进行了补充扩展,内容主要由架构模式模型、架构 方案模型、以及技术策略模型组成。 6.1.1 架构模式元模型 模式分析是快速认识问题本质以及经验复用的有效 实践,我们在元模型内容中增加了架构模式模型, 引入模式分析视角,对上层架构设计意图、问题进 行分析建模,目的是快速、准确定位设计和复用技 术方案。 6.1.2 架构方案元模型 架构方案模型是描述技术架构设计的核心元模型, 包含三个主要核心元素。基于平台型企业架构技术 设计的特征,我们使用了平台、服务、组件这三个 层次递进的元素对技术架构进行建模。 6.1.3 架构策略元模型 架构策略模型是为了约束和规范架构设计过程,保 证架构设计遵循企业整体的架构设计愿景与需求, 符合企业整体的架构设计原则与规范,是对于架构 设计过程本身的约束和指导。 需要说明的是,架构策略模型同样适用于业务架构、 应用架构和数据架构部分,例如企业级的数据标准 就属于架构策略元模型的规范对应的内容。 6.2 技术架构元模型应用 6.2.1 富技术时代如何做好平台型技术架构 另一方面,在平台型技术架构的设计中,作为多业 受益于新技术的涌现和不断成熟,及技术工具的极 术架构设计所需覆盖的规模、应对的复杂度今非昔 设计 大丰富,技术架构设计的灵活度和效率都得到了显 著提升。 务条线、多应用、多数据场景落地的技术基座,技 比。加之“富”技术条件的加持,一个好的技术架 构设计的困难度实际上指数级增加。而一直以来, © ThoughtWorks, Inc. All Rights Reserved. 59
60. 本质上是强依赖架构师的经验和能力的技术架构设 计方法和过程,在这样的语境下,一系列挑战和问 • 对于架构需求把握不足或者没有架构需求的分 析意识,过早的进入架构设计,导致系统复杂 度变高甚至过度设计,为开发落地带来额外的 研发成本 • 架构设计采用的技术和工具过于超前,超出 团 队 成 员 技 术 水 平, 造 成 落 地 难 度 高, 新 成 员上手速度慢,进而对整体进度和实施效果 对设计方案继续调整和迭代,当技术发展变化 很快时,设计完成时方案已经过时 题再次凸显: • 架构设计过程时间长,完成后团队就不再愿意 因此,富技术时代下,做好平台型技术架构设计的 关键是: • • • 系统性的分析架构需求 结构化的设计架构方案 沉淀可复用的架构经验 造成影响 技术架构元模型的应用 上层架构设计 技术策略模型 业务、应用、数据 愿景、原则、规范、... 设计意图输入 问题 Problem 上下文 影响因素输入 问题分析输入 模式 Pattern 模式 输入 技术平台 决策 输入 决策 Decision Context 匹配最佳实践 知识复用循环 其他模型 领域参考模型 领域扩展模型 Platform 技术服务 Service 技术组件 Component 沉淀技术经验 ( 图 6.2-2 技术架构元模型的应用 ) © ThoughtWorks, Inc. All Rights Reserved. 60
61. 6.2.2 系统性的分析架构需求 架构模式元模型 上层架构设计 业务、应用、数据 1 设计意图输入 问题 Problem 上下文 Context 技术策略模型 愿景、原则、规范、... 问题分析输入 影响因素输入 模式 Pattern 模式 输入 匹配最佳实践 技术平台 决策 输入 决策 Decision 其他模型 技术服务 Service 技术组件 Component 知识复用循环 领域参考模型 领域扩展模型 Platform 沉淀技术经验 ( 图 6.2-3 技术架构元模型的应用 ) 在架构咨询过程中,我们看到很多由不良架构引发 问题 Problem、上下文 Context 个关键原因,即缺少前期对架构设计需求的系统性 问题和上下文是对上层架构设计输入的分析和 的问题现象,分析背后的核心因素时,都指向了一 分析。当技术团队被问到为什么使用某种设计思路, 为什么使用某种技术组件时,得到回答往往跟其自 身的主观经验有很大关系。 这带来的重要影响是架构质量与设计者经验密切相 关,而经验的传递成本很高,架构决策过程中的信 息基本都被丢弃,只留下架构设计结果,导致架构 最终难以演进和迭代。因此我们在技术架构元模型 中增加了架构模式元模型,引入模式分析的方法对 架构的设计过程进行建模。 解读。 问题描述了架构需求背后要解决的实际问题是什 么,例如业务中台中如何保证前台获得一致的服务 等级承诺(SLA)。 上下文描述了与问题相关的背景信息,例如问题产 生的背景是什么,需要考虑什么样约束条件,期望 达到什么样的效果等等。 © ThoughtWorks, Inc. All Rights Reserved. 61
62. 模式 Pattern 管理,规范化决策过程及决策内容,是企业构建可 模式是通过对问题和上下文的分析,快速映射到的 素包括来自顶层设计的 IT 技术战略、架构策略、技 演进式的架构治理能力的关键。通常决策的影响因 业界或企业内的最佳实践。 术选型、跨功能需求、IT 实施方法等。 模式是解决某一类问题的方案原理的总结,通过模 实践总结 理解,在问题不变时,模式具有相对的稳定性,是 通常使用问题、上下文对上层设计意图进行系统性 式技术人员可以快速构成对问题及方案背后原理的 沉淀技术知识的最佳形式。 的分析后,得到的问题如果准确,那么它在业界往 往已经存在成熟的解决方案模式可以参考。架构模 决策 Decision 式元模型的价值是帮助企业识别和利用已经成熟的 最佳实践,提高架构设计质量,降低架构设计成本。 决策描述了在模式的基础上,引入与具体架构方案 设计相关的影响因素后,形成的符合满足架构建设 我们以上面提到的中台如何提供一致的服务等级这 或决策表。 何处理接入前台之间的跨功能需求(安全、存储、 需求的技术类决策,决策的描述方式可以是决策树 个问题为例,经过分析,背后的技术问题定义是如 性能、可靠性等)隔离问题,由此可以快速确定对 对决策的建模有助于使企业建立起规范的技术决策 应的基础架构是多租户(Multi-tenancy)架构。 多租户架构设计模式 Multi-tenancy design patterns UI App Instance UI App Instance Business Layer App Instance Business Layer App Instance Shared Database Tenant A, B & C 逻辑隔离模式 Tenant A Tenant B UI App Instance Tenant C 数据隔离模式 UI App Instance (Tenant A) UI App Instance (Tenant B) UI App Instance (Tenant C) UI App Instance UI App Instance (Tenant A) Business Layer App Instance (Tenant A) Business Layer App Instance (Tenant B) Business Layer App Instance (Tenant C) Business Layer App Instance (Tenant A) Business Layer App Instance (Tenant B) Business Layer App Instance (Tenant C) Business Layer App Instance (Tenant B) Business Layer App Instance (Tenant C) Business Layer App Instance (Tenant A) Tenant A Tenant B Tenant C Tenant A Tenant B Tenant C Tenant B Tenant C Tenant A 应用进程隔离模式 完全隔离模式 混合隔离模式 ( 图 6.2-4 多租户架构设计模式示例 ) © ThoughtWorks, Inc. All Rights Reserved. 62
63. 多租户架构在业界有标准化的成熟模型可以参考,因此我们可以将其作为参考架构,再结合上下文中的需求背 景做架构细化,最后引入技术策略模型进行技术选型、实施规划等方面的技术决策,产出最终技术架构方案。 至此我们通过以上四个元模型元素描述了对架构设计过程的建模,实际应用中,每一个元素可以根据企业的架 构设计规范,建立对应的参考模型(分类、图示、描述)用以规范架构过程的产出物标准,这里暂不进行展开。 6.2.3 结构化的设计架构方案 架构模式元模型 上层架构设计 业务、应用、数据 愿景、原则、规范、... 设计意图输入 问题 Problem 2 技术策略模型 问题分析输入 上下文 Context 影响因素输入 模式 Pattern 模式 输入 匹配最佳实践 技术平台 决策 输入 决策 Decision 其他模型 技术服务 Service 技术组件 Component 知识复用循环 领域参考模型 领域扩展模型 Platform 沉淀技术经验 ( 图 6.2-5 架构方案模型 ) 在复杂的平台型技术架构中,是否能够对架构元素 做准确的识别和直观的描述,直接影响架构设计方 案是否被易于理解、使用和管理。在现实世界中, 2. 架构元素的职责之间相互正交 3. 架构元素之间存在清晰可辨的层次关系 结构化是我们理解、记忆和描述复杂事物的最佳方 相对于经典技术架构元素,我们弱化了逻辑、物理 表现力,因此我们在设计时对元模型的主要考量因 架构元素,同时我们对元素的职责进行了符合平台 式,我们希望将其应用在架构设计中来增强架构的 素有: 1. 架构元素的职责明确且易于理解 上的分类,使用带有明确职责属性的分类方式定义 化特征的重新定义,最终组成轻量的结构化的描述 元模型。 © ThoughtWorks, Inc. All Rights Reserved. 63
64. 架构方案元模型关系 应用架构层 技术架构层 应用服务 实现 使用服务 位置 Location 构建打包 应用组件 技术服务 Service 实现 技术组件 Component 技术平台 Platform ( 图 6.2-6 技术架构层与应用架构层元模型关系 ) 技术组件 Component 缓存等。技术服务属于逻辑模型,作为一种对服务 技术组件用于描述技术服务的实现,是可部署的物 时作为其参考描述信息。 理组件,例如可运行的软件系统或构建打包后的应 用组件,技术组件通过架构模式的决策元素,与技 术选型进行关联。 与技术组件相关的映射示例 能力的描述,与之相关的 SLA 等跨功能性需求会同 技术服务的描述示例(参考 SLA 服务等级描述) 名称 XXX 网关服务 描述 XXX 职责 XXX 名称 类型 技术组件 数据存储 技术服务 MySQL 正常运行保证时间 99.99% 销售订单服务 应用组件 OrderService JAR 响应时间 <= 10ms API 网关 技术服务 Zuul 故障处理时间 故障等级 1 < 24h,故障等 级 2 < 48h 服务提供者 XXX 技术组件 / XXX 云平台 技术服务 Service 技术服务用于描述实现上层架构设计意图所需的技 术能力(或功能),例如网关、防火墙、数据存储、 技术服务的价值在于将上层架构中的技术需求与实 现相分离,以保证架构设计的稳定性和实施上的灵 活性。在技术架构治理中,技术服务是企业 IT 的核 © ThoughtWorks, Inc. All Rights Reserved. 64
65. 心能力对外的重要展现形式,也是 IT 的核心资产之 服务为切入点展开高阶设计和详细设计。 整体 IT 服务水平。 首先明确上层架构设计意图中对技术能力的依赖是 技术平台 Platform 诺等级,结合架构模式中的决策模型选择技术组件 一,从技术服务的角度实施管理将有助于提升企业 技术平台是用于描述由一组技术服务构成,提供解 什么,进而定义出技术服务所需提供的 SLA 服务承 的选型。 决特定技术领域能力的逻辑模型,它主要用于从更 对于需要多种技术服务组成而成的能力描述加入技 复杂架构的理解和使用,统一对用户提供一致的 技术服务为主描述清楚架构意图和逻辑,在详细架 高的层次对技术服务进行管理,简化架构参与者对 SLA 服务承诺。 下面是技术平台在架构设计中的典型用途: 1. 技术平台作为技术服务的提供者 例如微服务架构通常需要多种技术服务提供支撑, 在一些企业内部或技术产品中,将其统一归入微服 务平台。 2. 技术平台作为技术组件部署运行的承载者 例如当架构中需要描述部署方案时,技术平台可作 为对部署载体的描述,例如提供容器化运行的 PaaS 术平台进行统一描述,在高阶设计中以技术平台和 构设计中进而展开技术组件级别的设计。 6.2.4 沉淀可复用的技术知识 技术架构中的复用涉及两个方面: 1. 通过技术组件、平台提供可共享的技术服务 2. 架构设计过程中产生的可重复利用的技术知识 技术服务共享在企业中已经通过 IaaS、PaaS 等技 术平台得以实现,在最后一个实践中,我们要关注 的问题是技术知识的复用。 平台。 企业架构设计背后都是成本的投入,从技术管理的 3. 技术平台作为外部服务的提供者 生更多的价值;从技术设计的角度,架构师希望用 例如使用 AWS 等云平台提供的技术服务时,架 构设计上即可忽略对技术服务支撑的技术组件的 描述。 角度,管理者希望一次投入可以在更长的时间里产 更短的时间完成更高质量的架构方案。因此很多企 业在技术治理策略中,将技术知识作为重要的技术 资产进行管理。 实践总结 下面从技术架构知识管理关注的两个核心问题展开 结构化的架构描述有利于企业从多种视角对架构进 • 行管理和治理,实际架构设计过程中,可以由技术 我们对元模型在知识复用上的设计意图: • 当完成架构设计后,我们从中得到了什么? 有什么是可以在以后的设计中重复利用? © ThoughtWorks, Inc. All Rights Reserved. 65
66. 架构模式元模型 上层架构设计 技术策略模型 业务、应用、数据 愿景、原则、规范、... 设计意图输入 问题 Problem 影响因素输入 问题分析输入 模式 Pattern 上下文 Context 模式 输入 匹配最佳实践 决策 输入 决策 Decision 领域参考模型 领域扩展模型 Platform 技术服务 Service 技术组件 Component 知识复用循环 其他模型 3 技术平台 沉淀技术经验 ( 图 6.2-7 复用技术架构设计 ) 当完成架构设计后,我们从中得到了什么? 有什么是可以在以后的设计中重复利用? 通过元模型可以看到,架构设计的产出物包含结果 在现实世界中,能够被广泛重复利用的事物都有一 中作为隐性内容被忽视了,对架构过程的建模的目 定性。稳定是可复用的基本前提,复用的价值是从 产出物和过程产出物,过程产出物往往在设计过程 的之一就是将过程产出物显性的表现出来。 个共同的特征,就是在较长的时间里具有很高的稳 外部变化时而自身可以不变中的获得的。 结果产出物的价值主要体现在对建设实施的指导, 在技术架构元模型中,架构方案是架构模式在特定 程,其价值主要体现在技术知识传递环节,在知识 输入的设计意图、影响决策的技术策略等,这些因 而过程产出物则代表了对问题、方案的思考分析过 管理领域中 “渔” 比 “鱼” 价值更高。 场景下的实例化结果,其中特定场景包含上层架构 环境而变的信息是不稳定部分。 架构模式元模型中元素同样是对“经验”的结构化 表达,使仅存储在少部分设计者大脑中的信息得以 可视化的展现,便于经验的传递和学习,这也是架 架构方案 = 模式 ( 问题,上下文,决策 ) 构模式元模型的重要作用之一。 © ThoughtWorks, Inc. All Rights Reserved. 66
67. 因此在一个架构设计中,问题、上下文、决策都是变量,只有模式是稳定的。 最后我们可以将可复用的技术知识对应到三类架构产出物上: 模式 经验 方案 解决某类问题的最佳实践,只要问题存在,模式就是稳定不变的,不受使用场景 的变化而变化,可以结合领域扩展模型对模式细节展开描述。 经验是特定场景中对模式的实例化应用的过程记录,经验可以加快对模式的理解, 学习如何结合实际场景应用模式解决问题,经验的内容由架构模式元模型中的问 题、上下文、决策三个元素组成,每个元素可以通过定义对应的参考模型展开描述。 最后是架构设计结果,作为案例供后续参考。 © ThoughtWorks, Inc. All Rights Reserved. 67
68. 7 总结 至此,我们完成了针对现代企业架构框架 (MEAF) 架方法论,以应对现阶段以平台化中台化为代表, 级应用架构、企业级数据架构和企业级技术架构的 构规划和设计过程中遇到的一些实际问题。 的四个主要部分的阐述,即企业级业务架构、企业 核心元模型以及元模型的应用场景和建模方法。 在框架的构建过程中,我们希望结合 ThoughtWorks 多年在敏捷精益、企业架构顶层规划与领域驱动设 计为特色的 IT 系统落地、以用户为中心的产品化设 计等方面的经验与实践,融合成熟的企业架构理论 与企业架构框架方法,针对平台型企业架构规划与 落地的新背景,为正处于数字化转型浪潮之中,尤 其是以平台化架构为原生企业架构选型的企业,总 结与提炼一套适配可真正落地的轻量级企业架构框 从面向业务功能到面向企业核心能力的现代企业架 最后,在企业数字化转型中实践越多,我们越知道 企业数字化转型的艰难与复杂,也越深感在云原生、 平台原生、分布式架构大放异彩,企业不断强调敏 捷、创新、产品化、可落地性的今天,需要重新关 注企业架构领域以及相应的方法论,并持续结合当 前的背景和趋势对于企业架构框架做出相应的演进 与适配,使之真正成为真正能帮助企业在现代化架 构、技术和趋势的背景下完成数字化转型的重要武 器,助力企业数字化转型成功。 © ThoughtWorks, Inc. All Rights Reserved. 68
69. 8 参考文献 参考文献 1 《国际数据公司(IDC)3 月份的 CXO 月度调研》 国际数据公司 参考文献 2 《趋势洞察:数字加速,在危机时期推动增长的主要技术》 IBM 商业价值研究院 参考文献 3 《从技术走向商业看“中台” 投资机会》 中银国际证券 参考文献 4 《中国行业趋势报告 -2020 年度特别报告》 罗兰贝格 参考文献 5 2019 恒生电子技术开放日 参考文献 6 A Framework for Evaluation of Enterprise World Academy of Science, Babak Darvish Rouhani, Mohd Naz’ri Mahrin, Fatemeh Nikpay, Maryam Khanian Najafabadi, Pourya Nikfard,Engineering and Technology International Journal of Economics and Management Engineering Vol:9, No:1, 2015 参考文献 7 《Domain-Driven Design》Eric Evans 参考文献 8 《Data Mesh Principles and Logical Architecture》Zhamak Dehghani 参考文献 9 《TOGAF 标准 9.1 版》 The Open Group, 张新国等译 ,2016 参考文献 10 《Enterprise_architecture_framework》 Wikipedia © ThoughtWorks, Inc. All Rights Reserved. 69
70. 作者: 孔磊 首席咨询师 王健 首席咨询师 马徐 赵志桐 周宇刚 首席咨询师 首席咨询师 首席咨询师 (以上排名不分先后,作者均来自 ThoughtWorks 中国 EMPC 业务线) EMPC 业务团队: EMPC(Enterprise Modernization, Platform & Cloud, 现代化企业、平台及云业务线 ) 作为 ThoughtWorks 全 球业务线之一,致力于成为企业数字化转型的全方位合 作伙伴。EMPC 围绕以下四个业务主航道,构建领先的 市场竞争力 : 1. 数字商业模式探索与验证(Digital Business Model Discovery and Validation),旨在帮助面临数字化 转型挑战中的客户探索“如何围绕数字化能力构建 新的商业模式”。 2. 企 业 架 构 设 计 与 演 进 (Enterprise Architecture 联系方式: Design and Evolution),以中台为支点,帮助企业 进行现代数字企业架构的设计与演进,改造遗留系 统,加速企业数字化转型的进程。 3. 研发基础设施(Development Infrastructure)通过 010-56933000 marketing-china@thoughtworks.com 规划设计一站式研发平台,结合云原生架构,构建 高效灵活的研发过程支撑平台,同时采用先进的技 术理念和工具帮助客户提升研发效能和架构能力。 4. 云原生转型及演进(Cloud Native Transformation and Evolution)旨在帮助企业充分利用云和云原生技术, 围绕云迁移、云原生平台、多云架构及全球基础设施, 设计和实施云原生转型蓝图,快速提升业务响应力并 重塑 IT 能力,加速数字化进程。 ThoughtWorks 洞见 ThoughtWorks 商业洞见
71.
72.

trang chủ - Wiki
Copyright © 2011-2024 iteam. Current version is 2.132.1. UTC+08:00, 2024-09-23 23:35
浙ICP备14020137号-1 $bản đồ khách truy cập$