写点什么

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

2019 年 9 月 20 日

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

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


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



列出问题域

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


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



详细的操作步骤:


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

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

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


确定产品方向

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


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


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

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

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


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



绘制业务流程

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



业务功能矩阵

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



功能架构分层

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



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



明确功能边界

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


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


处理不同信息层级的边界

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



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

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



明确系统间边界

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



加入信息流

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


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



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


  • 清晰的模块功能边界

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

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


延展阅读

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


作者介绍

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


2019 年 9 月 20 日 10:1313972

评论 9 条评论

发布
用户头像
感谢分享
2021 年 03 月 30 日 18:00
回复
用户头像
获益匪浅,感谢分享!
2020 年 12 月 01 日 23:27
回复
用户头像
TOGAF有完整的架构体系和方法论,业务架构、IT架构(应用架构、数据架构、技术架构)
2020 年 03 月 09 日 13:34
回复
你想表达什么意思?
2020 年 05 月 12 日 11:10
回复
用户头像
非常受益,要是关于这部分的话题能有一个交流社群就更好了
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
回复
没有更多了
发现更多内容

MySQL容器化详细教程

Simon

MySQL Docker 容器化

ARTS打卡第一周(200511-200517)

老胡爱分享

ARTS 打卡计划 ARTS活动

云上攻击太多怎么办?不妨试试这些工具

华为云开发者社区

黑客 云服务 数据安全 华为云 企业上云

CDN百科11 | 担心纸质病例被洪水淹没?ECS+CDN+OSS如何助力医疗上云

阿里云Edge Plus

CDN 存储 云服务器

200 行代码就能骗人的首个聊天机器人

程序员生活志

编程 机器人

LeetCode152-乘积最大子数组-medium

书旅

LeetCode 动态规划

Flink任务执行-3

小知识点

大数据 flink

带着面试题学习红黑树操作原理,解析什么时候染色、怎么进行旋转、与2-3树有什么关联

小傅哥

Java 数据结构 小傅哥 红黑树 2-3树

SecureBoost算法

soolaugust

学习 同态加密 secureboost

Docker入门与简单使用

Simon

Docker Linux

高效程序员的45个习惯:敏捷开发修炼之道(4)

石云升

读书笔记 敏捷开发

互联网公司建网站时最应该注意什么?

姜奋斗

互联网 网络安全 网站 网站搭建 互联网公司

三分钟看懂Python和Java的区别

程序员生活志

Java Python

MySQL常用函数介绍

Simon

MySQL mysql常用函数

带你认识MySQL sys schema

Simon

MySQL

学习源码的第八个月,我成了Spring的开源贡献者

程序员DMZ

spring 开源

Docker从入门到放弃---基础篇

书旅

Docker 容器 容器化

MySQL中几种常见的日志

Simon

MySQL 日志

大数据平台架构设计探究

vivo互联网技术

大数据 架构设计 数据平台

拼多多员工小便池拉屎,网易智能马桶屏蔽信号,360、搜狐厕所被监控,互联网公司厕所那些事!

程序员生活志

互联网 职场

GrowingIO 数据采集 iOS SDK 测试实践

GrowingIO技术专栏

ios 数据采集 sdk

常用SQL语句分享

Simon

MySQL sql

一个域名值百万, 现在不注册,未来价更高

华为云开发者社区

备案 商标 DNS 域名配置 SSL证书

天地玄黄,宇宙洪荒

zhoo299

随笔杂谈

时间戳,这样用就对了

Simon

MySQL timestamp

LeetCode题解:11. 盛最多水的容器,while循环双指针,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

Docker 架构及工作原理

哈喽沃德先生

Docker 容器 微服务 容器技术 容器化

疫情按下快进键,电商抢占市场红利需可靠的助力

华为云开发者社区

高并发 电商 华为云 流量 云服务器

MySQL下的DB Link

Simon

MySQL

不说再见

太以

疫情 毕业季 遗憾 大学

vivo web service:亿万级规模web服务引擎架构

vivo互联网技术

架构 Web 浏览器

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