【专题推荐】AIGC或将会改变内容领域的生产方式,带来整个行业的变革? 了解详情
写点什么

架构设计实践五部曲(二):业务架构与产品架构设计实践

  • 2019-09-20
  • 本文字数:1980 字

    阅读完需:约 6 分钟

架构设计实践五部曲(二):业务架构与产品架构设计实践

系统架构的分解,先从业务域进行分解。狭义的业务域具有商业的概念,从这个概念来看,有的系统没有业务域,当如果宽泛一点来看,业务域就是问题域,问题域总是存在的。


业务域的分解,首先是从系统需求入手,在需求初期可能你就得到的只是一句比较模糊的需求描述,这些需求可能来自于老板、运营或者用户(比如下图的场景)。直接把这句话作为核心产品功能是不恰当的,合理的做法是先把这个产品的所有问题域列清楚。


列出问题域

问题域,是指自己的产品能够解决的所有问题的空间集合。从核心需求出发,将所有当前需要解决、未来可能需要解决的问题放入产品框架的范围,能够帮助你的产品架构拥有更高的可拓展性,在后续具备迭代和优化空间。


这里以我做过的一个风控系统需求为例,问题域集合如下:



详细的操作步骤:


  1. 找到收到的需求中,跟产品形态、产品目标相关的语句,去列出“xx 的流程会是什么样”、“xx 该如何达成”之类的问题,直到如果这些问题解决,能够实现核心需求的方向和业务目标。

  2. 去逐次寻找这些问题需求被解决的过程中,是否有其他要先解决掉的问题、或者其他跟业务相关的问题能够被解决。

  3. 按照层级去罗列所有的问题,并附上自己的初步回答,从而形成一个初步的、自己的产品能够解决的“问题域”。

确定产品方向

在经过问题域的罗列后,能够得到一个模糊的产品方向和功能范围。问题域的环节非常发散,这一步需要回归基础,把模糊的需求补充、拓展和翻译成一个能够在商业模式和用户体验能够形成闭环的产品需求。


在确定产品方向这个环节的详细操作步骤:


  1. 产品用户:需要明确产品定位的用户,解决核心用户的核心需求。

  2. 核心目标:思考清楚自己产品的核心目标是什么。如果以一个 KPI 指标衡量产品的价值,那这个 KPI 应该是什么。

  3. 依赖系统:自己的系统需要与哪些外部系统存在交互和关联关系,我们的系统在这个大的生态下,是什么定位。


以风控系统需求为例,产品方向的描述如下:


绘制业务流程

业务流程是业务架构中比较常见的图,这一步需要根据产品需求和问题域,按照业务域的流程进行绘制。


业务功能矩阵

通过对业务流程进行分析,根据功能职责,进行垂直分解,识别出业务功能和业务服务,将他们归类到相应的流程节点中去。将业务流程和业务功能点组合成一张业务功能矩阵。这张矩阵图是业务架构中为后续的数据架构、产品架构、技术架构作为重要的输入。


功能架构分层

产品框架脱胎于业务流程,但相比业务流程,更加注重产品功能的枚举、功能模块之间的分界。以业务架构的业务功能矩阵图作为输入,将流程图转换成按节点进行分层,节点的功能点存放在同一层中。



在此基础上将明显是同一个产品范围、同一组产品功能的模块放在同一层级,得到一个基础的产品框架。


明确功能边界

一个具备前后台关系的产品架构图至少分三层:用户感知层(在何种场景下通过何种方式触达用户)、功能模块层(通过哪些功能模块实现产品的核心功能、和哪些外部平台功能有信息交互)、数据层(产品的数据从哪里来、产品的数据沉淀到哪里去)。


在上一步进行简单分层后,我们已经得到一个初步框架,但是难免会有分层不明确的问题。此时需要按照两种维度来处理架构图的层级:不同信息层级的边界、同一层级内模块和模块的边界。

处理不同信息层级的边界

架构图的层级表达其实是信息之间的流转关系,不同信息层级之间一定是有逻辑关系的。其中用户感知层和数据层通常化简为以(用户端的功能表达往往逻辑简单、数据来源问题则不是自己产品的核心功能),而功能模块则需要按照自己产品的逻辑去将功能模块层内的主要模块变成新的层级。


处理同一层级内子模块的边界

各层次之间虽有相关,但同一层次内的子模块之间一定是相互独立、界限分明的。将解决不同问题的功能拆分成两个子模块,做到一个问题只在同一层解决,避免牵一发而动全身的情况出现。


明确系统间边界

产品边界对于开发设计系统架构、业务间的合作模式都非常重要。在架构图中用不同颜色标识清楚,各个部分所属系统的边界。通常属于自己团队的部分用亮色标识。像外部系统,如数据层的用暗色标识。


加入信息流

产品架构图在表达产品的核心功能外,也应该体现信息流动的路径。当前层级数据的交互形成产品功能,产品功能又产生新的数据,从而推动下一层级的功能运转起来。


如果当前产品的主要使用角色只有一个,则只需要用箭头表明模块间信息流动的方式即可。如果当前产品涉及的角色比较多,则需要用不用颜色的线条将他们和各个模块之间的信息交互关系表示出来。



最终一种好的产品架构图,应该具备以下特点:


  • 清晰的模块功能边界

  • 功能经过抽象,做到标准化、互相独立

  • 上下游产品功能边界清晰,架构分层明确合理,具备迭代优化的能力

延展阅读

架构设计实践五部曲(一):架构与架构图

作者介绍

胡斌,菜鸟网络技术专家,目前负责菜鸟风控系统的建设。曾在淘宝技术部先后负责卖家平台、商家运营等领域。在大规模分布式应用、大数据、架构领域有多年的开发和管理经验。


2019-09-20 10:1327601

评论 11 条评论

发布
用户头像
值得收藏
2023-01-30 21:32 · 广东
回复
用户头像
感谢分享
2021-03-30 18:00
回复
用户头像
获益匪浅,感谢分享!
2020-12-01 23:27
回复
用户头像
TOGAF有完整的架构体系和方法论,业务架构、IT架构(应用架构、数据架构、技术架构)
2020-03-09 13:34
回复
你想表达什么意思?
2020-05-12 11:10
回复
说这么多倒是通俗的给大家讲讲你对TOGAF的理解与实践
2022-08-09 11:09 · 广东
回复
用户头像
非常受益,要是关于这部分的话题能有一个交流社群就更好了
2020-02-27 09:53
回复
用户头像
正好接到一个优化计费和出账的想用这个试一下,2010年的逻辑后面添填补补的,优化还不如重构,太难了 哈哈哈
2019-10-15 11:33
回复
用户头像
写的非常好!
2019-10-10 16:44
回复
用户头像
流程完成,层次分明,写的好
2019-09-29 10:45
回复
用户头像
产品架构图很清晰啊,如果配合详细的说明,要在什么地方体现呢?
2019-09-20 11:51
回复
没有更多了
发现更多内容

React的5种高级模式

夏天的味道123

React

React生命周期深度完全解读

夏天的味道123

React

技术分享 | TiUP工具 - TiDB集群滚动升级核心流程解析

TiDB 社区干货传送门

教你一招,安全的从 MySQL 切换到 TiDB

TiDB 社区干货传送门

迁移 实践案例

将业务从mysql迁移至TIDB,有哪些需要注意的?

TiDB 社区干货传送门

管理与运维 应用适配 大数据场景实践

安防厂商在企业数字化转型中的机遇和挑战

慕枫技术笔记

AIOT 11月月更

react源码中的fiber架构

flyzz177

React

技术分享 | 多测试环境的动态伸缩实践

LigaAI

云原生 自动化测试框架 测试环境 测试自动化 kubenetes

10年码农生涯经验总结,聊聊工作中18种接口优化方案!

Java全栈架构师

Java 数据库 程序员 程序人生 性能优化

TiFlash 源码阅读(八)TiFlash 表达式的实现与设计

TiDB 社区干货传送门

React源码中的dom-diff

夏天的味道123

React

诚迈科技深耕汽车操作系统领域,获评优质供应商

科技热闻

TiFlash 源码阅读(六) DeltaTree Index 的设计和实现分析

TiDB 社区干货传送门

React中常见的TypeScript定义实战

xiaofeng

React

使用Docker踩坑,排查完问题之后,又涨知识了

程序员小毕

Java Docker 程序员 程序人生 后端

低代码实现探索(五十三)后台逻辑的控制

零道云-混合式低代码平台

TiFlash 源码阅读(七)TiFlash Proxy 模块

TiDB 社区干货传送门

《关键信息基础设施安全保护要求》于明年五月正式实施

行云管家

网络安全

Vue.nextTick核心原理

yyds2026

Vue

老板拍脑袋决策,团队群魔乱舞

填空时光

决策 团队内耗 企业敏捷

react源码中的hooks

flyzz177

React

Go类型转换和类型断言可别搞混了

王中阳Go

golang 高效工作 学习方法 面试题 11月月更

AntDB入选《2022爱分析·信创厂商全景报告》

亚信AntDB数据库

AntDB 信创 国产数据库 aisware antdb AntDB数据库

# 分布式数据库新秀TIDB初探

TiDB 社区干货传送门

TiDB 底层架构 TiDB 源码解读

TiDB常用SQL

TiDB 社区干货传送门

性能调优 集群管理

React-hooks+TypeScript最佳实战

xiaofeng

React

详解Native Memory Tracking之追踪区域分析

华为云开发者联盟

开发 内存 华为云

CQRS与Event Sourcing

胖子笑西风

架构 DDD CQRS Event Sourcing #java

GaussDB CN服务异常实例分析

华为云开发者联盟

数据库 华为云 GaussDB

React性能优化的8种方式

xiaofeng

React

Vue3, setup语法糖、Composition API全方位解读

yyds2026

Vue

架构设计实践五部曲(二):业务架构与产品架构设计实践_架构_胡斌_InfoQ精选文章